Architecture

UUID Versions Explained: Differences and When to Use Each One
UUID Versions Explained: Differences and When to Use Each One
A complete guide to UUID: we cover every version (v1, v3, v4, v5, v6, v7, v8), their differences and quirks. Learn which UUID version to pick for APIs, databases, and distributed systems. Generation examples in Go, Python, and JavaScript, with guidance on when to use timestamp-based, random, or name-based UUIDs.
gRPC in Go: Implementation and Sharing Proto Across Microservices
gRPC in Go: Implementation and Sharing Proto Across Microservices
How to implement gRPC in a Go project: creating proto files, generating code, setting up the server and client. We break down ways to share protobufs across microservices using git submodules, a separate repository, and buf registry. Practical examples from real experience.
How to Write Shitty Code in Go: Anti-Patterns and Examples
How to Write Shitty Code in Go: Anti-Patterns and Examples
A breakdown of Go anti-patterns using real production examples. Blocking channels in HTTP handlers, background jobs with race conditions, deadlocks, broken encapsulation. A practical guide to writing bad Go code.