Blog
-
Event Sourcing: The Database That Refuses to Forget
Most databases are designed to forget. Event sourcing flips the model: store the history and derive the present from it. What it actually is, why payments people care, how it differs from event-driven architecture, and when a humble history table is the better call.
-
Understanding Domain-Specific Languages
You already use domain-specific languages every day, you just don't call them that. A ground-up guide to DSLs: what they are, the two kinds that exist, how they work under the hood, when to build one, and when to run.
-
OWASP Top 10 (2025): A Practical Guide for Every Backend Engineer
The 2025 OWASP Top 10 is a map of how your application will most likely be breached. A language-agnostic, backend-focused walk through all ten categories, the mistakes behind them, and the habits that fix them.
-
The DNA of Exceptional Software Engineers (Part 1)
Exceptional engineers aren't defined by the technologies they know, but by the traits they cultivate. Part 1 unpacks the first three genes: curiosity, systems thinking, and first-principles thinking.
-
Best of Both Worlds: Combining REST and gRPC in Microservices
REST at the edge for browsers and partners, gRPC inside for speed and contracts. Here is how the gateway pattern works, and the parts that bite once you run it.
-
QUERY: A New HTTP Method for Search Requests
GET can't carry a body and POST throws away caching and safe retries. RFC 10008 adds QUERY, a safe, idempotent method built for search.
-
Your database and Kafka are lying to each other
The transactional outbox pattern fixes the dual-write problem between your database and Kafka without pretending distributed commits are easy.