Skip to content

Archive

Writing

Long-form writing on engineering practice. Architecture with the rationale on the table, not just the result.



2026

26 Aug

The Last Published Date

Two client websites built alongside each other, with opposite architectures, decided by one piece of evidence that was free, public, and sitting under a date stamp before either proposal was written.

05 Aug

Building LapDelta: A Real-Time F1 Replay for a Pound a Month

A 60fps replay of real Formula 1 telemetry that runs for about a pound a month with no request-serving backend, built on a zero-copy data contract shared across three languages and a fair amount of geometry.

24 Jun

The Second Reader

University taught me every practice that defines good engineering, then removed the one condition under which any of them make sense. What's left over is a lesson about knowledge itself.

07 Jun

Let It Stabilise First

Don't commit to a structural contract before you know what you're agreeing to. On deferring irreversible decisions until real usage has revealed the domain.

03 Jun

Testing to the Risk, Not the Checklist

Deliberate exclusions are engineering decisions. Coverage isn't a number; it's a resource allocation problem, and the resource is finite.

31 May

The Sprint Review Isn't the Feedback Loop

Formal ceremonies create the conditions for feedback. The actual signal comes from elsewhere. Sprint reviews tell you what people decided to say; informal corrections tell you what they actually noticed.

27 May

The Pipeline Is the Product

Spending a sprint on deployment infrastructure before writing any application code looks like deferring value. The evidence pointed the other way.

20 May

Make the Easy Thing the Right Thing

When you start copying infrastructure code for the third time, you've already waited too long. A note on extracting shared patterns into a library, and being kind to future-you.

17 Apr

Building a Mathematics Interpreter in F#: From Parser to Symbolic Calculus

How we built a full interpreter with symbolic differentiation, six number types, and interactive graph plotting, and what the architectural decisions reveal about building extensible systems.

13 Apr

Building an Event-Driven Health Tracker with Three Lambda Functions

How we built a health tracking platform with event-driven notifications, scheduled jobs, and auto-completing goals, and why decoupling what happens from when it happens made everything simpler.

04 Apr

Building WeatherWise: A Weather Platform That Tells You What to Do

Building a weather platform that transforms raw API data into prioritised, actionable recommendations, and the full-stack architecture that supports it.

24 Mar

Alive to Guess Again

Karl Popper argued that a theory which can't be proven wrong isn't really saying anything. The same is true of engineering practices: if you aren't actively trying to break them, you don't know whether they're working.

17 Mar

The Pragmatist's Razor

Cargo cult engineering is adopting practices without understanding. But there's an equal and opposite failure: the engineer so principled they forget they're building software for people, not for architecture diagrams.

15 Mar

Knowing How Isn't Knowing Why

I started code reviewing for a junior developer a few months ago. It taught me more about my own understanding than I expected, and revealed a model of learning that changes how I think about software knowledge.

14 Mar

Cargo Cult Software Engineering

Richard Feynman warned about scientists who follow the form of science without the substance. The same problem is everywhere in software: teams adopting practices they don't understand, hoping the results will follow.