Hypothetically, if you were commissioning a nine square metre bottle-top mosaic composed of 10,000 coloured bottle tops, what picture would you choose to copy?
Relief
I spent most of today trying to find out why my experimental results were less than 1/5th as good as they had been for the same dataset a few months ago when I wrote my paper. It’s quite disturbing to run a program for half an hour and have it come back and tell you that you have nothing worth writing your thesis about. Quite disturbing indeed. Especially when the paper didn’t even get accepted with the results I used to have, but I’ll not get into that.
I was pretty put out, but I was reassured that I had managed to obtain useful results before so it must just be a bug somewhere in my code. I figured it could take some time to find though, as my year’s work has become somewhat gnarly along the way for one reason or another. But at least it was just a matter of finding and fixing a bug.
Or was it? The thing is, my first set of results had a little bit of a cheat in them. I’m not going to try to describe the setup in any really meaningful way, because that’s basically what this thesis is about and I don’t have weeks to write this blog post. But there were some circumstances under which I would get a few correct answers "for free". These shouldn’t have been counted with the rest of the results, but they had been when I presented the results in my paper. I noticed this a few weeks ago and decided to fix it. Could it be that removing my "free" right answers had thrown off my whole set of results to the extent that I was seeing?
The obvious thing to do was to root around in the code and revert whatever I changed so that the cheat was back in place. If I went back to getting good results then I would know that the new, bad numbers were just the legitimate results where the good ones were basically fake. This would have been more than a bit bothersome. Now, I’m sitting here writing a blog post rather than, say, chucking myself under a train so you can probably surmise that this wasn’t what had gone wrong. In fact I had never even fixed the cheating! Well that was a relief anyway. At least when I did find whatever was wrong it would be something I could fix without feeding my academic integrity to the ducks.
Given the complexity and the sheer quantity of the code involved in this project, and my relative unfamiliarity with parts of it that I wrote too long ago and didn’t properly document, I expected to spend the rest of the week tracking down the problem. It took me about two hours of the usual ritual of reading code, adding debugging statements, compiling, running, panicking, reading more code, adding more debugging statements, going for a piss, and finally reading the right bit of code and adding the right debugging statement to find the bug. A one-liner fixed the major symptoms, and a little more work tomorrow will fix it entirely.
I also fixed the little cheat that had been in the system when I generated the earlier results. As I was doing this it occurred to me that it shouldn’t actually have any effect on the numbers I was reporting. A quick check bore this out. So not only had I got the results back to being as good as they had been, they were now completely legitimate.
By this time it was almost time for the bus (which I had intended not to get, since I thought I’d need to be in all evening). But I had time to run a couple of more iterations of one or two experiments. I ran through the newer dataset and discovered that I can get precision of 100%, with 97.9% recall (don’t worry about what those words mean in this context; what’s important is that you can’t do better than 100%). And that’s under what is intuitively the most difficult set of conditions, so I expect to see the same results under all other conditions on that dataset.
The last 15 minutes of my day in college were very good. How was your day?
Dean
Steven Berlin Johnson has been one of my favourite non-fiction writers since I stumbled on Emergence in Bray bookshop years ago. He’s been in my blog subscriptions from the very beginning too. I think it’s only fair that I reward him for providing me with so much thoughtful and entertaining reading with a gift of some Page Rank for his new son Dean.
Pirates of the Caribbean 2
I didn’t get around to reviewing this before I headed off to Millstreet last week for the European Juggling Convention. I guess you’ve all since seen it so I don’t expect a review would be particularly enlightening at this point. Anyway I expect that approximately everyone was planning to see this film and nothing I can say is going to change that.
The simple fact is that the two coolest elements any movie can contain right now are Johnny Depp and pirates. Captain Jack Sparrow is the icon of this decade and anyone who regards this particular cultural bandwagon as optional is sadly removing themselves from society for the foreseeable future (i.e., until the next in the series manages against all the odds to be a disappointment, at which point those people will gloat at length while everyone else moves silently onwards and tries to forget the whole thing).
Absence
I’m going away for a week. Seeya.
New Hotness in Linux Land
I’ve recently been following some Linux projects a little more closely than I had been before. There are some things that look like they might go in an interesting direction. Among them:
- Mathusalem — A "long running task manager". This is a way to unite all sorts of progress windows into a single place. Browser downloads, email downloads, server connecting/handshaking, CD burning. That sort of thing. This project is part of Google’s Summer of Code sponsorship programme, so it should be useable by the end of the summer.
- lowfat — A file manager of the ‘make your virtual desktop like your real desktop’ variety. It basically shows your photos’ and documents’ contents rather than representing them as icons, and you can sift through them and fling them around the place with all the wild abandon you use when using dead-tree documents. There’s a very well-narrated video of a prototype of it in use. Worth checking out, but this is very speculative stuff.
There’s plenty of other cool stuff being developed right now too of course, but these are the ones that have been open in tabs waiting for me to brain-dump them onto Soylent Red for the last while.
(By the way, because of some feedback I got to the last post, I should point out that "dead-tree" means made of paper. And ham email is the opposite of spam email.)
Machine Learning Applied to Music Players
I want a music player that doesn’t require me to explicitly rate songs by assigning them a number of stars or some such nonsense. I want it to keep an internal representation of ratings and to gather data implicitly to alter those ratings. A song’s rating should go up when the song is played. It should go down when the song is skipped over. It should go up when I raise the volume just after it starts playing. It should relate the rating for one song to the ratings of other songs by the same artist, or in the same genre.
If iTunes had been paying attention to all of my actions so far it would know that when I add a new Foo Fighters song to my music library there’s a fairly freaking good chance that I’m going to like it more than average. If I started skipping over it a lot (possibly because it’s one of the crappy acoustic songs from the second CD of In Your Honour) it should have adjusted the rating to reflect that.
Software throws out too much useful information about user behaviour.

Nirvana on Top of the Pops
Somewhere in the discussion of the demise of Top of the Pops I came across a link to Nirvana’s performance of Smells Like Teen Spirit on the show.
Top of the Pops didn’t allow bands to perform their music live, instead forcing them to sing and mime to pre-recorded music. So Kurt Cobain completely took the piss with his singing, while the whole band mimed their instrument-playing as badly as they could. Cobain doesn’t even pretend to play a whole chunk of the song. Krist Novoselic spends most of the performance swinging his bass around his head. It’s hard to tell from the YouTube video but apparently the bass didn’t even have any strings on it. Stick it to the man!
By the way, this is my 500th post to Soylent Red.
Pharaoh Bender once more walks among the living!
Everyone, I have a very dramatic announcement. So anyone with a weak heart should leave now. Goodbye!
…
Ok, so there’s been news of Futurama‘s resurrection before, and we all know the saying: Fool me seven times, shame on you. Fool me eight or more times, shame on me. Those earlier reports were nothing but sweet, sweet words that turn into bitter orange wax in my ears.
But you can’t give up hope just because it’s hopeless. You gotta hope even more, and cover your ears and go like bla bla bla bla … So now there are actual press releases and confirmations from networks and crap like that that real journalists care about. So it looks like it’s for real this time. This is the moment we have been training for all yesterday afternoon. There’ll be thirteen new episodes produced for Comedy Central to air in 2008. Woop woop woop!
So all over the world, couples stood together in joy. And me, Zoidberg! And no one could have been happier unless it would have also been Valentine’s Day.