Engineering Notes
Writing on backend systems, AI infrastructure, and production engineering.
I’m Gautham Surakanti, a Senior Backend Engineer with eight years building distributed systems in Go, Python, and Node.js. I write about the engineering problems I work through: authentication, performance, real-time systems, LLM infrastructure, and system design.
This page curates my strongest technical writing from KoffeeAndKode. The goal isn’t to list every post, but to highlight the pieces that best show how I think about backend engineering, production systems, and AI infrastructure.
What I write about
The problems that keep showing up in real backend work, and the ideas I keep returning to.
Backend Engineering
Services, APIs, and the reliability work that keeps them up.
Go
Concurrency, the runtime, and idiomatic design for production services.
Distributed Systems
Coordination, consistency, and failure modes across services.
Authentication & Authorization
OAuth 2.0, tokens, sessions, RBAC, and multi-tenancy.
AI Infrastructure
MCP servers, LLM evaluation, and AI features that hold up in production.
RAG Pipelines
Retrieval, grounding, and evaluation for LLM-backed workflows.
Real-time Systems
WebSockets, queues, and pub/sub for event-driven backends.
Performance Engineering
Profiling, query tuning, and caching for low-latency systems.
Databases & Caching
Data modeling, replication, and cache strategy under load.
System Design
Trade-offs, capacity, and designing systems end to end.
Featured articles
A curated set from KoffeeAndKode. Every link opens the full write-up, most with runnable Go.
Thundering Herd 0 to 1
The thundering herd from the bug to the fix: naive retry, exponential backoff, jitter, and singleflight, each as a small runnable Go program.
Read article ↗
Context 0 to 1
What context.Context actually does. Four tiny Go programs that walk from a leaking goroutine to a single cancel() that stops a whole tree of work.
Read article ↗
SOLID Principles 0 to 1
SOLID applied to real Go with packages, interfaces, and composition. Before-and-after code, plus a checklist for keeping services easy to change.
Read article ↗
Designing Data-Intensive Applications: Notes
Chapter-by-chapter notes on how data systems are built, replicated, partitioned, and made reliable.
Read notes ↗
System Design Interview: Notes
Working notes on designing distributed systems end to end: estimation, trade-offs, and the building blocks that recur.
Read notes ↗
The Go Series
An ongoing series on Go: language fundamentals, concurrency, the runtime and scheduler, and idiomatic design.
Browse series ↗
Selected engineering areas
Where my writing and my day-to-day work overlap: the systems I build and reason about in production.
Reliable backend systems
Services that degrade gracefully. Retries, idempotency, backpressure, and clean failure modes.
AI features that survive production
MCP test infrastructure with PII scrubbing, LLM evaluation, and RAG pipelines built for reliability, not demos.
Performance under real load
Profiling and caching behind sub-second clinical screens and a LOINC lab-normalization pipeline.
Auth, identity, and multi-tenancy
Auth0 multi-tenant architecture, OAuth 2.0, and session and token design done safely.
Real-time workflows
WebSocket events powering live Smart Summary updates, plus queues and event-driven design.
Learning from foundational books
Notes from Designing Data-Intensive Applications and the system-design volumes, applied to real work.
KoffeeAndKode
KoffeeAndKode is my broader technical notebook, where I publish notes, prototypes, and short essays on backend engineering, Go, distributed systems, and books like Designing Data-Intensive Applications.