CQRS and Event Sourcing: The Real Trade-offs
When CQRS pays off, when Event Sourcing makes it worse, and when plain CRUD is the right call. With TypeScript examples and the anti-patterns to avoid.
Notes on software, architecture, and the details that make systems work. Written from experience, shared for the next build.
When CQRS pays off, when Event Sourcing makes it worse, and when plain CRUD is the right call. With TypeScript examples and the anti-patterns to avoid.
When a producer outpaces its consumer — Node streams, Go channels, Rust async, RxJS, and Kafka consumer lag. The patterns that actually keep memory in check.
A realistic playbook for replacing a legacy system in place — routing, dual-write, shared data, team slicing, and the order of operations that actually ships.
How Postgres actually stores rows — tuples, xmin/xmax, HOT updates, table bloat, and why VACUUM is the most misunderstood command in your database.
Conventional Commits, small PRs, review culture, and the PR templates people actually fill out — how to review code so the next developer (including future-you) can still move fast.
A comprehensive guide to RESTful API endpoint design — covering HTTP methods (GET, POST, PUT, PATCH, DELETE), URL structure, status codes, pagination patterns, error handling with RFC 7807, and real-world implementations in TypeScript, Java, Python, and C#.
A comprehensive guide to database diagrams — covering ERD notations (Chen, Crow's Foot, UML), drawing with Mermaid and PlantUML, real-world schema examples, and best practices for documenting database designs.
A comprehensive implementation guide to JWT for service-to-service authentication — covering signed JWTs between services, asymmetric keys (RS256/ES256) for distributed verification, token propagation patterns, and Node.js implementation.
A comprehensive guide to SPIFFE/SPIRE for workload identity in microservices — covering SPIFFE ID format, SVIDs, SPIRE architecture and components, Istio/Envoy integration, and zero-trust networking patterns.
A comprehensive implementation guide to OAuth 2.0 Client Credentials Grant for machine-to-machine authentication — covering the client credentials flow, token caching and refresh, scope and audience validation, and Node.js implementation with multiple identity providers.