Writing

Go

17 writings

Go idioms, runtime internals, concurrency patterns, and production lessons from high-throughput backend services.

2026
Apr Designing Rate Limiters for Payment Systems
distributed-systems 838 words
How to build rate limiters that protect authorization infrastructure without rejecting legitimate traffic. Token bucket math, sliding window trade-offs, and the distributed coordination problem.
Understanding ISO 8583 Bitmap Parsing
payments 281 words
How payment networks encode field presence using primary and secondary bitmaps in binary messages.
Mar Go Error Wrapping Patterns
go 57 words
Wrap errors with what you were trying to do, not what went wrong. The original error already answers the latter.
Consistent Hashing in Distributed Caches
distributed-systems 229 words
Why naive modular hashing breaks when nodes join or leave, and how consistent hashing fixes it.
Why slog Over zerolog
go 51 words
slog is stdlib, zerolog is faster but the gap has closed. For new projects, slog wins on API clarity and zero dependencies.
Feb Why UUIDs Matter for Idempotency
payments 188 words
Using UUID v7 as idempotency keys in payment authorization to prevent duplicate processing.
2025
Dec Go Maps Iteration Order
go 759 words
Go maps have no iteration order guarantee. Output that looks sorted is bucket layout coincidence, not language behavior.
Aug Floating-Point Tolerance Testing in Go
go 880 words
When and why to use epsilon in floating-point comparisons, with practical Go examples and a reusable helper.
Runes, Bytes, and Graphemes in Go
go 398 words
len() counts bytes, []rune counts code points, neither matches what users see. Grapheme clusters are the unit humans actually read.
Jun Go Was Never Bad
go 725 words
The common criticisms of Go were always overstated. Generics arrived, error handling is fine, and simplicity was always the point.
How Goroutine Stacks Grow and Shrink
go 1263 words
Goroutine stacks start at 2KB, double on overflow, and shrink during GC. The mechanics of Go's contiguous stack model.
May Go Scheduler, Yield Points, and Infinite Loops
go 1326 words
When to use for{} vs goroutines, how the GMP scheduler cooperatively preempts, and why async preemption exists.
2024
Dec The comparable Constraint in Go Generics
go 1292 words
Why comparable exists, when to use it over any, and the compile-time guarantees it provides for maps and equality checks.
What Happens Before main() in Go
go 1830 words
Package initialization order, init() functions, dependency ordering, and what the runtime does before your code runs.
Nov Go Pointers and Memory Management
go 2383 words
Stack vs heap, pass-by-value semantics, escape analysis, garbage collection, and data race prevention with mutexes.
Go Constants Beyond the Basics
go 1367 words
Untyped constants, compile-time evaluation, big number precision, iota patterns, and the limitations that catch experienced developers.
Go's UTF-8 Identifier Limitation
go 876 words
Chinese characters work in Go identifiers but Tamil combining marks don't. A look at Unicode categories and the Go spec's design choice.
SCROLL
Substack GitHub Lets Meet! All Writings All Projects