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.

aigo

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.

gophp

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.

backendapi

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.

devopsnginx

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.

backend

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.

backendapi

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.

backendpostgresdatabase

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.

backendapi

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.

gobackend

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.

phpgobackend

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.

awsgcpcloud

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.

godebuggingbackend

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.

meta