Singe Miniscule

If I had a tiny monkey, it’d have a blog. All the cool kids at Voxar and Ergnosis have one now, so I’ve gathered links at the left side of this page. Yay for the internet! This removes all need for actual conversation. We can just have a sucession of concurrent monologues.

Actually, if I had a tiny monkey, it’d sit on my shoulder whilst I run a 10k. Foolish humans.

The Exceptional Mr Gosling

James Gosling talks to about exceptions and how they’re used in the real world.

The discussion about the “one true path” strike a chord with me. I spend several years working on a networked medical application. When you’re talking to a network then anything can happen. The network goes silent. You get the wrong kind of packet. The network layer gives an error. You receive a data packet containing bad data (like, “length of next data item = 0xffffffff bytes”). The machine you’re talking to rudely drops the connection rather than terminating gracefully. These aren’t theoretical problems — they occur regularly in the field. And if you don’t handle each and every one of them correctly, you’ll get annoyed customer phoning you up and you spend your weekend fixing bugs instead of having fun.

And if you think you’re safe because you’re not talking to a network, how does your application cope when the users disk gets full? Every single write to a file can potentially fail.

So, I think the whole notion of the “one true path” is a seductive fallacy. It’s seductive becuase the “one true path” is where all the cool stuff happens. Coders love making computers do cool stuff. In constrast, handling all the exceptions and return values is dull – it’s is a bit like “dotting the i’s and crossing the t’s”. Who cares if your application bombs when the user’s disk is full? Well, the user sure will.

But when you are a grown-up programmer then you don’t get to just do the cool stuff. All of those “error conditions” are first-class code routes, just like the “one true path” and some day Real Soon Now a customer is going to run down one of them.

Here’s a fun idea: Before you ship your next product, run your test plan on an instrumented build and record code coverage information. Then in your shipped product, detect when an end-user starts running down a codepath which wasn’t touched by your testing and then pop up a big alert box saying “Warning: You are the first person to ever run this bit of code!!”. I’d love to hear of a company which dares to do this.


I’m a Subversion bunny now. It might not be perfect but if it turns out to be stable and have reasonable performance then you’ll never be able to drag me back to CVS. I’ll write up some sort of review in a few weeks time.

Systrace rocks. Think Zonealarm for system calls.

Following from my future-proof file format worries, I find the MyLifeBits project very interesting.

Finally, a review for Google to pick up. Using a Netgear MA401RA 802.11b PCMCIA card under Linux causes problems, crashes and instability. Don’t buy them, kiddies! It runs for a while but then dies spectacularly after half an hour.

Want to build better tools?

I should point out that Ergnosis (which I joined at the start of this month) are still looking to fill a couple more “senior developer” posts. The company recruitment page gives details, and I’ll be happy to answer any queries by email. Basically, if you’ve been reading this blog for its technical content, and you have a decent software engineering background, then you’d be pretty well placed. The company offices are in Bristol, but I’m working from Edinburgh and flying down to Bristol once a fortnight for a couple of days. So, geography isn’t necessarily an obstacle (up to a point!).

Hello, world

It’s been a while since my last entry, mainly because lots of things have been happening and I haven’t had much chance to Think About technical stuff apart from work.

  • I spent last week down in Bristol getting started at Ergnosis. It’s been good fun, although going from a company where I knew lots about the codebase to one where I know nothing has been sobering! Still, I’m now getting familiar with everything, coding away in Edinburgh on a very nice wifi-enabled linux laptop, and I’ll soon start roaming out into wifi-enabled places to work. I’ll be back down in Bristol next week doing design stuff. Bristol is quite nice. I stay at a backpacker’s hostel, which is more nice and more sociable than a souless hotel.
  • Pavlos has had a recent flurry of interesting writing. I keep trying to write a reponse, but I’d go off on so many tangents I don’t think I’d ever finish.
  • Anthony’s blog reminded me to sort out backups, so I now have a big second drive which gets a copy of Important Stuff each week. It’s not ideal, since my computer might blow up and take both drives with it, but it’s a lot better than only backing up once a year.
  • Craig also left Voxar recently to go to Australia for a year, and started a blog to stay in touch with the UK. Yay, I’m sure he’ll have a great time.
  • It’s turning to Autumn, which means we’ll have to stop playing ultimate frisbee soon. Winter is the time for indoor fun, so hopefully that’ll mean more climbing.
  • This weekend, I’m running my first 10k race, along the Water of Leith. If that goes well, next weekend I’ll be running the somewhat harder Capital Challenge 10k around the streets of Edinburgh. I wince every time I look at the map.