Learn Code Camp

Your roadmap to mastering coding essentials and beyond.

Workspace illustration with code, diagrams, and AI concepts

Chrome DevTools Protocol (CDP) Explained: The Browser Debugging API Behind DevTools

Every web developer uses Chrome DevTools. We inspect elements, read console logs, watch network requests, throttle CPU, emulate mobile screens, record performance traces, check storage, debug JavaScript, and capture screenshots. Most of that feels like a browser UI. Under the hood, there is a protocol. That protocol is Chrome DevTools Protocol, usually shortened to CDP. CDP is the browser debugging API that lets tools instrument, inspect, debug, and profile Chrome, Chromium, and other Blink-based browsers. Chrome DevTools itself uses this protocol. Many automation and debugging tools also build on it directly or indirectly. ...

May 31, 2026 · 12 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

Firestore Listeners vs WebSockets: How Real-Time Updates Actually Work

Firestore has one of the most convenient real-time APIs in web and mobile development. We write a listener: import { collection, onSnapshot, query, where } from "firebase/firestore"; const q = query( collection(db, "messages"), where("roomId", "==", "general") ); const unsubscribe = onSnapshot(q, (snapshot) => { snapshot.docChanges().forEach((change) => { console.log(change.type, change.doc.id, change.doc.data()); }); }); After that, the UI updates whenever matching documents are added, modified, or removed. It feels similar to a WebSocket because the browser receives real-time updates without manually polling. But Firestore listeners and WebSockets are not the same abstraction. ...

May 3, 2026 · 13 min · Nitin

WebSockets Explained: How Real-Time Communication Works on the Web

Most web applications start with a simple request-response model. The browser asks for something, the server responds, and the connection is done. That model works well for pages, APIs, forms, dashboards, and most CRUD applications. But some features need something different: chat messages that appear instantly live sports scores multiplayer game state collaborative editing cursors trading prices delivery tracking real-time notifications terminal sessions in the browser For these features, repeatedly asking the server “anything new?” becomes wasteful and slow. ...

May 3, 2026 · 12 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
Universal Approximation Theorem cover illustrationA clean cover illustration with a shallow neural network on the left and a target curve with a close approximation on the right.Universal ApproximationSimple unitscompose intorich curvesshallow networksumtarget and approximationtargetapproximation

Universal Approximation Theorem Explained: Why Neural Networks Can Approximate Any Continuous Function

The Universal Approximation Theorem (UAT) gets quoted constantly, but it is usually described in a fuzzier way than it deserves. It does not say neural networks are magically good at every task. It does not say a shallow network is the most practical architecture. It does not say gradient descent will easily find the right weights. What it does say is still important: With a suitable nonlinear activation and enough hidden units, a feedforward network can approximate any continuous function on a bounded domain as closely as we want. ...

April 3, 2026 · 8 min · Nitin