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

Yussuf AjaoI Built a Tiny Database in Go to Understand How Real Ones Work
Most backend tutorials stop at the same point: put some data in a map, wrap it in an HTTP handler,...

Mrunank PawarAuthenticating CLI Tools With Descope
This blog was originally published on Descope. Need to add authentication to your command-line tool?...

Gabriel AnhaiaApplication Service vs Domain Service in Go: Two Layers, Different Jobs
Two layers, two jobs. Application services orchestrate use cases; domain services hold cross-aggregate rules. Mixing them is where Go hex services rot.

Gabriel AnhaiaThe Anaemic Domain Model in Go: 5 Anti-Patterns and Their Cures
If your structs are public-field bags and your services do all the thinking, you wrote a procedural program in a domain shape. Here are the 5 smells and the fix for each.

Gabriel AnhaiaSaga Orchestration in Go: A State Machine for Multi-Service Workflows
Make a multi-service order flow survive crashes. A Go state machine, compensation per step, idempotency keys, and Postgres-backed resumes.

Gabriel AnhaiaAggregate Identity in Go: UUID v7, ULID, or Snowflake?
Picking the right ID for your DDD aggregate roots in Go. UUID v4, v7, ULID, Snowflake — sortability, distribution, B-tree friendliness, decision rule.

Gabriel AnhaiaSpecifications in Go: Composable Query Predicates Without an ORM Leak
Predicate objects you can AND, OR, and NOT in domain terms — translated to SQL at the edge. The Specification pattern, in idiomatic Go.

Gabriel AnhaiaType-Driven Domain Design in Go: Encoding Invariants at Compile Time
Make invalid states unrepresentable. Three Go patterns that turn runtime bugs into compile errors: parse-don't-validate, states-as-types, phantom types.

Gabriel AnhaiaDomain Model vs Persistence Model: The Mapper Layer in Go
One Order aggregate with behaviour, one OrderRow flat enough to scan into. The mapper between them is what keeps the seam honest.

Gabriel AnhaiaThe Anti-Corruption Layer for a Legacy Database You Cannot Replace
You inherited a 2003 ERP schema with tflag1, dt_cre, and customer_v2. An ACL adapter keeps your fresh Go domain clean while the old DB stays put.

Gabriel AnhaiaThe Dependency Rule, Written as a CI Check in Go
Stop trusting code review to enforce hexagonal boundaries. Three ways to fail the build when domain imports infra.

Gabriel AnhaiaFunctional Core, Imperative Shell in Go: Where Side Effects Belong
Pure pricing in the middle, dirty I/O at the edges. The Go split that makes domain tests run in microseconds and integration tests rare.

Gabriel AnhaiaErrors as Domain Concepts: Typed Errors That Carry Meaning in Go
Domain errors deserve their own types. Infra errors stop at the adapter. Here is the pattern that keeps your Go domain honest.

Gabriel AnhaiaBounded Contexts in a Go Monorepo: How `internal/` Becomes the Boundary
Go's internal/ package mechanic refuses cross-context imports at build time. Use it to enforce DDD bounded contexts in a monorepo without a single linter rule.

Gabriel AnhaiaEvent Sourcing in Go: An Append-Only Store and a 200-Line Replay
Events are the source of truth, current state is a fold over events. The whole pattern fits in 200 lines of Go — append, replay, snapshot.

Gabriel AnhaiaCQRS in Go Without a Framework: Separate Read and Write Paths
CQRS is two paths through one service: a write side that protects invariants and a read side that answers queries fast, in plain Go.