Introduction

I work as the CTO at Giant; managing software engineering teams, leading product development, creating resilient systems, and operating internet infrastructure. I've been doing this for the last 15-or-so years.

My professional interests lie in digital giving; I help charities, NGOs and other ethically-positive organisations promote themselves online, and raise funds through digital. Outside of my work, I'm interested in UNIX, open source, and digital history.

This website doesn't represent the views of Giant, but there's probably a lot of overlap.

I have profiles on Github and LinkedIn.

Right now

Like many people in technology, I'm trying to figure out what AI means for our industry, and the people who work in it. I've written about AI's utility and how it's different from other bubbles, and the impact AI might have on companies like mine. While using LLMs to write code, I've been thinking about how human practice can help code agents, verification of AI-generated code, and a few articles about tools and services; but these articles are probably outdated by the time you read this.

Articles

See all articles

How I use Claude Code

2025-06-25

I've been using Claude Code a lot recently, and I've settled on a workflow that's been producing really good results. The short version...

notion-to-json

2025-06-18

I was a big Notion user. For a while, it was my go-to for everything: project management, note-taking, knowledge bases, and a lightweight CRM....

mastodon-to-bluesky

2025-06-14

I've been using Bluesky more and more recently. It's a pleasant enough place to post, though I'm still not entirely convinced by the AT...

Good practice is good for LLMs too

2025-06-08

LLMs are changing how we write software. In the face of this unheaval, it's tempting to think these tools somehow absolve us from following good...

Social

See all posts

The problem with microcontroller-negotiation cables (HDMI, DP, Thunderbolt etc) is that when negotiations fail you can never see the logs. Just silent failure.

September 13, 2025

Now and again I forget to turn on my NextDNS resolver on a device, and kind of gaslight myself into thinking my internet connection is operating at 'normal' speed. When I remember to turn it on it's like a free fibre upgrade.

September 6, 2025

A nice meeting at work today, in which we committed to converting 100-ish repositories to only use uv and ruff (from poetry/black/isort). Now to plan it.

September 2, 2025

Startup idea: give me access to your inbox and I will ruthlessly delete all the "How did we do?" NPS begging emails before you even see them.

September 2, 2025

Another HN thread about interesting Python developments descends into the same tired bunfight where people exchange pointless anecdata about packaging systems and their different priorities. Sigh.

August 14, 2025

Other Content

Contact

If you need to contact me:

Don't assume I will reply quickly.

About This Site

This site is just some Markdown documents which I maintain by hand, with a one-function Python wrapper to manage responses. I'm sure there are a lot of inconsistencies and broken links. I keep a site todo list.

Atom Logo