Blog
How I build and run production software.
Technical routes, tradeoffs and the mistakes, written from real projects.
29 September 2026
NearBuild: turning one council PDF into a searchable map
Auckland Council only publishes resource consent applications as a 300-page PDF. This is how I parse it every hour, keep the data honest, and put it on a map by address.
28 September 2026
Moving our static sites to CloudFront and private S3, then fixing a $39-a-day request bill
One CloudFormation stack per site, byte-level verification, a DNS cutover you can roll back, and the caching mistake behind 94% of our CloudFront requests.
20 September 2026
Kivoza: small file tools that say where your file goes
Seven small sites from one repo: image, OCR and PDF tools that run fully in the browser, and a Markdown converter that uploads only four formats, with consent, to a locked-down container.
7 September 2026
Rebuilding a tax app: golden assertions first, then 1,070 numbers against the old system
How I rebuilt PayTaxNZ from Laravel to a TypeScript monorepo without trusting myself: a pure tax engine, 186 assertions written before code, and a field-by-field reconciliation with zero unexplained differences.
30 August 2026
Money code in a church app: integer cents, advisory locks and idempotency keys
Giving, refunds, recurring plans and venue deposits look like simple forms. Under them are five rules that stop double charges, lost refunds and leaked data.