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

Three quiet bugs hiding in a cross-service feature

Shipping a feature across four services meant coordinating an AI backend, a fare search service, and two frontend components. Along the way: a silent configuration bug, a duplicate event contract, and an HTML injection path.

Engineering · 3 min read

The scaffolding tax: getting a new service properly bootstrapped

Bootstrapping a new service from a template isn't just renaming things — it's wiring it into the deployment pipeline, getting dependency management right, and building the scaffolding that makes all future work faster.

Engineering · 2 min read

Shipping a conversational search flow across services

Cross-service work: shipping an end-to-end conversational flight search flow, instrumenting an MCP server with privacy-aware observability, improving AI coding assistant context injection, and cleaning up inconsistent naming across the codebase.

Engineering · 3 min read

Release pipelines should be boring

Time spent fixing a flaky release pipeline sounds like a lot of infrastructure work. Here's why its effects on a team are easy to undercount.

Engineering · 3 min read

Granular Dependabot groups and getting error attribution right

Repos got granular Dependabot grouping and a shared error library got a missing origin type. Neither is glamorous — both are the kind of thing that keeps a platform manageable.

Engineering · 2 min read

The notification that wouldn't leave

A booking interface was showing a queue warning banner after it should have disappeared. The fix was small; the pattern it points to is worth thinking about.

Engineering · 2 min read

Designing an API endpoint for an AI consumer

Adding a conversational search endpoint to a fare search service raised an interesting question: what does a response shape optimised for an AI assistant look like, versus one optimised for UI code?

Engineering · 2 min read
Older posts