2 July 2026 · 12 min
Availability of a fragmented stock: the problem we thought was simple
“How many chairs have I got left from the 12th to the 15th?” One customer question, one range query, one database lock — and three ways to hire out the same batch twice if you get the order wrong. The calculation in detail, with batches, increments and turnaround times.
Databases Concurrency
Read the note
19 June 2026 · 7 min
Writing the decisions before the code
One page per decision: the problem, the option chosen, the ones ruled out. Six months later it is the only document everyone goes back to — and the only one that stops a settled debate being replayed. Format, numbering, and what didn't work.
Architecture Documentation
Read the note
5 June 2026 · 6 min
The webhook is the source of truth, never the browser's return trip
The customer pays, closes the tab too soon, and the order is never confirmed. The most expensive bug you can let through on a shop — and why idempotency keyed on the event id is not optional.
Payments Reliability
Read the note
21 May 2026 · 8 min
A green test suite can lie
Machine time zone, system locale, decimal separator: three settings that make date and amount tests pass when they should have failed. How we force the execution environment, and what learning that cost.
Testing Continuous integration
Read the note
30 April 2026 · 10 min
Three machines for one person
One that decides, one that builds and deploys, one that takes the load tests. How the work is shared between them, why the weakest one is the one at the controls, and what that changes about the lead times we quote.
Workshop Infrastructure
Read the note
9 April 2026 · 7 min
Taking over an application nobody wants any more
The assessment we write before committing: what holds, what breaks, what each month of the status quo costs. And the question to ask first — who has the credentials?
Handovers Method
Read the note