Engineering notes, written slowly

I build applications, write about AI, APIs and system design - the silent bugs, the wiring, and the boring parts that quietly hold everything up.

Recent writing 2026

What AI features force you to specify

When you add an AI layer to a retrieval feature, data decisions that developers used to make by instinct become explicit contract requirements. Live demos are often the first place you find out which ones are missing.

Engineering · 4 min read

The guardrail is the feature

An agent that finds every reference to a feature flag and plans its removal is the easy half. The rule about which flags it is never allowed to propose removing is what makes it safe to leave running, and what let the job move to the person who actually wants it done.

Engineering · 4 min read

Bad acceptance criteria ship as bugs

Ambiguity in acceptance criteria doesn't disappear when implementation starts. It becomes a decision made without full context. The lineage problem, staleness semantics, product positioning: caught before a sprint begins, they're conversations. Caught after, they're migrations.

Engineering · 6 min read

The demo is the test

A feature that passes every test can still be broken in ways the test suite is structurally unable to see. Four kinds of blindness that only surfaced once real stakeholders started using an AI booking assistant in a room.

Engineering · 15 min read

Codebase health is a lagging indicator

A tooling migration, some dependency bumps and a telemetry schema. None of it reaches a roadmap, and all of it decides whether a codebase is pleasant to work in three years from now.

Engineering · 4 min read

Designing a logging system for an AI service

Building a standardised logging system for an AI assistant service: making consistent structured logging the path of least resistance, and thinking carefully about what an AI service should and shouldn't persist.

Engineering · 2 min read
Older posts