Posts
Dependency Injection in Go Without Frameworks
Manual DI, functional options, Wire code generation, and why Go doesn't need Spring-style containers. Practical patterns for building testable, maintainable applications.
Why Our Microservice Needed a Circuit Breaker (And How We Built It)
Real latency cascades we encountered, how they took down our system, and the circuit breaker implementation that saved us.
When to Go Distributed: Real Talk on Building Systems with Go
After years building distributed systems, here's my honest take on when you should consider the complexity, and why Go excels when you do.
Context Propagation Patterns in Large Go Codebases
When to pass context, when not to, and the common mistakes that lead to leaked goroutines, missed cancellations, and debugging nightmares.
Structuring a Go Monolith So It Can Become Microservices Later
Practical module boundaries, package organization, and the patterns that make future decomposition possible without rewriting everything.
Simplified Clean Architecture in Go
A practical guide to implementing Clean Architecture in Golang with real examples and best practices for building modular, testable backend services.
Building REST APIs with Go
Learn how to build production-ready REST APIs using Go's standard library and best practices.
Understanding Go Interfaces
A deep dive into Go's interface system and how it enables polymorphism and flexible code design.
Getting Started with Go
An introduction to the Go programming language and why it's great for building web applications.
Designing Service Boundaries and API Contracts
Where you draw service boundaries — and how you treat the contracts between them — decides whether a system is genuinely decoupled or a distributed monolith wearing microservice clothes. On data ownership, coupling, and evolving contracts without breaking consumers.