Blog
Writing
July 3, 2026
What I learned building a RAG pipeline in Go
A weekend project to search internal docs with plain-language questions taught me that chunking and data hygiene matter more than which model you pick.
June 26, 2026
What actually changed after six months of writing Go
A follow-up to the original PHP-to-Go post: what held up, what surprised me, and what I would tell myself starting over.
June 19, 2026
Rate limiting a public API: token bucket vs sliding window
Two common rate-limiting algorithms, what they actually do differently, and which one fits a bursty public API.
June 12, 2026
Zero-downtime deploys on a single VPS
No Kubernetes, no load balancer, just nginx and a build step. Here is what it actually takes to avoid downtime on deploy.
June 5, 2026
Feature flags without a vendor: a minimal in-house approach
You don't need LaunchDarkly to ship behind a flag. A config table and a small helper function gets you most of the way there.
May 29, 2026
Writing idempotent API endpoints (and why it matters for retries)
Clients retry on timeouts whether you plan for it or not. Idempotency keys are how you stop that from double-charging someone.
May 22, 2026
What actually breaks when you scale a Postgres-backed API
Connection pool exhaustion, missing indexes, and N+1 queries: the three things that actually bite you first.
May 15, 2026
API versioning strategies that don't turn into a mess
URL versioning, header versioning, or none at all: what actually holds up once an API has real external consumers.
May 8, 2026
Structuring a Go project past the "just main.go" stage
A single main.go works fine until it doesn't. Here's how I organize Go services once they outgrow one file.
May 1, 2026
What actually changes when you move from PHP to Go
The parts of the PHP and Laravel mental model that transfer to Go, and the parts that do not.
April 24, 2026
AWS Lambda vs GCP Cloud Run: picking the right serverless model
Notes from running the same workload on both, and the tradeoffs that actually mattered once real traffic hit.
April 17, 2026
Debugging a goroutine leak in production
A slow memory climb in a Go service turned out to be goroutines parked on a channel that never closed. Here is how we tracked it down.
April 10, 2026
Hello, World
Why I am starting this blog, and what I plan to write about: backend systems, cloud architecture, and the stuff that breaks in production.