02 Nov 2026
I have written two things that both get called chains, and only one of them is Chain of Responsibility. The difference between them is whether anything in the chain is allowed to stop it.
More …
31 Oct 2026
Both systems issued their own reference numbers, and both had sites with the same two-letter code. Changing a code that customers read means rewriting every row that ever printed it, and that is before trailing spaces quietly mangled a few thousand account codes.
More …
29 Oct 2026
A migration you can only run once is a migration you cannot test. Ours ran against live data as often as we liked and threw it all away afterwards, which is the only reason the real one was boring.
More …
27 Oct 2026
You cannot bring a ledger entry across until its account exists, because until then the account has no new identifier for the entry to point at. The foreign keys decide the running order, and then you write that order down once.
More …
25 Oct 2026
The obvious shortcut is to add a number to every identifier and call it done. Here is why that falls over, and what we used instead: more than forty tables whose only job was to remember what became what.
More …