Wednesday, 30 December 2009

Removing dead tracks from iTunes

On occasion, for one reason or another, iTunes seems to have a link to a file that no longer exists. Your options are then to either hunt for the file manually, one by one, or manually hunt and delete all the dead ones. There is a handy exclamation point icon that will tell you which are broken, but there is no way to filter for these.

Fortunately, thanks to a bit of logical jiggery pokery, you can use Smart Playlists and a cunning quirk of iTunes to do it for you. Herein lies a step-by-step guide to finding all those annoying broken links.

Step 1 Create a new Smart Playlist with a single Artist Does Not Contains rule. Put some garbage into the search field so it will return every artist. Call this playlist "All Music".

Step 2 Create a normal playlist called "Working Music".

Step 3 Create a Smart Playlist with 2 rules. These are:

  • Playlist - is - All Music
  • Playlist - is not - Working Music

Step 4 In the All Music playlist, select all and drag it into the Working Music playlist. This is the cunning trick - only music that is not marked with an exclamation icon will be put in the playlist. Broken music will simply not be added.

Step 5 Look in the Broken Music playlist. You should be greeted by a list of all the broken tracks, and none of the good ones. If you keep these Smart Playlists around and just clear out and re-add to the Working Music playlist on occasion, you will be able to remove dead tracks easily.

Monday, 28 December 2009

iTunes Dupe Wrangling

Using a music management program like iTunes can be very useful when keeping a large collection in order. It can rename files, keep them organised in a decent directory structure and let you browse and edit the tags with ease. Perfect, as long as the songs you import are all properly tagged and have no duplicates. If anything is wrong, though, it can be a royal pain in the posterior.

When creating an iTunes library out of an existing music collection, it is often the case that an existing set of MP3s has to be imported into an existing iTunes library. In this case, many terrible things can happen, including duplicates and MP3s with subtly different (and sometimes incorrect) tags.

Enter Dupin, from Doug's AppleScripts. Dupin is a handy iTunes duplicate finder and remover. This is not a free tool, but if you're dealing with several thousand MP3s and don't fancy the agony of the iTunes dedupe tool, it's well worth a tenner.

The key to effectively and quickly importing an old library into a newer iTunes library is to turn off the "Copy files to iTunes Media folder when adding to library" option in the iTunes advanced settings. This will leave your MP3s where they are, but add them into the iTunes interface. Don't worry, though, if you prefer them all together. We'll get to that.

Once that option is disabled, drag the folder containing all the old MP3s into the iTunes window. Leave it for a bit, and before you know it, all the MP3s will show up. Some might be duplicates, some might just have crap for tags, but they will be there. Have a quick look through to see if there are any glaring errors in the import, and fire up Dupin.

You can match several different tags to consider files as duplicate. If you're lucky and have properly tagged all the old files, checking the Title, Album, Artist and Track Number fields should give you a nice list of tracks with their duplicates. Click the Filter button to get the list of ways to filter out the duplicates.

This is where disabling the copy option comes in. Simply select the Folder Location radio button, and leave the folder as your current library location. Click the Filter button and all the duplicates that are not already in your library will be marked for removal. This means that there is less to copy in when you consolidate your library later; only files you genuinely did not have will be copied.

To actually remove the files, select the Purge option from the Tools menu. Thanks to the MP3s still being in their original folder, you can opt to not send the files to the Trash without fear of cluttering your iTunes library folder with unused rubbish. After a little while, all the dupes will be removed from iTunes and all should be well.

You might want to run Dupin again, this time without the Track Number match. I have found that many old MP3s do not have a valid Track Number ID3 tag, and so show up without one in iTunes. This causes the Track Number match option to ignore them as dupes. Again, using the Folder Location filter should work the magic.

Now that's done, click File -> Library -> Organize Library. Opt to Consolidate your library and click OK. All the new files will then be copied and properly named in your iTunes library folder. Once that's done, you can be cavalier and delete the old MP3 folder, or you can give it a once over just to be sure it's all there. Either way, your libraries are merged and the duplicates are removed. Anything left is up to you to sort out!

Saturday, 5 December 2009

Pallas at the Monty Hall

Last night I went to see a classic prog rock band at my local Classic Rock Society venue, the Montgomery Hall in Wath-on-Dearne. I went to see Pallas there a couple of years ago, and they put on an amazing live show. They might not have the lightshow, the arena-sized crowds or the support of big labels, but they have what matters; enthusiasm, talent and showmanship.

Looking around the room and seeing maybe 110 people, averaging about 45 years old, it struck me that it is a good job the CRS exists. Somebody needs to be promoting gigs for great bands like Pallas, Magenta and Threshold, even if only to a handful of faithful followers in Wath. Old rockers never die, and new rockers are coming along all the time. Cheers, CRS, for letting us see them!

Wednesday, 2 December 2009

Bad code is good?

I has been recently pointed out to me, after a rant on the state of a particular codebase, that I actually love terrible code. The only time I sound truly enthusiastic about my job is when describing just how badly factored, bug-ridden and generally god-awful a piece of code is, and just what I'm going to do about it. The only time I sound happy with my job is just after refactoring, reworking, rewriting and thoroughly debugging said code, and I have an air of triumph about me.

So, is bad code, in fact, the only thing that makes my job even remotely bearable? Discuss.

Monday, 30 November 2009

Backup the Apples and Pears

It's often said that a backup strategy is only as good as the corresponding recovery strategy. Your backup is useless, after all, if you can't restore from it. Unfortunately I have recently had to test the backup strategies I have been using for my two most frequently used computing devices; my iPhone and my Macbook.

The sad demise, and subsequent revival, of my iPhone has already been documented in a previous post. Thanks to the joy that is iTunes, my phone was automatically backed up the day before the incident, minimising the amount of lost data. The worst thing I lost was my Rally Master 3D save-game, so no big deal.

I have used several mobile phone sync/backup tools before, and suffice it to say that they suck. Often flaky or having badly integrated 3rd party components, I have yet to find one that really syncs properly. Even the venerable Palm handhelds (yes, I know they're not phones, or at least, didn't used to be) became a nightmare to sync once they started doing more than the old Pilot 1000 could manage. Compared to such irritating clunkiness, iTunes is a breath of fresh air.

After blatting my iPhone and ending up with a very dull, boring base install, I simply plugged it in. iTunes asked if I wanted to start afresh or restore a backup. 10 minutes later, backup restored, iPhone was as good as new. Better in fact, seeing as it had all my data back on it! So, a win for iTunes and iPhone backup for easy recovery from disaster.

Less than two weeks later, my Macbook underwent a very strange little glitch and the hard drive just ... stopped. One second it was working, the next, halfway through loading a page in Firefox, it just stopped. It make a feeble little groan and a squeak, and it was gone. It was three and a half years old, so I can't really complain at lifespan, especially after the way I've treated it at times. But there I was, hard-drive-less, and so laptop-less to boot.

Out of morbid curiosity, I check the Maplin website for offers on 2.5" SATA drives. It's very handy living 5 minutes' walk from the town centre! What a surprise I did discover. A 320GB, 5400RPM, 2.5" SATA hard drive for the measly sum of £49.99. Cheap as chips, and twice as convenient.

After acquiring a nice set of precision screwdrivers, since I've lost mine, I replaced the drive with the shiny new one and popped the Snow Leopard disk in. After 4 minutes (official installer time), or 75 minutes (real time) the installation was done and it rebooted. At this point, I had an external drive with an up-to-date Time Machine backup on it. I expected to have to perform some sort of voodoo to get the info off the drive without having to use the awful Time Machine UI. Thankfully, that was not to be.

As part of the first startup, it asked if I wanted to restore from a Time Machine backup. I clicked "yes" and plugged in the drive. Up it fired, and my lovely data went streaming over on the the shiny new hard drive. About thirty minutes later, the machine rebooted and I was presented with my own login screen. I entered my password, and was greeted with my own desktop. No messing, no manual steps beside plugging in the drive, and no lost data.

So I'm not sure the state of simple local backups in the rest of the world. It's always been something of a chore to remember to make backups, but Time Machine and iTunes make backing up your Apple products so simple you literally have to do nothing. And when disaster strikes (and it will) it's only a matter of moments before your data is safely back where it belongs and you can carry on like nothing happened.

Unless you've had a 60GB to 320GB upgrade, that is, and decide to spend the rest of the day filling it!

Sunday, 22 November 2009

Apples and Oranges

So good news, everybody! Apple's lovely, lovely iPhone is available on Orange now. My carrier is officially supported! I shall be upgrading to a shiny new 3GS in about 4 weeks, which is the earliest my contract allows.

In the meantime, I'm still using the iPhone 2G, suitably unlocked to accept my Orange SIM. Unfortunately, it all nearly went terribly wrong. I did a routine reboot yesterday and when it came back on, it was deactivated. This means that it was prompting me to plug it into iTunes to allow Apple to reactivate. Bugger.

So, what the hell, I tried it. Sure enough "Your SIM is not supported." Arse. It's been working fine for 6 months on official firmware, but no longer it seems. As soon as I put an official Apple firmware on there, it immediately locks me out. Fortunately I am in the habit of backing up regularly so all (well, most) of my data is safe. I just need a way to activate the thing.

A quick Google indicates that redsn0w is the way to go. Sure enough, I found instructions on jailbreaking iPhone OS 3.1.2. Marvellous. Oh, no, not marvellous. It basically says "here is how to do it with 3.0. It might work with 3.1.2. Best of luck!"

So after jailbreaking with 3.0 and upgrading to 3.1.2 with iTunes, I was less than impressed. As soon as I did the upgrade, I was locked out again. Worse,  I couldn't just stick with 3.0 because my backups require 3.1.2.

So back to tried and tested methods. I got PwnageTool 3.1.4 which reportedly activates 3.1.2. It worked like a charm. Took a little while to generate the firmware, but now I have it I can install it as required. The backups all restore perfectly,  and I am a happy chappy.

Still, can't wait to not have to do this any more ...

Wednesday, 11 November 2009

Updating the iPhone APN

I just got a new little update for my iPhone. Yay, thinks I, and so it is installed. What does it do? It bloody well hides my APN settings and sets them to O2. My iPhone is on Orange. Now my data doesn't work unless I use Data Roaming.

After digging around for a few moments, it became abundantly clear that the settings page for APN has completely disappeared. I can't actually change the settings on the device itself. This is a pain. Enter, a very handy little website for doing exactly what I need.

So use it, go to from Safari on your iPhone. Follow the on-screen prompts, enter the proper APN data, and voila, a little settings bundle appears. Install it, and you're good to go. It took just a few seconds to change it on mine, and after disabling Data Roaming, I still get access to the web. Marvellous.

Edit: It does do something else ... now the text that says Orange in the corner is slightly larger and a bit fuzzier. Well worth the hassle, eh?

Wednesday, 14 October 2009

Software as an Enabler

Over my long, somewhat protracted software development career, I have come across many situations of what I like to call "software as a disabler". Situations in which the software seems to work against the end user using arbitrary constraints or limitations that, to the developer, make perfect technical sense. This phenomenon is perfectly summerised by Little Britain's famous catchphrase "Computer says no".

How many times have you used software that just wouldn't quite let you do what you want to do? A lot, I would wager. Problems such as these often occur due to over-ambitious implementation of requirements, usually at a very technical level. Consider a simple calendar application for scheduling meetings. It makes logical sense that users would not want to be double booked, so a naive developer may put in a constraint that prevents such a situation from occurring.

The hapless end user comes to the software. They have a meeting scheduled with a client on Thursday between 2pm and 3pm. Another meeting opportunity then comes up with another client that can only be between 2:30pm and 3:30pm on the same Thursday. Clearly there is an overlap, and the user would be double booked during that time. The user attempts to enter that meeting, and the system refuses. No matter what the user does, they cannot enter two meetings that have conflicting time slots. The developer has "helped" the user by preventing the situation from occurring.

The end user now has a problem. He knows three facts:
  • He has a meeting between 2pm and 3pm that he cannot reschedule right now
  • He has a meeting between 2:30pm and 3:30pm that he cannot reschedule right now
  • The system won't let him do this, even though he is capable of fixing the problem if he were just allowed to
What often happens in situations like this is that the end user is forced to work around the software. Maybe he sets the meeting to run from 3pm to 3:30pm, and makes a note that it should really be 2:30pm. Maybe he arbitrarily deletes the old meeting and has to make a note elsewhere to contact the first client. Anything he does at this point would be purely for the sake of the system, and not help his real situation in any way. He cannot cancel either one of them at the time because it requires speaking to each of the clients, so he just wants to get the info there and have the time conflict visible. He just wants to put his data into the system the way he wants to. But the computer says no.

The right way for the developer to handle this would be to simply allow it, and have the user interface reflect the double booking. Maybe it would just show a message before adding the data. Maybe it could show the two events occurring side by side (Outlook does this), or it might show the overlap period in a highlighted colour to indicate that a conflict occurs. Anything, in fact, that lets the end user input the data he wants to and see it again later.

This is software as a disabler. Software that projects the developer's assumptions about the "right" way to use the software and forces the end user to conform. Sometimes this is necessary. For example, highly sensitive banking systems or insurance systems might need to put a stop to invalid situations before they occur. Even then there needs to be a system to handle the possibility that the real world might not represent the ideal held inside the computer. This is what software as an enabler is all about. Enabling the user to reconcile reality with what's stored inside the system.

So next time you're building an interface to a system, and you come across a constraint that you think would make sense to protect the end user from themselves, stop and think. Would your change actually provide any solid benefit, or would it just be there to make your life easier by ignoring the possibility that reality is not as perfect as your system requires?

It is a lot more work to allow invalid data to be entered and reconciled, but in the end, that's what the system is for. If the user has to perform all reconciliation work before entering the data in the first place, then your system will be viewed by your users as a waste of time. It would just be an extra step of manual labour to get the data into storage, with no added benefit. It has failed to provide the user with an efficient, possibly automated way to achieve a goal. And if your software is preventing users achieving their goals, it will be consigned to the Recycle Bin.

Monday, 12 October 2009

Hints for X11 on Mac OS X

One of the lovely features of Mac OS X, being based on Unix technology, is that it's possible to run X11 based applications with an almost native look and feel. Unfortunately this doesn't translate completely due to the way the X11 server is implemented. It is a single app, and all X11 windows are considered children of it, so the OS X window manager treats all X11 windows as a large group. This does mean, however, that those of us used to working with X11 apps in a different way to OS X native apps can do so, as long as you don't mind the slight mismatch of behaviour.

One of the first things folk notice about the OS X window manager for X11, quartzwm, is that the mouse focus model is completely unintuitive. Focussing a window requires clicking within it, but then activating controls requires another click. You can't just move the mouse over to a window and click, and expect anything to happen. This is usually resolved in one of two ways; turning on "focus follows mouse", or enabling "click through" to allow the window to respond to the focussing click as if it were already focussed.

When I'm using a linux window manager, I am happy working in either of these modes. For Gnome, I like to have click-to-focus, and for more lightweight WMs like Fluxbox, I prefer focus-follows-mouse. Fortunately, enabling either of these options for quartzwm (for Snow Leopard, anyway) is as simple as opening the preferences pane and clicking a checkbox. For OS X, I find that click-to-focus matches the rest of the OS best, so I enable click-throughs.

When using X11 on OS X, it is usually to use the Gimp. This is bundled as a self-contained application, and will launch the X11 server on demand. Of course, all the Gimp's windows are still considered a part of the X11 app, but the Gimp dock icon responds to drag-and-drop and other OS X features. It's a bit weird, but easy to get used to.

Enabling click-through makes working with the Gimp a lot more fluid. The multi-window interface is a pain to work with otherwise, because even something as simple as changing which tool you're using requires clicking the toolbox window, then clicking again to select the tool. It is very frustrating to click a tool and then try to use it, only to realise that a) the tool never got selected, because the WM swallowed the click before the Gimp could respond, and b) the tool window is now focussed, so trying to use the tool on the image will not work until you refocus it with yet another click.

For those of you who don't like using nasty, icky GUIs for something like changing WM preferences (why are you using OS X again?) there is a command line way to do it. In a terminal (or Xterm if you're so inclined), type one of the following to enable focus-follows-mouse (ffm) or click-throughs:
defaults write org.x.X11 wm_ffm -bool true
defaults write org.x.X11 wm_click_through -bool true
Another useful feature built into quartzwm is the ability to shut down the X server automatically when no windows are left. For those of use who only use the occassional X11 program, and are somewhat obsessive about not leaving programs running in the Dock that aren't actually in use, this is very useful indeed. To enable it, enter the following command into a terminal:
defaults write org.x.X11 wm_auto_quit -bool true
A secondary option allows you to specify a short timeout, in which the WM will wait for a few seconds to see if you start any more windows. If you do, quartzwm doesn't shut down and continues until all windows really have gone. It is very important to use this option if you use the Gimp. With a 0 second timeout, the X11 server will close as soon as the Gimp splash screen disappears, because it takes a moment for the main image window to appear. This fraction of a second delay is enough to make the X11 server disappear and take the Gimp with it, making it impossible to start up. I would recommend a 5 second timeout to make sure that all windows really are closed, and more importantly, no more are on the way before shutting down the X11 server.

To enable this feature, enter this command in the terminal:
defaults write org.x.X11 wm_auto_quit_timeout -int 5

Note that all this options are available in earlier versions of Mac OS X than Snow Leopard. For Leopard users, they are identical. For Tiger users, replace all references to org.x.x11 with This is because versions of OS X prior to Leopard used the now mostly defunct XFree86, while Leopard and Snow Leopard have moved to the much sexier

Wednesday, 7 October 2009

NAS Replacement Tat

I have purchased a couple of bits to replace the now defunct Iomega NAS that once graced the shelf next to my battered Compaq laptop and somewhat eccentric router. This should hopefully allow me to rescue and reuse the 500GB SATA drive, while I cheerfully throw the NAS enclosure out of the nearest sixth floor window.

This is the caddy:

This is the interface card:

Hot from Hong Kong, don't you know. They should arrive sometime within the next 5 to 28 days. About right for Parcel Force. I've had my fill of £100+ drive enclosures. This little lot set me back a grand total of 16 quid, including international postage.

Of ActiveX, and service packs, and firewalls, and things ...

I have recently had cause to reinstall a Windows XP Pro machine after a serious virus infection. Not a big job, really. I'm sure I could go on about how installing $linux_distribution only takes 20 minutes, but all in I reckon a full XP Pro install, including drivers, should only take about an hour.

Or so I thought. What actually happened was a comedy of errors lasting almost 20 hours filled with grief, annoyance, frustration and a large amount of tea. The basic installation worked fine, the drivers all went on perfectly, and even the PCI wireless card was no problem. All was looking well, until I tried to update to the latest service pack.

Upon launching the Windows Update site, I was presented with the usual "checking version" message that precedes every scan for updates. So far so good, but a couple of minutes later it all went badly wrong. Rather than the nice list of service packs and hotfixes I was expecting, all I got was an error message: 0x8DDD0004. Nice and cryptic.

A quick google for this error indicates that there are quite a few KB articles about it. The problems that cause it range from a wrongly installed service to bad registry entries, missing ActiveX controls to invalid root CA certificates. I tried them all. Twice. I reinstalled the entire machine. Twice. I manually upgraded to the next service pack through wails and gnashing of teeth, and I even got hold of a streamlined install CD with SP3 already on it to see if it made an ounce of difference.

Nothing. Still the same error, 0x8DDD0004.

So I start digging on my own. Clearly the knowledge base articles cover a great many causes for this problem, but not the one I am seeing. During this digging, I discovered a nasty little problem that had been plaguing me. One of the DIMMs was bad, so half the memory didn't work. Removing that actually sped up the machine and made the rather irritating lock-ups go away. Having sorted that, looking at the Windows Update log gave me a different error code, related to it failing to download a file named Another avenue of investigation!

Once again deep in the Microsoft knowledge base, I found another five articles explaining the new error code. Some of the fixes were the same as previous ones I'd found, and some were new. Again, I tried them all to no avail. At this point, I was fed up, and it occurred to me to check that the Windows Update service was working at all. I couldn't find any service affecting issues listed on the MS KnowledgeBase, but I did have a second Windows XP virtual machine that had previous installed updates without a hitch. I gave it at try.

Aha! Exactly the same error. So the problem, it turns out, wasn't with the other machine. Well, apart from the bad memory module and the multitude of viruses. Still, the problem was reproducible. An excellent start in any debugging exercise. I also now had the full URL of the file that was failing to download, so out of interest I tried downloading it directly from my browser on a variety of other machines. They all failed, Windows, Linux and Mac OS alike, in exactly the same way. Headers received, timeout waiting for content.

It then occurred to me to check if the URL was the problem, or if there were other network conditions causing the problem to manifest only for me. I had a poke around, got on another machine not connected to my home internet connection, and tried to access the URL. It worked. A good thing, I suppose, because it means that once I figure the problem, the service is up. A bad thing because it means that the problem is still mine to fix.

Armed with the knowledge that the service was at least responding, I figured the problem had to be somewhere between my router and Microsoft's server. Not the greatest leap of intuition, admittedly, but I was very tired by this point and not firing on all, if any, cylinders. I checked the router log.
CP Packet - Source:1xx.1xx.1xx.2xx,60349 Destination:2xx.4xx.1xx.9xx,80 - [Firewall Log-Filter ActiveX]
I looked at it, then looked at it again.
CP Packet - Source:1xx.1xx.1xx.2xx,60349 Destination:2xx.4xx.1xx.9xx,80 - [Firewall Log-Filter ActiveX]

How and why was my router filtering ActiveX? I checked the firewall settings, and sure enough, there it was. Filter ActiveX, ticked and dropping packets like nobody's business. I unchecked it, saved the configuration, and tried the URL again. It worked like a charm. I sank back in my seat, closed my eyes and muttered a number of exotic curses under my breath.

So the root of this entire issue was that my router was dropping any and all packets deemed to have a payload of an ActiveX control. I don't remember ever turning that on. Why would I? I very rarely use Windows machines on my network, and when I do I'm likely to just be installing them for someone else. Having working ActiveX would be something of a necessity. In fact, my Windows VM ran successful updates only a couple of months ago.

The only thing I can think is that either:
  1. I was reconfiguring my firewall while drunk, or
  2. Something had happened to the router to make it turn that option on
A couple of weeks ago, the router did get overheated after being put in close proximity to an Iomega NAS (which you may remember from previous rantings, and is thankfully now deceased). After that, I had to fiddle with some settings to get my ADSL and WiFi connections working again. I can only assume that, either by accident or design, this fritzing of the router caused the firewall settings to be modified. As far as I know the ActiveX blocker isn't on by default, so it must have been switched on post-install.

So if you're having problems with Windows Update, and nobody else can help, and if you can find it, maybe you will find that the fault has nothing to do with Windows after all. Granted, it usually does, but on this one rare occassion, it was something else entirely.

Of course, if Microsoft didn't use ActiveX to push updates at all, this problem wouldn't have existed. ActiveX is a known security risk. So well known that router manufacturers put special firewall rules into their consumer products specifically to block it. In the end, this whole fisaco essentially boiled down to an overzealous firewall and a lot of wasted time.

Where does the blame lie? Nowhere really. Microsoft's update service was working properly the whole time, and the router (after being subject to some hardware abuse) was just doing what it thought I had told it to do. And I, having never specifically configured content filtering in the firewall, went through all this to find that toggling a single checkbox fixed the whole issue.

Computers, eh? Can't work with 'em, can't work without 'em.

Monday, 5 October 2009

Sheffield CAMRA 35th Steel City Beer Festival!

The first weekend of October has rolled around, so once again it is time for the Sheffield CAMRA Steel City Beer Festival. Now in its 35th year, the festival has seen a lot of change in the recent past. After the terrifying ordeal that was the Darnall Liberal Club, standing out in a field with beer seems like a much nicer proposition. Unfortunately, reviews of the 34th festival were tainted with dissatisfaction, both with the venue and the organisation as a whole.

I didn't attend last year, but I attended this year with some trepidation. Thankfully, the whole event was better run than I had been led to believe, but not without its fair share of hiccups. Two marquees provided more indoor space, the place didn't smell like a donkey sanctuary, and the beer tasted great. There were around a hundred beers to try, and thirty ciders, so even more than some previous years.

After a couple of false starts, our little troop of merry drinkers (myself, Emma and Chris) finally arrived at the gates of the festival around 8pm. A very strange 15 minute wait in a queue of 10 people then followed. It seems that the people handing out glasses and tokens weren't coping well, which was odd since actually getting aforementioned items took seconds once we finally were allowed into the marquee. Annoyingly, my CAMRA membership only went as far as a single extra token, so, almost half a pint. Disappointing.

First impressions were of puzzlement and a little of dismay. After being wowed by the Oakwood festival earlier in the year, the presentation of the Sheffield festival left something to be desired. The glasses were actually plastic, although still stamped with the festival logo, and the programme didn't actually include any beer; just cider. The beer was on a little printed slip of paper inserted into the programme, and had little or no room for ticking.

Just to add confusion into the mix, gone was the usual token system, where you pay for beers with "token + extra", whether that extra be 10p, 20p, or even money back on some brews. Instead, tokens had two possible values, £1 or 10p, and you had to make up the value using these. Makes sense in some ways, but still managed to confuse us for a little while.

Still, we were there, and there was beer to be had. I somehow managed to end up designated "beer chooser" for the evening, so I lined up a few nice starters. I had a half of Abbeydale Absolution, a familiar taste to sip while perusing the rest of the available brews. Emma had a Spalt IPA from Acorn brewery and Chris had a Ginger Daze from The Brew Company. All were thoroughly enjoyed, and everyone had a taster of the others to ensure a fair and even experience.

Time, then, for a few more beers, including Brewdog's dangerously drinkable 7.1% ale Chaos Theory, Allgates' Porteresque (a very aptly named beer) and Brass Monkey's Tamarind Mild. All the beers were excellent and went down a treat. Unfortunately, I did my usual trick and managed to carefully note every beer tried ... then lose my copy of the programme. Thankfully a replacement copy and a reasonable memory for beer provided a workable solution!

We met up with a few of my colleagues at this point, and shared opinions of the festival and the beers. Got an excellent recommendation for The Brew Company's Raisin To Live, a lovely 7% raisin stout brewed especially for the festival. Also on the recommendations list was the Proper Pasty Co's sausage rolls and scotch eggs. I tried a new delicacy ... A scotch egg made with black pudding instead of sausage meat. Delicious! Emma and Chris chickened out and had boring old sausage rolls.

One of the trips to the bar resulted in Emma ending up with possibly the worst smelling beer I've ever experienced. It was, apparently, a lemon beer, but it smelled like a cow had already eaten and passed the lemon. After trying to trick someone else into drinking it without success, another of my colleagues happened by. He'd tried the "Power Hour", in which you drink the 6 strongest beers at the festival (7.5% to 12%) in one hour. He was steaming, and drank the awful concoction with the single comment "mmm, it's lovely." Suffice to say, a lesson in always sampling ales that aren't on the official list was learned!

A trip to the toilets, then, and just about the only reason to go outside. There were further food stalls, including a German sausage grill like those on Fargate during the continental markets, and "Stuff in Oatcakes", the van that provides butties for Emma at work. I passed on all that, preferring to stay with my beer. The toilets were standard festival fair, portaloos with no lights in. Thankfully they were at least clean! Somebody had put up a sign on the fence: "Toilet Out Of Order". Whether this was a deliberate joke or not, it made my drunken self chortle.

Once we'd put away a fair few of the beers, we decided to give the cider stall a try. This always marks a descent into madness, and this time was no exception. After acquiring a Hucknall dry cider from Nottingham for myself, and a Hunt medium sweet cider from Devon for Emma, we sat in the patio furniture provided for our comfort.

A couple of lads sat near us pointed out the hilarity that could be had with the broken chairs that would recline all the way back when pushed. Of course, we just had to have a go (well, Emma didn't, but we of the dafter sex did). It was during this little escapade that Chris decided to push my feet up and I performed what I hope was a graceful backward roll off the chair, under the edge of the marque, and ended up upside-down, halfway outside. Sadly, I fear that "graceful" was not the word, and "ridiculous" may in fact have been more fitting.

At this point we decided that it was probably time to head home. Of course, one major contributing factor to this was time being called, so a hurried round was got in first. I got a full pint of Raisin To Live, and Emma got an Erdinger. Unfortunately they'd run out of Weissbier, so I ended up fetching a Pikante instead. Apparently it's not nearly as good as the usual Weissbier. Ah well.

It was a fun evening, overall. Had some good beer, some good laughs, and a good time was had by all. I drank much less than previous years, it seems, but that just meant I could walk home in relative sobriety after a nice evening and still appreciate the taste of the beers I was trying. Hopefully my reconstructed-from-memory programme provided accurate information for this post! Looking forward to see what happens next year, and this year will have a positive tick by it, in spite of the issues.

Monday, 7 September 2009

The Snow Leopard Cometh

After using my lovely Gen1 Macbook for nearly three and a half years with it's default Tiger install, I decided to take the plunge and upgrade to the latest incarnation of Mac OS X, Snow Leopard. I never upgraded to Leopard because, well, Tiger did everything I want and better the devil you know. Or something. I dunno, Leopard just never really "clicked" with me. However, as soon as I heard about what Apple were doing with Snow Leopard I signed up for notification of release.

Snow Leopard isn't a dramatic upgrade from the point of view of the user interface. It's very much just Leopard with polish. But what polish! Lots and lots of small incremental improvements, including a smoother Dock, better popout windows for folders in the Dock, an overhauled Finder, improved window display in Exposé, better image preview and selection in the picture importer ... Just generally better.

Installation was ... well, very boring. Insert disk, double click installer, click continue a few times ... and wait for half an hour. After an automatic reboot, I was sat at the login window. All done, all working.

As part of the upgrade process I got the latest versions of iLife and iWork bundled in the "Mac Box Set". I was still running iPhoto '06 so upgrading to '09 has provided a nice eye opener. Events and face recognition work brilliantly, and the whole thing feels a lot less clunky, which is odd because I'd never noticed the previous versions clunkiness until I played with the new one!
Not much else to report really. I'm very happy with the upgrade, and it's made my aging laptop quicker, prettier and has already improved productivity thanks to the numerous small improvements to the window manager and built-in tools. Top stuff.

Sunday, 2 August 2009

iPhone OS 3.0.1 fixes SMS hijack bug

A lot of Apple haters have been rubbing their tiny hands with glee recently after news reports of a security flaw in the iPhone OS 3.0 that could allow hackers to "Hijack every iPhone in the world". Many were quick to point out how slow Apple were for not releasing a patch, and many simply made it a soap box for "iPhone sucks, use Android" rants.

However, on July 31st, Apple released iPhone OS 3.0.1, with a patch for this SMS issue. It installs easily enough, job done. Of course, not being privy to such information as how to hack my own phone with this exploit, I can't check if it does the job. Either way, there it is. A fix. More detail on the OS 3.0.1 release notes. on Mac OS X - Bullet point corruption fixed

One continuous gripe I have with on Mac OS X is the apparent failure to properly handle bullet points. It only affects MS Word .doc format, and looks something like this:

This is apparently caused by the .doc format itself. Saving a .doc file in Word or and opening it in OOo will result in this bug. It is caused by a complete encoding failure on the part of the Word document format for bullet point symbols, as it explicitly looks for a particular glyph in the Symbol font rather than looking for the Unicode code point for the character. So, on machines that don't have the Windows version of Symbol.ttf installed ... it simply displays a nonsense character. OS X has its own Symbol font with different glyphs.

Fortunately the workaround for this is very simple. You can use font substitution to make OOo look at a "Symbol compatible" font for the glyph - in this case, OpenSymbol. Open the preferences panel and navigate to the Fonts page. Then, enter a font substitution for Symbol to OpenSymbol, to be applied Always.

This will take effect immediately, so any documents you have open will magically get their bullet points back. Smashing! Here is the same document immediately after closing the preferences window:

Sunday, 28 June 2009

Autobots, transform!

So I just got back from seeing Transformers 2: Revenge of the Fallen, and having read various reviews from serious film-lovers and SF fans, I really didn't know what to expect. After all the anti-hype, I hoped it wasn't as bad as all the reviews made it out to be.

But do you know what? I really enjoyed it. Yes, sure, it was absolutely ridiculous. The storyline was present, sort of, and there was a lot of very silly slapstick moments throughout the film, but none of that is really a criticism. If you were hoping that the Transformers franchise would be turned into a serious, epic SF story arc with poignancy and emotion, then you will definitely be disappointed. If you were hoping that it would be a comedy action flick with lots of things blowing up and big robots fighting a lot, then you are most certainly in for a treat!

There's not a lot else I can say about it really. It was a good film insofar as it was very entertaining. If that's not the point of such things, then I await to be enlightened.

Saturday, 20 June 2009

iPhone OS 3.0 Upgrade Joy

Good news! If you are fortunate enough to own an iPhone 2G, and have unlocked it to any network using my previous instructions ...

The OS 3.0 upgrade will present no problems at all, except it seems that the Youtube application doesn't work unless you are on a "proper" iPhone contract. No idea why, but it claims not to even be able to contact Very strange. Not a big loss for me, seeing as I never used it, but there it is.
So just let iTunes do its thing and upgrade the phone. The baseband on the 2G remains untouched, as does the bootloader. It's all good.

Monday, 8 June 2009

Which are you supporting? The systems or the customer?

Last weekend, the company that used to host this blog (4Uhosting) had a major meltdown, along with several other companies using the same datacentre. The UKGrid Greenheys DC had a major power outage, taking out many servers entirely and effectively causing many hosts to drop off the 'net completely.
A news update on the support page at had the following to say:
"We would like to make it very clear that this incident occured through no fault of ours. It could happen at any facility at any time. We rent floor space in UK datacentres to run our business and we do not expect this kind of thing to happen. Unfortunately, from time to time it does and we can neither predict, or prevent such problems."
Fair enough, if your entire data centre melts down and takes servers out with it, you can't expect to have a great deal of control over the situation and it comes down entirely to disaster recovery. They did, in fact, do a grand job of moving their entire operation to a different DC and getting it all back up and running in a few hours. Unfortunately, while the DC power grid melting might not be their fault, there is certainly backlash.

A lot of customers, upon discovering that their hosted domains and the 4uhosting site itself was offline, went on the internet to express their dismay. Many of them vowed to move their domains away to another hosting provider at the earliest opportunity. I was fortunate in that I found a correlation between the 4uhosting issue and the ukgrid issue so realised that it was a matter of time, but speculation was rife that 4uhosting had silently gone under and many people feared that they had lost hosting, data and possibly even their domains.

Even if half the customers threatening to up and leave actually do so now it's all back online, it represents a large chunk of business. So, the DC melting might not be your fault, but if a disaster situation arises and you don't inform your customers of what is happening, they will assume the worst. And that is your fault.

If your notification system consists of a single webserver hosted in a separate DC that can be used in place of the "real" servers in case of emergency, it would suffice. Give the customers something or they will turn their backs on you. Support is not just about getting the system up and running. It's also about making sure your customers know what's happening and don't abandon you because they don't feel that you are supporting them. It's a fickle thing; you can perform technical miracles and support your users' systems to the best of your ability, but if they don't know you're doing it, they only see the downtime. They only see the negative.

Surely a contingency plan for such a situation would cost less in the long run than the cost of lost business due to an actual disaster situation?

Sunday, 26 April 2009

Unlocking an iPhone for non-O2 SIMs

So I finally joined the 21st century, boosted my Apple nerd cred, and got a funky phone to boot. An iPhone is now in my posession! So far so good, except for one small problem - I have 12 months left on my Orange contract and I don't really want to pay all that off now just to get an O2 contract. I need a way to get the iPhone to work with my Orange SIM.

Enter ... QuickPWN and PWNTools! These two excellent apps allow you to unlock and jailbreak your iPhone in style and comfort. It's not as straightforward as just following the instructions, though, so allow me to elaborate a bit.

In order to unlock the iPhone, you need to build a custom IPSW package using PWNtools. This is because QuickPWN only builds a firmware to jailbreak the phone, rather than unlock it. For that, you need to replace to boot loader as well as the firmware. Ick. To build an unlocked boot loader, you need to have a copy of bl46.bin from somewhere.

My first experiment in building a custom IPSW with PWNTools went well, right up until I tried to install it. While trying to install the image using iTunes, I got the dreaded "Error 1600". Nobody knows what that actually means, but it's bad. However, there is a solution!

The trick is to use QuickPWN first, following the instructions to get the jailbroken firwmare onto the phone. This will jailbreak the phone, but unless you have an O2 SIM, the actual phone functions will be disabled. However, this makes the phone receptive to unlocked firmware packages. Open iTunes with the phone in normal mode and option-click the Restore button. Pick your custom PWNTools firmware and install it. Works fine, no errors (1600 or otherwise) in sight!

Being a bit of a purist, I didn't really want a jailbroken iPhone, and I would like to have the normal Apple logo back on the boot screen (it gets replaced with a pineapple by QuickPWN). I used QuickPWN and PWNTools with iPhone firmware 2.1 to unlock the phone. The beauty of this is that iTunes automatically installed the 2.2.1 firmware update. The new bootloader, complete with SIM unlock, is still there, but I have a genuine, non-hacked Apple firmware.

Obviously (or maybe not), using the PWNTools results in a phone that's already activated. Once you've got the new firmware on there, all you need is to plug it in and let the phone set up wizard do its thing to link it with your iTMS account so the App store works.

One thing to note is that it's quite easy to get the phone out of the development mode if it gets stuck by holding down the Home and Power buttons for 10 seconds. You can then just power up as normal, although you'll probably be left with a phone that thinks it needs activating. It's basically back to square one, but that's as good a place as any to have another crack at it.

Obviously, I do not advocate the hacking, cracking or generally buggering about with iPhones. If you brick your phone, don't come crying to me. On the other hand, it worked fine for me, and even when I had firmware that made the phone appear bricked, it could always be rescued by flashing a "real" firmware using iTunes.

Silverlight ... ouch!

For some reason, several places on the web with streaming video (e.g. ITV player) have gone with Microsoft's Silverlight for the interface. I have no idea what Silverlight is like as a platform, but I do know that it's a really bad choice for streaming video.
The main problem I have with it is that, on a 6MB/s ADSL connection, I get skip free performance from the likes of youtube and the BBC iplayer. Silverlight players, not so much. 0% left in the buffer every 30 seconds or so for even small videos, and there is no apparent way to change the buffer settings.
If anyone knows how I can make Silverlight less crappy, please to be posting comments!

Friday, 6 March 2009

Joining the 20th Century

Being the Luddite I am, I have thus far shunned the idea of having a television in my flat. I really couldn't see the point, given that I have plenty of other things to entertain me, and the fact that there is seldom anything on. Anything I do watch I do so on DVD, iPlayer, or *ahem* handy, handy torrents.
However, I do have two children who like to watch the these things, and it is much nicer to watch DVDs on a decent sized screen than on my 13.3" MacBook. I have previously used a projector for such purposes, but it's a faff to set up (don't have anywhere permanent to mount it) and in recent months the picture has turned increasingly yellow.
So, I had a plan. Don't get a telly. Get a decent monitor instead. A nice TFT monitor would let me do all the things I currently do on a much better display. Genius. And that's exactly what I was going to do, until I saw a UMC 21.6" TV in Tesco for very little cash.
I went over to my local Tesco (all of half a mile from the flat) and picked one up last night, and was immediately impressed. Everything just worked out of the box, and it has an impressive array of connectors. There's the usual SCART and component inputs, as well as HDMI for HD content and a VGA connector. This last addition is what swayed me. For £170, I got a 1080p HD television that doubles up as a 1920x1080 monitor for plugging the laptop into.
It's quite an impressive little thing, for the money. The interface is clean, easy to use, easy to read and responds quickly to user inputs. It does everything you could want of a TV, and the built in Freeview tuner picks up a suitable amount of channels. The 1000:1 contrast ratio is very nice, producing a clean, crisp and vivid picture even when using my grotty low-bitrate AVIs I have acquired from the internet.
The only problem, really, is that there's still nothing on!

Wednesday, 11 February 2009

Twitter, part deux

Some many moons ago now, I had a little rant about a new scourge on the internets ... the beast that is Twitter. In it, I said that I can understand the draw of social messaging (I use IRC and IM, so the concept is not alien to me) but that I can't understand the point of sending out details of the minutiae of your life to complete strangers. However, a long time has passed since I wrote that post, so I thought it time to revisit. Why? Well, simply because I've been actively using Twitter for a while now. Yes, I have been sucked in. Bugger.
Seriously, though, I have started using it. The reasons are manifold and complex. Actually, that's a lie, it's very simple. A bunch of people I know also started using it more actively and I joined in. Why does anyone do anything on these social networking type sites? Because other people do. It's as good a reason as any.
Although I have started using Twitter more actively, I still use it in a fairly limited way. For instance, my profile is private and I have only a few followers. This is primarily because, for all I'm using the platform, I'm not into broadcasting my updates to the big wide world for all to see. I've also been followed by several strange accounts which appear to be bots that are simply there to gather data. Setting my profile to private keeps out bots, oiks and other undesirables. I value my privacy, even in a public forum.
Generally speaking, the content couldn't ever really be described as useful. It's not dramatically different to general banter visible in any number of other media, such as IRC or even Facebook statuses. In fact, Twitter seems like an intermediate step between several other existing ways to communicate. Some parallels I have drawn include:
  • SMS Text messaging, the primary means of communication of preteens everywhere. Except Twitter doesn't cost anything. Direct messages are very much like an SMS without being tied to a mobile phone.
  • IM Instant messaging has long been the primary computer-based communication tool for the masses. It has an immediacy that Twitter lacks, but that's what gives Twitter the edge. Direct messages, Replies and Retweets and like an asynchronous instant messaging system. So ... a delayed messaging system, then.
  • IRC If DMs are like delayed IM, then general Twitter activity is like an asynchronous IRC channel. In fact, the Twitter/IRC comparison seems to the most common parallel drawn.
  • Facebook Since the inclusion of comments on Facebook statuses, small conversations based on a short missive from any particular user have become commonplace. Twitter does this too. In fact, there's not a lot of difference in the concept; just in the practicalities of implementation.
Of course, being decoupled from a particular client or device means that there are lots of ways to update Twitter (generally speaking I avoid the term "tweet".) A short list of the various clients I use:
  • Mobile Twitter Using my phone's built in browser, the Twitter mobile website ( works pretty well. The only major problem is that DMs don't appear to work.
  • Spaz A fairly simple desktop Twitter client that has a lot of nice features, and isn't irritating. An unusual quality in modern software.
  • Tweetdeck A somewhat more powerful desktop Twitter client that is very useful but irritating as hell.
  • Twim A Java MIDP based client for mobile phones. It works, but that's all I can say for it.
  • Mauku A Twitter and Jaiku client for Maemo (for Nokia's 770, 800 and 810 internet tablets) that is actually the best of the bunch. Very nice.
So, that's Twitter, and that's how I use it. Am I a convert to the way of Twitter? Or do I just use it as another way to pass the time rather than doing anything useful. Unfortunately, it's mostly the latter. There's nobody on Twitter that I can't communicate with in some other way. But as I outlined earlier, it has benefits over other methods of communication (especially the asynchronous nature of it) that mean for keeping tabs on friends and talking bollocks when bored, it's ideal.
You're still not going to see my dirty laundry on the public feed, though.

Monday, 2 February 2009

VirtualBox Guest Additions on Linux guests

This is just a quick post to remind myself how to do this, because for some reason I keep forgetting ... It might come in handy for others though!

If you're installing the VirtualBox Guest Addition on a Linux guest, you might have problems with display resizing, mouse capture, and complete breakage if you upgrade your kernel. This is easily fixed. Just installed DKMS (Dynamic Kernel Module Support) before running the VBoxLinux*.sh script for your architecture.

This handily enables automatic recompilation of the VirtualBox kernel modules if you change your kernel, and in my case, also actually makes them work in the first place. Double win! Hope this helps somebody. If not, it can just be a post to jog my memory in the future.

Wednesday, 14 January 2009

Cheap electronics and a loss of innocence

Today I decided to buy a new USB flash drive, seeing as I appear to have lost my old Kingston DataTraveler II down the back of a sofa somewhere. I figured I'd probably end up paying about a tenner, although most non-specialist shops sell them for about 20 quid or so. Imagine my surprise, then, when I checked the Boots photo centre and they had 4GB Sony MicroVault drives reduced from £24.99 to £4.99!
So, while making a mental note that these things might eBay well, I headed to the till. While waiting, I perused the pack to make sure it wasn't going to be crippled in any way. Right on the front was a big star that I'd managed to previously miss, advertising the fact that the new Sugababes album is preloaded in MP3 format. I'm not sure the Sugababes would be pleased to know that their inclusion warranted a 80% price reduction!
I found this use of MP3 format very interesting indeed. Sony are no strangers to negative publicity over their DRM policies. In fact, they are known to have a very anti-consumer stance when faced with "intellectual property" issues. The pain involved in getting music onto a Walkman MP3 player is testament to that. So the fact that the tracks were bundled in plain old MP3, with no DRM, no registration required and no proprietary audio formats in sight, was something of a surprise.
I know there have been plans to distribute music on flash drives in the past, and there may be some step toward it. It'll be interesting to see what they do next, and if future distribution may be more encumbered.
So I've seen a glimpse into a possible future of Sony's music distribution plans, and got a cheap flash drive to boot. But at what cost? I can never again look at myself in the mirror and know that I have never bought a Sugababes album. That fact will haunt me for the rest of my days. I think I'm going to go listen to some death metal to cheer myself up.