Collating Thoughts

My blog has atrophied recently, as I’ve been busy doing stuff which has left me with little time to write about it.

I can’t see any imminent pick up in activity, as I’m due to fly out to the US for several months, in a week’s time. This will be an adventure and I suspect the trend of doing things rather than writing about things will continue.

However, not wishing to totally drop the ball, here are the ideas, topics, cool things etc. that are buzzing around my head at the moment.

  • Start a travelog? Can I combine my pending travels and interest in photography with blogmapper’s technology to create a snail trail of my movements linked to photos of the places I go to?
  • Staying in touch with friends. iChat AV is compatible with AOL, so I’m planning to get my home pc set up with a webcam so my flatmate and I can chat over the interweb. Finally, a reason to own an iSight.
  • Start writing my ‘technical issues I’ve seen on every project I’ve worked on’ magnum opus.
  • Camino. Will probably replace Safari as my browser of choice, as Safari occasionally barfs and gets into infinite loops on sites with complex redirects.
  • Write down my crazy idea that Smalltalk could make a comeback if it had a sufficiently credible brand backing it up. Hint: Apple
  • Keep a close eye on WordPress as a potential competitor to Moveable Type

Searchable Images

EXIF, IPTC, Dublin-core, huh?

Crash-only Systems

Finally got around to reading this paper about crash-only software. What a great idea. Given that fatal errors that require a component be restarted are by their nature unanticipated and almost impossible to design out, why not make crash/reboot the default mode of operation? If a system is designed to be safely arbitrarily crashed and restarted, then the number of fail/recovery scenarios is reduced to one.

The paper takes a number of good ideas for building robust distributed systems, and turns them up to 11. Go read it.

Who needs a messaging system?

One of my colleagues, Steve, spoke to me the other day about using SMTP for application integration.

Its something that I’ve thought about from time to time, and it just seems to make sense. Here is a protocol that has been around for years, is battle-tested, and is used by millions of systems all over the world to reliably transfer messages. In case you haven’t guessed yet, SMTP is the protocol used for email. Why spend a fortune on enterprise message brokers, when you could download exim or postfix (or sendmail if you’re a masochist). Most linux, BSD or unix boxes will probably have one of these installed already.

SMTP is point to point, so what if we want pub-sub? Handily, there is a protocol called NNTP which has been around about as long as SMTP. This is the protocol that USENET (aka newsgroups) uses.

I definitely think that there is much our industry could learn from technologies invented 20 or more years ago.

The bar is higher now

Michael Feathers tells it like it is:

You think your design is good? Pick a class, any class, and try to instantiate it in a test harness. I used to think that my earlier designs were good until I started to apply that test. We can talk about coupling and encapsulation and all those nice pretty things, but put your money where your mouth is.

Whither Prolog

Just read a Byte article dating back to 1995 that predicted that Constraint Logic Programming in Prolog would be the programming paradigm that would gain the most commercial significance over the next 5 years.

Hands up if you’ve heard of Constraint Logic Programming.

Slightly sad thing is that CLP does actually look very interesting, as it seeks to tackle the NP-complete class of problems that traditional programming solutions are generally bad at.

Genetic algorithms appear to be more in vogue for NP-complete problems at the moment, possibly because to implement a performant CLP system you generally need an implementation of Prolog, whereas its possible to write a genetic algorithm in any current commodity OO language.

No, Windows will NOT restart now

‘StupidSoft PointlessTool X has been installed. Your computer will now be rebooted. Press OK to reboot’.

What gives a piece of software the right to decide when I reboot my computer? Its such a nonsensical myth anyway. It just doesn’t have to be necessary to shut down the whole operating system simply to install an application. How can Windows be taken seriously as a server platform while this sort of thing is still going on?