Method, published.
We do not hold the technique back as a sales hook. These are written to be executed, including by people who never hire us, because the value is in having done it before rather than in knowing that it exists.
- Data modelling16 min read
Double-entry accounting inside an application database
How to stop storing balances and start recording movements, so that every figure the business reports can be explained by the rows that produced it. The schema, the invariant, why entries are never updated, how to post from application events without double-posting, and what it costs when the ledger gets long.
- Architecture15 min read
Multi-tenant isolation that survives a forgotten WHERE clause
One missing predicate is all it takes for one customer to see another's data. Why application-layer filtering is not a security posture, how to make a shared schema genuinely safe with row-level security, the two settings that decide whether it works at all, and the places isolation still leaks after the database is correct.
- Validation14 min read
Proving re-implemented business logic with a parallel run
How to be sure a rule you rebuilt from a specification behaves like the one it replaces, when the specification is incomplete and the original is unreadable. Where to run the comparison, what to compare, how to read the differences, and what to do when the old system turns out to be wrong.
- Migration12 min read
Moving a live ASP.NET Web Forms application to modern .NET
The route-by-route method in full: what has to be true before the first page moves, how one identity and one session are held across two stacks, how re-implemented business logic is proved correct against the original, and what goes wrong. Written to be executed, including by someone who never hires us.