Writing
Notes from
production.
Problems solved on real, shipped systems — not generic advice with a made-up case study attached.
Aug 11, 2026
Core Web Vitals in production: what actually moves LCP, INP, and CLS
Lighthouse gives you a score. It doesn't tell you which of the twenty things it flagged will actually move the number a real visitor experiences. Here's what does, in rough order of impact.
Jul 28, 2026
What a financial ledger API actually needs: auditability over cleverness
Debt and credit tracking looks like a simple CRUD problem until someone asks "why does this balance say what it says." That question is the whole design spec.
Jul 14, 2026
Designing role-based access for multi-stakeholder platforms
When several different kinds of user share one system, the tempting shortcut is a permissions flag on everything. It doesn't survive the third role. Here's the structure that does.
Jun 30, 2026
Migrating a Python API from Flask to FastAPI: what actually changes
FastAPI isn't a drop-in replacement for Flask — it changes how request handling, validation, and concurrency work. Here's what mattered in practice, migrating a live public-sector API.
Jun 16, 2026
Verifying payment webhooks properly: the check most integrations skip
A webhook endpoint that trusts its own payload is a fraud vector wearing a checkout flow. Here's what signature verification actually needs to do, and where I've seen it done wrong.
Jun 2, 2026
Why I self-host speech-to-text instead of paying per minute
Cloud STT bills scale with usage in a way that breaks a live-classroom product's economics. Running faster-whisper on your own hardware changes the calculation entirely.