As of 2026 I’m taking a break and pursuing my own projects. For the preceding
decade I wrote software and managed people at the Government Digital
Service, including a little over a year as the
Head of Software Engineering for GOV.UK.
I’m a keen (if not very strong) chess player, and a determined (if not very
fast) cyclist and runner. I can sail a bit too, so when the weather’s nice I
like to do that.
Sailing little boats is a very different experience to sailing big boats.
On a little boat, the forces involved are mostly on a human scale. Even if it's quite windy, a sailor can control the sails by pulling on ropes that are directly connected to the sails. If the boat's coming in to land too fast, it can be slowed down with a well timed kick off the dock.
On a big boat, it's different. Ropes have to be wound around winches for a sailor to have any hope of controlling the forces on the sails. If the boat's coming in to land too fast, the strongest person in the world isn't going to challenge its momentum with a kick - if they're foolish enough to try, they'll loose their leg. Giant inflatable fenders can take some impact for you, but mostly big boats just need to be steered a lot more carefully.
Teams can be like this too.
At work we've got a database backed email system that's running into some performance issues. In particular, we're placing the database's disk under a lot of write load.
I've had an idea that we could use content-addressable data to reduce the amount we write to disk, and get better performance from a smaller database.
This post is an exploration of some techniques that we might look at using to do this in postgres - they're new to me, and as yet untested in a production environment.
I joined a fast-a-thon organised by muslim colleagues at GDS.
A group of us signed up to fast for one day - “abstaining from food, drink and bad / negative thoughts, actions and speech from dawn to dusk”.