Writing on Go, Docker, Kafka, and System Design

Technical notes on backend engineering, distributed systems, practical architecture decisions, and production-ready software.

Testing in Go: Unit Tests, Benchmarks, Race Detection, Fuzzing, and What the Output Means

A practical guide to Go's testing toolchain, from unit tests and table-driven tests to coverage, benchmarks, race detection, fuzzing, and how to read the output correctly.

Read article →

Building Boyo: From AI Story Form to Storycraft MVP

How a small AI story form evolved into Boyo, a child-centered storybook MVP with a library, creator flow, story detail page, reading experience, and a deeper storycraft pipeline.

Read article →

Graceful Shutdown in Go: Building a Small Lifecycle Lab

A practical walkthrough of graceful shutdown in Go using a small lifecycle lab with SIGINT, SIGTERM, slow requests, readiness draining, workers, timeouts, and failure scenarios.

Read article →

Go Deadlocks: When Simple Concurrency Waits Forever

A practical guide to deadlocks in Go, from channel misuse and WaitGroup mistakes to mutex failures and the deeper problem of waiting without guarantees.

Read article →

Go Syntax Changes by Version

A version-by-version guide to the Go releases that actually changed Go syntax and language semantics, from type aliases and number literals to generics and loop semantics.

Read article →

RabbitMQ vs Kafka: Moving Work or Storing Events?

A practical comparison of RabbitMQ and Kafka through the lens of task distribution versus durable event history.

Read article →

Understanding context.Background() in Go

Why context.Background() matters in Go, where it belongs, and how misusing it breaks cancellation, deadlines, and request-scoped behavior.

Read article →

Kafka: Start Simple, Then Scale the Idea

A practical mental model for understanding Kafka from simple service calls to partitions, consumer groups, replay, and operational complexity.

Read article →

Understanding Docker: Containers, Images, Layers and the System Behind Them

A practical mental model for understanding how images, containers, layers, volumes, networks, and Compose fit together.

Read article →

Why Go Became My Favorite Programming Language

How a migration project, struggles with Node.js and Python tooling, and Go's opinionated ecosystem changed the way I think about programming languages.

Read article →

Why Another System Design Framework? The Real Gap Between Architecture and Delivery

Modern teams know system design, but still struggle to convert architecture intent into measurable, executable delivery decisions.

Read article →

Foundry: A Practical Methodology for Turning System Design into Engineering Decisions

Foundry is a five-stage framework for converting architecture ideas into measured, executable system decisions.

Read article →