DevOps
A Backup You Have Never Restored Is a Rumour
The backup completed every night and the restore failed in the first hour of the drill. A backup is a claim about the future restore, and claims that are…
Method rather than tooling: forming a hypothesis, choosing the cheapest experiment that falsifies it, and finding the wrong assumption underneath a bug.
DevOps
The backup completed every night and the restore failed in the first hour of the drill. A backup is a claim about the future restore, and claims that are…
Opinion
Removing blame from incident reviews also removed accountability, and now the same decision recurs quarterly with a new author.
Security
The allowlist checked the extension, and the extension is the one field the attacker writes. A renamed payload sails through, and if the upload is served…
Opinion
Debt implies a known principal, a rate and a repayment plan. Most of what we call technical debt is none of those.
Security
Sequential order IDs are a public counter of your volume, and they make every authorisation bug trivially exploitable.
Opinion
Coverage counts executed lines, and a test can execute a branch while asserting nothing about it. The number rises while the protection stays flat, which is…
Error Autopsy
The process could not fork despite plenty of free memory, and the error says resource temporarily unavailable. The resource is not RAM.
DevOps
The node upgrade stopped at one node and the drain sat for hours. A Pod Disruption Budget with minAvailable equal to the replica count means nothing can…
Tooling
Manual bisection is careful, slow and error prone. Automated bisection with a script that returns the right exit codes finds the offending commit in log…
Shopify
An automatic discount and a code were never meant to combine. They did, because combinability is a setting with a permissive default, and the margin on…
Security
The codebase was fully parameterised except one helper that interpolated a column name into an orderBy. That single string was the injection, and the ORM…
Tooling
Grepping a wall of journal output loses the structure the journal already keeps. It is a queryable database of structured fields, and the queries take…