Building Type-Safe AI Integrations: Validating LLM Output with TypeScript and ZodThe first time I wired an LLM call into a production TypeScript service, I made an assumption that cost me a debugging afternoon: I trusted the response to come back in the shape I asked for. It mostlSep 15, 2026·4 min read·6
"What Production-Grade Engineering Actually Means (Lessons From Four Different Failures)"Four things I wrote about recently look unrelated on the surface: API versioning, idempotent payments, Kubernetes, technical debt. Put them side by side and they're actually the same lesson, told fourSep 7, 2026·2 min read·4
Kubernetes for .NET Developers: What You Actually Need to KnowKubernetes has a reputation among application developers as something owned entirely by platform or DevOps teams, a black box you deploy into and otherwise ignore. I've worked on a distributed BNPL plSep 4, 2026·4 min read·19
Idempotency in Payment APIs: Why It's Non-Negotiable in FinTechA network blip that would be a minor annoyance almost anywhere else becomes a genuine incident when the request in flight is moving someone's money. On remittance and insurance platforms, I've seen exSep 3, 2026·4 min read·17
API Versioning Strategies That Don't Break Your ConsumersThe first time I had to make a breaking change to a live API with real, external consumers, I learned a lesson the hard way: it doesn't matter how good your new design is if it takes down someone elseSep 2, 2026·3 min read·26
After A Decade of ExperienceI've had a lot of conversations with developers over the years. Mentoring sessions, Podcast sessions, late-night messages when someone's stuck on a bug, conversations after meetups that go longer thanAug 31, 2026·4 min read·4
Background Jobs in .NET with HangfireNot every piece of work belongs in the request-response cycle. Sending a confirmation email, generating a report, syncing data with a third-party service, none of that needs to happen before you returAug 28, 2026·4 min read·7