Blog
Technical notes on real problems in web systems: databases, APIs and integrations.
A transactional outbox in PostgreSQL: the write, the audit entry and the events in one transaction
How to avoid lost events and duplicate orders with an outbox, an idempotency receipt and FOR UPDATE SKIP LOCKED, in Node.js and TypeScript.
Read the article36 themes and no unreadable text: WCAG contrast checked by a script
How this portfolio switches between 36 light and dark themes without a flash, using CSS variables and Tailwind, and a Node script that fails any color below AA contrast.
Read the articleA due date is not an instant: four kinds of time in PostgreSQL and TypeScript
timestamptz, date, time and timestamp hold different things. Two time zone bugs, and how branded types in TypeScript prevent both.
Read the articleReading amounts from a PDF by position, not by text order
On forms with side-by-side boxes, text extraction swaps the values. How to find each number by label and position with pdfplumber, and why read it three times.
Read the article