Agent Client Protocol (ACP) Explained: The LSP for AI Coding Agents

AI coding agents are becoming more capable, but the way they connect to editors is still surprisingly fragmented. Imagine that an editor wants to support five coding agents. Without a shared protocol, the editor may need five custom integrations. Each integration has to handle prompts, streamed responses, file access, terminal output, tool calls, permissions, diffs, session history, and cancellation. The same problem exists on the other side. An agent developer who wants to support five editors may need to implement five different editor APIs. ...

July 24, 2026 · 13 min · Nitin
Abstract illustration of DSpark routing confident drafted tokens through a verification scheduler

DSpark Explained: DeepSeek's Confidence-Scheduled Speculative Decoding

DeepSeek recently open-sourced DeepSpec, a codebase for training and evaluating speculative decoding draft models, along with the DSpark paper and checkpoints. I wanted to understand what is actually new here, because speculative decoding itself is not new. The older idea is already powerful: use a small draft model to propose tokens, then let the large target model verify them. I explained that foundation in Speculative Decoding Explained. DSpark is interesting because it attacks two practical problems that show up when speculative decoding moves from a paper idea into production serving: ...

June 29, 2026 · 11 min · Nitin
Abstract illustration of a small draft model proposing tokens and a large target model verifying them

Speculative Decoding Explained: How LLMs Generate Faster Without Changing the Answer

Speculative decoding is one of the most important tricks behind fast LLM serving. The basic idea is simple: Use a small fast model to guess several future tokens, then use the original large model to verify those guesses in one pass. If the guesses are right, the large model moves forward by multiple tokens instead of one. If a guess is wrong, the large model corrects it and the system continues. ...

June 29, 2026 · 11 min · Nitin
KV cache during LLM inferenceA decoder-only transformer reuses cached key and value vectors while a new token adds one new key-value row during decode.KV Cache in LLM InferenceReuse old keys and values. Compute only the new token.Prompt tokensThecodeisnewTransformer blockQKVlatest query attendsover cached K/VKV CacheKeysValuesappend one row per generated tokenno full recompute during decode

KV Cache Explained: Why LLMs Remember Keys and Values During Inference

The KV cache is one of those LLM inference terms that sounds simple until someone asks you to explain it from first principles. At a high level, the idea is: During generation, a transformer stores the previously computed key and value vectors, so it does not recompute them for the whole sequence every time it predicts the next token. That is the short answer. But the short answer hides the important part: why keys and values are reusable, why queries are not cached in the same way, and why this matters so much for latency. ...

June 17, 2026 · 10 min · Nitin

Chrome DevTools MCP: How Coding Agents Debug Real Browser Sessions

Coding agents are useful when they can read code, edit files, run tests, and explain errors. But web development has a problem that does not fit neatly inside the file system: the real bug often lives in the browser. A React component may look fine in code but overflow on mobile. An API call may fail only after a specific login state. A button may be present in the DOM but not clickable. A performance issue may come from layout shifts, long tasks, font loading, image decoding, or network waterfalls. A console error may point to bundled JavaScript that needs source maps to be useful. ...

May 31, 2026 · 13 min · Nitin

WebMCP Is the Quiet Google I/O Announcement That Could Make Web Apps Agent-Ready

Originally published on DEV.to as a submission for the Google I/O Writing Challenge. At Google I/O 2026, the loud announcements were easy to spot: Gemini 3.5, Antigravity 2.0, Android agents, AI Studio upgrades, and a lot of new ways to build software with AI. The announcement I kept coming back to was much quieter: WebMCP. The Chrome docs describe it as a proposed open web standard that can be tested locally behind a Chrome flag and explored with demo apps. ...

May 24, 2026 · 9 min · Nitin
Generated illustration of a TypeScript observability pipeline flowing through OpenTelemetry into dashboards and LLM tracing

OpenTelemetry (OTel) in TypeScript: How It Works and How Langfuse Uses It

When a production system fails, the hardest part is often not the fix. The hardest part is knowing where to look. That is the real value of observability. A service without observability feels like a black box. Requests go in, responses come out, and when something breaks we start guessing. With useful telemetry, that black box becomes closer to a glass box: we can see request paths, slow dependencies, errors, queueing, retries, model latency, token usage, and the exact step where a workflow fell apart. ...

April 27, 2026 · 16 min · Nitin

TTFT in LLMs Explained: What Time to First Token Really Measures

When I evaluate an LLM system, one of the first latency metrics I look at is TTFT, or time to first token. This metric answers a simple question: After a user sends a request, how long does it take before the first output token appears? That sounds narrow, but it matters a lot. Users usually forgive a response that streams steadily after it starts. What feels bad is the dead time before anything appears on screen. ...

April 17, 2026 · 7 min · Nitin

Claude Code Tools Explained: What Each Tool Does and When to Use It

When I use Claude Code, I am not just using a model that generates text. I am using a tool-driven coding environment that can inspect files, search code, edit content, run shell commands, and delegate work to subagents. That tool layer is the real reason Claude Code feels different to me from a normal chat UI. Instead of asking: Can the model explain my code? I can ask: Can the model inspect the repo, find the bug, patch the file, and run the command needed to verify the fix? ...

April 16, 2026 · 10 min · Nitin
LoRA fine-tuning cover illustrationA cover graphic showing a frozen pretrained matrix plus a small low-rank adapter update made of two trainable matrices.LoRA Fine-TuningLow-Rank Adaptation for LLMsFreeze the large pretrained weight. Learn a small structured updatethat changes the model just enough for the new task.W = W0 + (alpha / r)BAOne frozen path, one tiny trainable pathThe base model stays intact while adapters learn the task update.W0d_out x d_infrozenAr x d_inBd_out x rtrain only r(d_in + d_out) paramsWhy it matters1. Far fewer trainable parameters2. Much smaller optimizer state3. Easy task-specific adapter checkpoints

LoRA Fine-Tuning Explained: What It Is, Why It Works, and the Math Behind It

LoRA stands for Low-Rank Adaptation. It is one of the most useful ideas in modern LLM fine-tuning because it changes the question from: How do we update all of the model's weights? to: How do we learn a small update that is still expressive enough for the new task? That is the whole trick. Instead of fine-tuning every entry of a large weight matrix, LoRA keeps the original pretrained weight frozen and learns a low-rank correction on top of it. This makes training much cheaper in parameters, optimizer state, checkpoint size, and often VRAM. ...

April 5, 2026 · 11 min · Nitin