Unit Testing in .NET with xUnit and MoqI inherited a codebase once where the previous team was proud of their test coverage number, ninety-something percent. I spent a week making a change that should have been routine, and the tests didn'Sep 10, 2026·3 min read·6
"What Production-Grade Engineering Actually Means (Lessons From Four Different Failures)"Sep 7, 2026·2 min read·4
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·15
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·18
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·5
Code Review Culture: How to Give Feedback That Improves CodeI've sat on both sides of enough code reviews to notice a pattern: the teams that ship the most reliable code aren't the ones with the strictest reviewers. They're the ones where code review actually Aug 27, 2026·4 min read·5
Caching Strategies with Redis in .NET ApplicationsCaching has a reputation for being simple: store the result, skip the expensive work next time. In practice, it's one of the areas where a well-intentioned shortcut most often turns into a subtle prodAug 26, 2026·4 min read·6