Blog
Make Product State Explicit
A practical way to make product workflows easier to reason about by naming states, transitions, retries, and concurrency boundaries.
Transactional Outbox: What to Put in Events
A practical guide to outbox reliability, eventual consistency, notification events, event-carried facts, and payload tradeoffs.
Common Concurrency Patterns in .NET Applications
A practical introduction to concurrency bugs in web apps, database isolation terms, and the patterns that usually fix them.
Payment Is Not Delivery: A Simple Model for Digital Goods
A simple mental model for payment capture, webhooks/callbacks, idempotency, and the database records you need to safely deliver digital goods.