Holden MyLink and the cover art conundrum

My Holden car has a MyLink music system with a colour display in the console. One of the things it does is show the cover art of MP3 tracks as it plays them from an attached device. It seems that it gets the cover art from an embedded database of coverart (sourced from GraceNote) or from the MP3 file itself.

I put together a USB drive with my favourite MP3 tracks, but the conundrum was that for some tracks, the cover art would display correctly, and for other tracks, a generic image (based on the track’s genre) would display. There seemed to be no rhyme or reason why some would work and others not work, as most of the tracks had cover art embedded  in the file.

This weekend curiosity got the better of me. Using the TagInspector ID3 editing program I observed the pattern that tracks where the cover art image DID display, had the text encoding of the APIC frame set to ISO8859_1 …

ID3ISO… whereas all the tracks that DIDN’T display the cover art had the text encoding of the APIC frame set to UTF_16_BOM (Unicode) …

ID3UTFUsing the UltraID3Lib library I did a test by changing the text encoding of a track with UTF_16_BOM over to the ISO8859_1 encoding. After doing this, the cover art displayed correctly on the MyLink system. What’s curious about this is the encoding value is the text encoding of the Description field of the image (not the encoding of the image). The text description of the image isn’t displayed at all by the MyLink system, so it’s kind of odd that the encoding type of the text field would prevent the display of the image.

A short bit of coding later and I had a utility that changed the text encoding on the APIC frame of all my MP3’s that I play in the car, and the cover art conundrum is closed.


Migrating WordPress

More for my own benefit than for anyone else, in case I need to do it again, these are the steps I used in migrating my web site from one hosting provider to another, keeping the same domain name. In practice it was a bit more bothersome than what’s described below, as I took a few wrong paths and had to backtrack. The two pages that I found useful in doing the migration were …

In summary, the steps I took were …

  1. Sign up with a new hosting provider, choosing the option to use an existing domain and configure DNS to point to the new site when ready.
  2. On the old site/host:
    1. Get a backup of the WordPress database on the old host, using the host control panel.
    2. Get a backup of the files on the old host by using FTP.
  3. I added temporary entries to my \windows\system32\etc\drivers\hosts file to point my domain name to the new host.
  4. On the new site/host.
    1. Create a new MySQL database, with the same name, user, password as on the old site. All the details I needed were in the “wp-config.php” file in the root directory.
    2. Use FTP to upload the files to the new site.
    3. Use phpMyAdmin to import content from the old database into the new database.
    4. Test that everything is working OK on the new host.
    5. Add a new blog post
  5. Remove (or comment out) the temporary host entries in my \windows\system32\etc\drivers\hosts file.
  6. With my domain name registrar, change the DNS settings to point to the new hosting provider’s name servers.
  7. Wait for the new site (with its new blog post) to appear when the DNS change has propagated. (The domain registrar page suggested that this can take up to 48 hours, in my case I made the change about 8pm one night, and it had propagated by the time I got up the next morning.)

One minor obstacle I had in attempting this migration was that after uploading the content to the new server in step 4 above, the front page of the site was working OK, but clicking on any links to content elsewhere resulted in a “404 not found” error.

It turned out that in step 4.B above, when I was uploading the website files, I didn’t upload all the files in the root directory, as I knew that some of them were specific to the old server not the new server. e.g. files like the error log, or config files for the fantastico installer. I got this mostly right but unfortunately one of the files that I thought I didn’t need to upload was “.htaccess” – but as this forum article steered me straight – it is needed. After uploading the “.htaccess” file, the site sprang to life as it should have.

UPDATE 06-Jun-2014

For another WordPress site where I wanted to create a copy of the site for dev/test purposes I used the Duplicator plugin, which was pretty straightforward.

Goodbye Windows XP

WindowsXPWallpaperToday, 8th April 2014, Microsoft stops support for Windows XP, which is a bit sad. I always had a fondness for Windows XP, being the first decent, stable, consumer operating system from Microsoft. Over time I even got used to the Teletubby themed default wallpaper. I still have 2 PC’s at home running Windows XP and for what they do (basic web browsing, looking at photo’s, watching TV) the OS performs as well now as it did when it was released.

I really don’t want to upgrade to Windows 8, and the hardware on those PC’s would struggle with Windows 8 anyway, so I’m still undecided whether to retire them, replace them, or upgrade them.

WordPress wp-events plugin breaking the dashboard

I run a WordPress based website that uses the wp-events plugin to manage a calendar of events. It’s been mostly working well, but recently after some update of WordPress, and I’m not sure which one, I found that on the Dashboard page of my WordPress site that I wasn’t able to toggle the various modules to expand or collapse them.  By a process of trial and error and comparing a few different WordPress sites that I have access to I found that the problem was the wp-events plugin – if I deactivated the plugin my problem on the dashboard page went away.

Unfortunately the wp-events plugin is no longer actively maintained, the author having moved on to other things, so I decided to see if I could locate/fix the problem.

Be warned – although I am an experienced programmer, I am a complete newbie in the world of WordPress plugin development, so there’s no guarantee that my ‘fix’ below won’t do really bad things.

Anyway, again by a process of trial and error, commenting out various bits of the plugin code I found that commenting out a single line of code in the wp-events-functions.php file fixed the problem …

function events_editor_admin_init() {
#  wp_enqueue_script('post');

After making this change, deactivating and reactivating the plugin, my dashboard was working again, and the events plugin appears to be working the same as before.

Conjecture mode ON

As far as I can tell this function is including a link to a script file in the page for the purpose of enabling rich text functionality in the event editor form, but I suspect that some update to WordPress made linking to this script redundant, and worse made it break stuff because different scripts were being loaded in the wrong order

Conjecture mode OFF

SharePoint 2010 Storage Metric Borogoves

StorageMetricsIn SharePoint 2010 site settings there is an option “Storage Metrics” that purports to give you useful information about the size of sites and folders in SharePoint.



Cool. But, when you click on it you get a screen which says …

“Data shown on this page may not be up-to-date. Future visits to this page may contain more accurate results.”


So what it’s saying is that its showing a bunch of numbers which may or may not be correct now, and may or may not be correct in the future, and good luck deciding if the numbers are or aren’t correct, now or in the future. (For the record – the numbers in the screenshot above are woefully incorrect.)

Why don’t they just show the text of “Jabberwocky” instead? It would be more meaningful and less infuriating.

Logitech SetPoint and Microsoft SharePoint

I just solved a tricky SharePoint 2010 problem at work for a particular user who, whenever they clicked on a Microsoft Office document to open it, Internet Explorer would hang. Other documents such as PDF’s would open OK.

In the end I found that the problem was caused somehow by the Logitech SetPoint software that had been installed relating to the Logitech mouse that the user had. Uninstalling the SetPoint software made the problem go away.

When conceptual modelling goes bad

A good sign that conceptual modelling and terminology has gone astray is when you get to a contradictory definitional statement like this in the documentation:

“A flag indicating that the contact is busy and inactive.”

Yes, I’m looking at you Microsoft Lync 2010 SDK. I think I need to lie down now.

[This content was originally posted to Google+]