Thoughts & insights
Writing about software engineering, system design, and the technologies I work with daily.
AI Terminology for Developers — Part 2: RAG, Tools, and Agents
The system-level vocabulary: retrieval pipelines, chunking and reranking, tool use, structured outputs, MCP, what actually makes something an agent, and when fine-tuning beats prompting.
AI Terminology for Developers — Part 1: Tokens, Context, and Embeddings
A plain-language glossary of the LLM vocabulary that actually shows up in your code: tokens, context windows, embeddings, sampling, caching, and the latency numbers users feel.
Frontend Performance — Part 2: Shipping Less JavaScript
The fixes: code splitting that follows real routes, cutting hydration cost, image and font strategy, containing third-party scripts, and keeping interactions under 200ms.
Frontend Performance — Part 1: Measuring What Actually Matters
Core Web Vitals explained without the marketing: what LCP, INP, and CLS measure, why lab scores disagree with real users, and how to instrument your own site with the web-vitals API.
Go from Basics to Advanced — Part 4: Generics, Profiling, and Performance
The final part of the Go series: type parameters and constraints, benchmarking with testing.B, reading pprof profiles, escape analysis, and tuning the garbage collector.
Go from Basics to Advanced — Part 3: Goroutines, Channels, and Context
Part three of the Go series: how goroutines actually schedule, when to use channels versus mutexes, worker pools, select, and cancellation that does not leak.
Go from Basics to Advanced — Part 2: Structs, Interfaces, and Package Design
Part two of the Go series: value vs pointer receivers, embedding, small interfaces defined by the consumer, and how to lay out a package so it stays testable.
Go from Basics to Advanced — Part 1: Syntax, Types, and the Toolchain
The first part of a four-part Go series: the type system, zero values, slices and maps, error handling, and the toolchain you get for free with every Go install.
Building Scalable Microservices with Go and gRPC
A deep dive into designing and implementing production-grade microservices using Go, gRPC, and modern distributed systems patterns.
Next.js App Router: Advanced Patterns for Production
Exploring advanced patterns and best practices for building production applications with Next.js App Router, React Server Components, and Server Actions.
TypeScript Tips That 10x Your Productivity
Advanced TypeScript patterns, utility types, and techniques that will make your code more type-safe and your development faster.