Things I keep having to explain.
Short pieces about decisions that look minor in a planning meeting but end up determining how a system ages. I wrote them mainly so I can send someone a link instead of repeating myself.
-
SEPTEMBER 2026 AI & DELIVERY
The pitfalls of vibe-coded platforms
A model answers the question you asked. It does not ask who may read this row, what happens when two people book the last slot, or what must never run against production.
Read the note -
SEPTEMBER 2026 SECURITY
Why real platforms should not be AI coded
Four platforms built this way, what happened to each, and why three of the four failures were the same one: nobody decided who was allowed to read the data.
Read the note -
SEPTEMBER 2026 OWNERSHIP
Your developer disappeared. Here is what you actually own.
Five things to check today, what “we own the code” does not cover, and what is usually salvageable - which is more than people fear.
Read the note -
SEPTEMBER 2026 BUDGET
What a platform actually costs, and why nobody will tell you
The three bands I work in, what actually moves the number, and why the first figure anyone gives you is usually wrong.
Read the note -
SEPTEMBER 2026 DECIDING
When not to build custom software
Three times off-the-shelf wins outright, the point where it stops winning, and what each direction costs you.
Read the note -
JULY 2026 ARCHITECTURE
Fail open, fail closed - decide once, per dependency
Every external service you call will be down at some point. Whether that should stop your customer is a business decision, and it should be made deliberately rather than discovered during an outage.
Read the note -
JUNE 2026 DATA MODELLING
If you can derive it, do not store it
A stored total is a claim that can drift from the facts. A derived one cannot. This is the single change that has saved me the most support time across systems that count things.
Read the note -
MAY 2026 PRODUCT
The admin is the product
Customers see the public site for a minute. Staff live in the back office for eight hours a day. Almost every project I inherit has spent its budget the wrong way round.
Read the note