Articles
Notes, tests, and arguments.
A tutorial should do more than run, and an explanation should do more than agree with the first page of search results. These are my arguments about developer content, documentation, and the AI systems I build around them.
Writing Release Notes That Developers Trust
Write release notes that let developers assess upgrade risk, understand product impact, and migrate without surprises.
How to Write a Technical Tutorial That Actually Teaches
Write a technical tutorial that takes one reader from a clear starting point to a tested, useful result.
Developer Onboarding Documentation: End It in a Merged Change
Developer onboarding documentation should take a new engineer from a clean machine to a safe first merged change, with one setup path and a check after each step.
Technical Writing for AI Products: The New Rules
AI product docs now need prompts, schemas, evals, and version boundaries. I explain the rules I would use to judge a technical writer for an AI company.
How to Write a Changelog That Developers Actually Read
Write a changelog that helps developers assess an upgrade, find breaking changes, and understand what each release means for their code.
Hybrid Search: Combining BM25 and Vector Search
Hybrid search combines BM25 sparse retrieval with dense vector search. Here's how reciprocal rank fusion works, what it costs, and when the combination actually beats either method alone.
Semantic Caching: The RAG Optimization Nobody Talks About
Semantic caching returns cached LLM responses for semantically similar queries, cutting API costs by 40-70% on the right workloads. Here's how the mechanism works and where it fails.
Structured Outputs with LLMs: JSON Mode, Function Calling, and When to Use Each
JSON mode, function calling, and structured outputs solve different problems. Here's when each one actually makes sense and what they cost you.
How Anthropic's Contextual Retrieval Changes RAG Architecture
The mechanism changes what gets indexed before the RAG pipeline runs a query.
Reranking in RAG: Why Your Top-K Results Are Probably Wrong
Vector databases return results based on semantic similarity. I explain why that is rarely enough for production RAG and how a cross-encoder reranker fixes the problem.
Vector Embeddings: A Guide to the Geometry of Meaning in AI
Everything in AI starts with a vector. Here is how embedding models turn human language into high-dimensional geometry, why dimensionality reduction matters, and how to choose between OpenAI, Cohere, and self-hosted models.
LLM Context Windows Explained: Why More Is Not Always Better
Context windows are expanding to millions of tokens. Here is why the middle of your context still gets ignored, what long context actually costs, and how to build production systems that use these massive windows effectively.
Mixture of Experts: How MoE Models Cut Computation but Need More Memory
DeepSeek V3 has 671B parameters but only activates 37B per token. Here's how mixture of experts works, why it cuts inference costs, and the catch nobody puts in the headline.
The Best LLMs for Coding in 2026: An Engineering Review
Not all models are created equal for software development. Here is a benchmark-backed guide to choosing the right LLM for autonomous agents, algorithmic logic, and repository-scale refactoring as of March 2026.
Model Context Protocol (MCP): Connecting AI Tools
Model Context Protocol (MCP) is the new standard for connecting AI models to data sources and tools. Here is why it matters, how it works, and why it is the missing link for agentic infrastructure.
Agent Harnesses: The Infrastructure Your LLM Agent Needs
Every production AI agent needs a harness. Here is what one contains, why frameworks often are not enough, and how to build the layer that actually determines reliability.
Time to First Token (TTFT): The Metric That Determines AI Snappiness
Users do not care about total throughput. They care about how fast the first word appears. Here is the engineering guide to measuring and optimizing Time to First Token (TTFT) in production.
Speculative Decoding: Speeding Up LLM Inference
LLM inference is memory-bound, not compute-bound. Speculative decoding uses this fact to speed up generation by 2-3x using a smaller draft model to predict tokens for a larger one.