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

Source Maps Explained: How They Work and Why They Sometimes Leak Source Code

Most developers only think about source maps when DevTools magically shows the original TypeScript instead of unreadable bundled JavaScript. That convenience hides an important fact: A source map is not just “debug metadata.” It is a translation table between generated code and original source code. And depending on how it is emitted, it can contain the original source itself. That is why source maps sit at the intersection of: debugging build tooling browser DevTools error reporting systems like Sentry security and accidental code exposure If you have ever wondered how a minified file can still produce readable stack traces, or how a published .map file can expose a package’s real TypeScript source, this is the mental model you want. ...

April 2, 2026 · 10 min · Nitin

How Adblock Extensions Work and How to Customize Their Behavior

When people think about adblock extensions, they usually imagine something simple: “The extension sees an ad and hides it.” That is only part of the story. Tools like uBlock Origin are better understood as content blockers, not just ad blockers. They do block ads, but they also block: trackers popups malware domains anti-blocker scripts other unwanted page behavior Modern blockers such as uBlock Origin mostly work by applying rules to: ...

March 29, 2026 · 9 min · Nitin

How We Added a Developer Tools Section in Hugo (Client-Side Only)

We recently added a dedicated Developer Tools section to Learn Code Camp and shipped multiple utility tools in one go. The goal was simple: Client-side only. Your data stays in your browser on this page. That requirement shaped every implementation choice. What We Added We added a new /tools section with these live tools: JSON Formatter + Validator Base64 Encode/Decode URL Encode/Decode UUID Generator (v4) Unix Timestamp Converter JWT Decoder Regex Tester Text Diff Checker Hash Generator (SHA-256, MD5) Why Client-Side Only? For utility tools, people often paste sensitive payloads: tokens, configs, logs, API responses, and JSON with private fields. ...

February 24, 2026 · 3 min · Nitin