Wow, people can make climbing trees into a commercial opportunity.

Here’s a classic story software engineering story – Anthony does the intro and DaveM delivers the punchline. Next time you’re chasing down a bug which “can’t possibly be happening” bear this one in mind. Of course, every other time it’ll be a bug in the code. But this once, the code was fine. Crazy stuff!

JQuery is a pretty nice bit of software. It allows you to query your java codebase using prolog-like questions, and it integrates into Eclipse to provide dynamic views across your code base.

I remain undecided whether a bad language with good tools is preferable to a good language with bad tools. People who get paid to code in Smalltalk/Lisp can sit back and be smug.

Meep! Urkle!

Today, I am frustrated. I have a fairly good idea of what my “dream development environment” would look like. I am confident that I would be significantly more productive and less stressed if I could use it today to develop applications. However, I’m not sure I’ll ever get to use it.

History is littered with the carcasses of failed software tool companies. There are many great ideas and years of effort lost. The big problem is that you can’t break cleanly from the past. If you build a brilliant new C++ IDE, you’d better be sure that it still works with CVS or other text-based version control systems. Otherwise, no-one is going to start using it. So, that ties you to keeping source code in ascii text files.

If it’s so great, does it need to sell?

If it’s so great, write it youself, use it yourself and clean up – erlang.

Real world concerns – working with existing code, fitting in with cvs, hiring people

Patently obvious

Europe retains its sanity over software patents. The proceedings make fun reading. I wrote to my local MEP about this back in June. However, my local MEP was firmly sticking to his party line and said “thanks but no thanks” to my viewpoint and said that they would be supporting the move. Grr! So much for representative democracy! “Sorry, you had your vote three years ago .. why are you bothering me with your viewpoint, puny citizen?”. Still, all’s well that ends well.

I’ve been looking for a decent hardware ebook reader for a while. I want something which is the size and weight of a paperback book, with a highres greyscale screen. I haven’t found such a beast, and I’m starting to plot how I’d build one of them myself.

Here’s an excellent optical illusion. The human visual system rocks.

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.