Reading material

Some bedtime reading, courtesy of a bout of surfing at CiteSeer:

All the papers listed above were found from CiteSeer’s links from a single initial page.


Scratched the gadget itch by getting myself a wireless router. There’s something strangely liberating about blogging from your armchair.

Next gadget decided

Was at JAOO earlier this week. More on that later, first I want to come out and say that Apple rock. While setting up our booth, 3 of the 4 of us spent well over an hour messing around with network hubs and wireless configuration parameters. Mikey simply opened up his iBook and started surfing. No fuss, no hassle, no endless incantations of ‘ipconfig /renew’ and rebooting hilarity.

Not only that, but Ward Cunningham uses an iBook.

Somewhere out there is a 15″ Powerbook with my name on it. Oh yes.


Apologies for the recent outage, my provider conducted a scheduled restart last sunday, (which I was informed of) but which happens so infrequently that I have never bothered to include apache in the init scripts. Then I went out of town and thus didn’t spot it until yesterday. Doh.

Unit tests as mutagen inhibitors

My colleague Dave today described a software system as an evolving organism, and the unit tests as acting to protect against dangerous mutations that might injure or kill the organism. The development of this ‘immune system’ is where test-driven-development really pays off, and is vital to keep the cost of change curve flat.

Push Inheritance

During an IM chat with my colleague Jon, he used the term ‘Push Inheritance’ to describe aspects. Not sure if he came up with it first, but it was such an apt description. Adding aspects is like dynamically slotting an object into an inheritance hierarchy after the fact. It really helped my understanding of aspects.

We also dicussed how Ruby has aspects built in – its possible to hook into the Ruby kernel and intercept every single method invocation, or replace the default implementation of ‘new’ with one of your own, wrapping your objects at instantiation time. Ruby rocks.