I Audited My Own Payment Ledger Like It Held Real Money. The Front Door Was Wide Open.Jul 8, 2026·10 min read
I Push to Main and Ninety Seconds Later It Is Live. Here Is Every Step in Between.No SSH, no checklist, no remembering the one command I always forget. Just git push, and production updates itself. This is exactly how that pipeline is wired, and how you can build the same one for a plain server.Jul 9, 2026·8 min read·4
The Claude Code Setup I Actually Use: 28 Plugins, Skills, and MCPs Worth Your TimeJul 8, 2026·20 min read·14
Distributed Tracing for a Go Service: One Request, One Thread You Can PullA payment felt slow and my logs couldn't tell me why. This week I gave the ledger a way to follow a single request from the HTTP handler all the way down to the SQL query.Jul 7, 2026·8 min read·4
Adding gRPC to a Go Ledger Service: Why Both REST and gRPC, and How to Share the DomainBolting a second API onto the ledger sounded like double the work, until I realized the interesting part was making sure it was zero new business logic.Jul 2, 2026·7 min read
Idempotency Keys and the Immutable Audit Log: Two Patterns That Make Fintech APIs Boring (In a Good Way)You have tapped Pay twice when the app froze and then held your breath. This week I built the two things that mean you never get charged twice, and that anyone can prove it later.Jul 2, 2026·9 min read
Designing a REST API for a Payment Ledger: Resources, Verbs, and Why I Avoided GraphQLThe running-balance line in your banking app looks like a stored number, but building it taught me more about pagination and window functions than any tutorial ever didJun 29, 2026·10 min read·6
Atomic Transaction Posting in Go: Getting Balance Invariants Right Under ConcurrencyAn afternoon where one in six payments mysteriously failed, and the one-line database change that fixed it taught me more about Postgres than a year of reading docsJun 29, 2026·9 min read
Postgres Schema for a Multi-Tenant Ledger: The Trade-offs No One Talks AboutYour bank balance is not a number someone saved, it's a question the database answers by adding up your whole history, and that one design choice decides almost everything elseJun 29, 2026·9 min read·1