Blog
MergePatchDto: A Smaller PATCH Shape for .NET
JSON Patch, DTO-shaped PATCH requests, explicit nulls, missing properties, allowlists, and the gap in many ASP.NET Core APIs.
Make Product State Explicit
Workflow booleans, status fields, transitions, timestamps, retries, and the product-state bugs that appear when rules stay implicit.
Transactional Outbox: What to Put in Events
Transactional outbox, eventual consistency, notification events, event-carried facts, replay, payload size, and message-shape tradeoffs.
Common Concurrency Patterns in .NET Applications
Lost updates, retries, row versions, unique constraints, transactions, and the concurrency bugs hiding in ordinary .NET apps.
Payment Is Not Delivery: A Simple Model for Digital Goods
Payment capture, webhooks, callbacks, idempotency, access records, and the boundary around digital product delivery.