DEVELOPER NEWS STREAM
Direct logs, engine updates, and framework notifications parsed from curated RSS feeds and announcements, updated hourly.

Gabriel AnhaiaFunctional Options vs Builder vs Config Struct in Go: Pick One
Three ways to give a Go constructor more knobs without breaking callers. Each has a sweet spot. Most teams pick the wrong one and regret it later.

Gabriel AnhaiaA Worker Pool That Actually Drains on Shutdown: A Pattern for Go Services
defer wg.Wait() works for clean exits and falls apart on SIGTERM mid-flight. Here is a 60-line pool that drains in-flight work with a deadline.

Gabriel AnhaiaWhy time.After Is a Memory Leak in a Hot Path (And the Fix)
time.After in a select loop quietly piles up timers until each one fires. Go 1.23 helps. NewTimer + Stop + Reset is the real fix.

Gabriel AnhaiaTest Doubles in Go Without a Mocking Framework: 4 Patterns
Hand-rolled stubs, configurable fakes, httptest.Server, and testcontainers-go cover almost every Go test you will write. No mocking framework needed.

Gabriel AnhaiaGoroutine Leaks Don't Show Up in CPU Profiles. Here's What to Read Instead
A parked goroutine burns zero CPU, so flame graphs miss leaks entirely. Read goroutine.pprof, set a NumGoroutine baseline, and gate CI with goleak.

Gabriel Anhaiaio.Reader Composition: Build a Logging Pipeline From Stdlib Pieces
Around 50 lines of Go that log, gzip, and forward HTTP bodies. No third-party deps. Just io.Reader and io.Writer composed like Lego.

Gabriel AnhaiaWithTimeout vs WithDeadline: The Go Bug You Cannot Unit-Test
WithTimeout silently shrinks under a parent deadline. WithDeadline propagates one budget. The difference shows up only in production.

Gabriel AnhaiaGeneric Constraints in Go: comparable, ~int, and the Trap of Underlying Types
any, comparable, cmp.Ordered, and the tilde. Four type-set constructs that decide whether your generic Go code compiles, and what it forgets.

Viktor LogvinovReimplementing COMMAND.COM in Go for Unix-like Platforms: Challenges and Solutions
Introduction Reimplementing COMMAND.COM in Go for Unix-like platforms is more than a...

lignumqtWrapping Long-Running Go Functions with a Single Call
Every CLI tool eventually needs the same thing: show the user that something is happening, print...

Amit TimalsinaHow We Built an AI Screenplay-to-Storyboard Pipeline in Go
We built StoryBirdie — a tool that takes a screenplay file and turns it into a complete storyboard...

Bala ParanjStop Indenting — 6 Patterns for Flattening Nested if/else in Go
Every level of indentation is a level of mental context the reader must hold. Three levels deep and...

StrandBuilding a Firecracker VM Orchestrator in Go - Part 2: API Server
Introduction If you missed the first post in this series, start here. It covers the...

Vincent AbolarinHow to add monitoring to gocron scheduled jobs in Go
gocron is the most widely used job scheduling library in Go. It handles the hard parts of scheduling...

Gabriel AnhaiaA Lock-Free Counter in Go: atomic, sync.Map, or Just a Mutex?
Three Go counters under contention. atomic wins for one hot counter. mutex is fine for batched updates. sync.Map almost never earns its keep.

Gabriel Anhaiago.mod replace Directives: When They Save You and When They Trap You
replace lines in go.mod earn their keep in three situations and silently betray you in two. Here is how to tell which kind you have.