<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Durgesh Rai — Blog</title>
    <link>https://durgesh.dev/blog</link>
    <description>Writing on system design, web security, React, and software engineering.</description>
    <language>en-us</language>
    <atom:link href="https://durgesh.dev/feed.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Wed, 08 Apr 2026 01:29:59 GMT</lastBuildDate>
    
    <item>
      <title><![CDATA[Scaling and Load Balancers]]></title>
      <link>https://durgesh.dev/blog/scaling-and-load-balancers</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/scaling-and-load-balancers</guid>
      <description><![CDATA[Vertical vs horizontal scaling, load balancer architecture, health checks, SSL/TLS termination, active-passive failover, and geo-DNS.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[React Render Modes: Client, SSG, SSR, and RSC]]></title>
      <link>https://durgesh.dev/blog/client-vs-server-react</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/client-vs-server-react</guid>
      <description><![CDATA[Client-side React is still the default, but here's what SSG, SSR, and RSC actually buy you and when to reach for each.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[What Can the Modern Web Actually Do?]]></title>
      <link>https://durgesh.dev/blog/introduction</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/introduction</guid>
      <description><![CDATA[Most developers know fetch and localStorage. But browsers can do a lot more — sensors, Bluetooth, NFC, speech, and OS integration are all on the table.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[Data Partitioning]]></title>
      <link>https://durgesh.dev/blog/data-partitioning</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/data-partitioning</guid>
      <description><![CDATA[Why data must be distributed deterministically, how vertical and horizontal partitioning work, and when each type applies.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[Static Site Generation: How It Works from Scratch]]></title>
      <link>https://durgesh.dev/blog/static-site-generation</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/static-site-generation</guid>
      <description><![CDATA[How SSG works under the hood — from renderToStaticMarkup to build-time output — and when to reach for it over a framework.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[Sharding in Practice]]></title>
      <link>https://durgesh.dev/blog/sharding-in-practice</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/sharding-in-practice</guid>
      <description><![CDATA[How sharding works via routing, choosing a sharding key, the hot shard problem, cross-shard queries, and why sharding and replication work together.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[Server-Side Rendering: How Hydration Works]]></title>
      <link>https://durgesh.dev/blog/server-side-rendering</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/server-side-rendering</guid>
      <description><![CDATA[How SSR improves perceived performance, what hydration actually does, and where renderToString falls short compared to renderToPipeableStream.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[Routing Algorithms]]></title>
      <link>https://durgesh.dev/blog/routing-algorithms</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/routing-algorithms</guid>
      <description><![CDATA[The five properties of a good routing algorithm, and why round-robin, bucketing, and the mapping table each fall short of all five.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[Consistent Hashing]]></title>
      <link>https://durgesh.dev/blog/consistent-hashing</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/consistent-hashing</guid>
      <description><![CDATA[Hash functions, the consistent hashing ring, virtual nodes, binary search routing, a worked example, and performance at Google scale.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[Consistent Hashing: Operations and Internals]]></title>
      <link>https://durgesh.dev/blog/consistent-hashing-operations</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/consistent-hashing-operations</guid>
      <description><![CDATA[No-coordination property, adding and removing servers, cascading failure prevention, virtual node distribution, weighted nodes, and hash collisions.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[Architecture Decisions: Stateless Servers and Distributed Databases]]></title>
      <link>https://durgesh.dev/blog/architecture-decisions</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/architecture-decisions</guid>
      <description><![CDATA[Why app servers are stateless, how the database tier uses consistent hashing, SQL vs NoSQL sharding support, sessions, Cassandra's multi-master model, and where consistent hashing appears beyond databases.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hld</category>
    </item>
    <item>
      <title><![CDATA[React Server Components: What They Actually Are]]></title>
      <link>https://durgesh.dev/blog/intro-to-rsc</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/intro-to-rsc</guid>
      <description><![CDATA[RSC is not SSR 2.0 — it's a fundamentally different model. Here's what React Server Components actually are, why they exist, and how the React Flight Protocol works.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[Not All Browser APIs Are Created Equal]]></title>
      <link>https://durgesh.dev/blog/web-capabilities-maturity</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/web-capabilities-maturity</guid>
      <description><![CDATA[Not all web APIs are equal. Some work everywhere, some only in Chrome, and some not at all on iOS — no matter which browser icon you tap.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[RSC with Next.js: Server Components, Actions, and the Limits]]></title>
      <link>https://durgesh.dev/blog/rsc-with-nextjs</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/rsc-with-nextjs</guid>
      <description><![CDATA[Server components, server actions, mixing server and client components — RSC as it actually works in Next.js, not in theory.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[Origin Trials: Testing Experimental APIs With Real Users]]></title>
      <link>https://durgesh.dev/blog/origin-trials</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/origin-trials</guid>
      <description><![CDATA[Yellow APIs are experimental — they might change, get removed, or need a flag to work. Origin trials are how Chromium lets you test them with real users in production.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[Red APIs, the Standards Process, and Feature Detection]]></title>
      <link>https://durgesh.dev/blog/unsupported-and-future-apis</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/unsupported-and-future-apis</guid>
      <description><![CDATA[Red APIs don't exist in any browser yet — and some never will. Here is how the web standards process works, what happens when browsers disagree, and how to detect APIs at runtime.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[Five Resources for Staying on Top of Web Capabilities]]></title>
      <link>https://durgesh.dev/blog/web-capability-resources</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/web-capability-resources</guid>
      <description><![CDATA[Five resources that tell you what a browser API does, which browsers support it, and whether it is safe to use in production today.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[The Web API Landscape: What Exists Beyond the Basics]]></title>
      <link>https://durgesh.dev/blog/basic-capabilities-overview</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/basic-capabilities-overview</guid>
      <description><![CDATA[Hundreds of web APIs exist. Before getting into sensors, Bluetooth, and OS integration, here is a map of the major capabilities that are worth knowing about even if you never dig in deep.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[How Browser Permissions Work]]></title>
      <link>https://durgesh.dev/blog/permissions-and-security</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/permissions-and-security</guid>
      <description><![CDATA[Before calling any sensitive browser API, the browser has to say yes. Here is how the permission model works — dialogs, engagement requirements, HTTPS, and what happens when a user says no.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[Permissions Policy and the Permissions API]]></title>
      <link>https://durgesh.dev/blog/permissions-policy-and-api</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/permissions-policy-and-api</guid>
      <description><![CDATA[Permissions Policy is an HTTP header that lets you lock down which capabilities are available on your site — including blocking them from third-party iframes like ads.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>web-capabilities</category>
    </item>
    <item>
      <title><![CDATA[memo, useCallback, and useMemo: When They Help and When They Don't]]></title>
      <link>https://durgesh.dev/blog/memo-usecallback-usememo</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/memo-usecallback-usememo</guid>
      <description><![CDATA[React re-renders are cheap — until they're not. Here's exactly when memo, useCallback, and useMemo actually help, and when they make things worse.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[useTransition, useDeferredValue, and useOptimistic]]></title>
      <link>https://durgesh.dev/blog/transitions-deferred-optimistic</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/transitions-deferred-optimistic</guid>
      <description><![CDATA[useTransition, useDeferredValue, and useOptimistic — React's three tools for keeping UIs responsive while expensive or async work runs in the background.]]></description>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>intermediate-react</category>
    </item>
    <item>
      <title><![CDATA[What Is Functional-Light JavaScript?]]></title>
      <link>https://durgesh.dev/blog/what-is-functional-light</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/what-is-functional-light</guid>
      <description><![CDATA[Kyle Simpson's Functional-Light JavaScript starts where you already are — JavaScript you already write — and builds up without the jargon. Here's what that shift actually looks like in code.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>functional-light-js</category>
    </item>
    <item>
      <title><![CDATA[What Is MCP?]]></title>
      <link>https://durgesh.dev/blog/what-is-mcp</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/what-is-mcp</guid>
      <description><![CDATA[MCP — Model Context Protocol — is how you give LLMs real capabilities. What it is, why it exists, the difference between tools/resources/prompts, and why every developer needs to understand this now.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[The Learning Curve, Provability, and What's Ahead]]></title>
      <link>https://durgesh.dev/blog/the-fp-learning-curve</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/the-fp-learning-curve</guid>
      <description><![CDATA[Why functional code is mathematically provable, how to survive the learning curve, and a full map of the course ahead — with a live composition example to start.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>functional-light-js</category>
    </item>
    <item>
      <title><![CDATA[MCP Clients & Running Models Locally]]></title>
      <link>https://durgesh.dev/blog/mcp-clients</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/mcp-clients</guid>
      <description><![CDATA[MCP clients connect to your servers. Claude Desktop supports the full spec. Tome supports tools only. Ollama runs models locally. Here's how to pick your setup and what each client actually supports.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[Your First MCP Server]]></title>
      <link>https://durgesh.dev/blog/first-mcp-tool</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/first-mcp-tool</guid>
      <description><![CDATA[Build a working MCP server from scratch — npm init, installing the SDK and Zod, registering your first tool with input validation, and running it. Simpler than you expect.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[JSON-RPC in MCP]]></title>
      <link>https://durgesh.dev/blog/json-rpc-mcp</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/json-rpc-mcp</guid>
      <description><![CDATA[MCP uses JSON-RPC 2.0 under the hood. Learn what that means, how to manually send messages to your server, and what the tools/list and tools/call lifecycle looks like.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[Connecting Your MCP Server to Claude Desktop]]></title>
      <link>https://durgesh.dev/blog/claude-desktop-integration</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/claude-desktop-integration</guid>
      <description><![CDATA[Wire your local MCP server to Claude Desktop — edit claude_desktop_config.json, understand why you need the full node path, suppress deprecation warnings, and debug logs when things break.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP Tools That Call External APIs]]></title>
      <link>https://durgesh.dev/blog/external-api-tools</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/external-api-tools</guid>
      <description><![CDATA[Build an MCP weather tool using the Open-Meteo API. Learn how LLMs select tools, why you should limit tool count to under 40, and how tool descriptions prevent bad routing.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP Resources]]></title>
      <link>https://durgesh.dev/blog/resources</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/resources</guid>
      <description><![CDATA[MCP Resources let users push static context to the LLM — database schemas, files, documents. Build a resource that exposes a full SQLite schema, and understand when resources beat tools.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP Prompts]]></title>
      <link>https://durgesh.dev/blog/prompts</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/prompts</guid>
      <description><![CDATA[MCP Prompts register reusable instruction templates in your server — with parameters. Build a code review prompt that enforces a style guide and see how prompts differ from resources.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[Roots, Sampling, and Elicitation]]></title>
      <link>https://durgesh.dev/blog/advanced-features</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/advanced-features</guid>
      <description><![CDATA[Roots, Sampling, and Elicitation — three advanced MCP features still rolling out. What they do, which clients support them, and why Sampling in particular will be a game-changer.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[Building API-Based MCP Tools]]></title>
      <link>https://durgesh.dev/blog/api-tools</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/api-tools</guid>
      <description><![CDATA[Build an MCP server that wraps a real REST API — authentication headers, a reusable makeRequest helper, and registering tools for a GitHub-style issue tracker.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[Jobs-Based MCP Tool Design]]></title>
      <link>https://durgesh.dev/blog/jobs-based-tools</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/jobs-based-tools</guid>
      <description><![CDATA[The most important MCP design insight — don't map tools to API endpoints. Map them to user jobs. Fewer tools, more reliable results, less LLM chaos.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP Transport Options]]></title>
      <link>https://durgesh.dev/blog/transport-options</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/transport-options</guid>
      <description><![CDATA[Three ways MCP servers communicate — stdio for local, SSE (deprecated), and Streamable HTTP for remote. When to use each, how sessions work, and testing with the MCP Inspector.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP in Vibe Coding Workflows]]></title>
      <link>https://durgesh.dev/blog/mcp-in-workflows</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/mcp-in-workflows</guid>
      <description><![CDATA[Install GitHub, Neon, Playwright, and Context7 MCP servers into Claude Code. What effective AI-assisted development looks like in practice — and what human oversight still owns.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[MCP Security]]></title>
      <link>https://durgesh.dev/blog/mcp-security</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/mcp-security</guid>
      <description><![CDATA[MCP security — the Paperclip Golden Retriever problem, supply chain attacks, prompt injection via tool results, just-in-time access, and what you must check before installing any MCP server.]]></description>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>mcp</category>
    </item>
    <item>
      <title><![CDATA[The AI Dev Tools Landscape]]></title>
      <link>https://durgesh.dev/blog/ai-dev-tools-landscape</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/ai-dev-tools-landscape</guid>
      <description><![CDATA[Cursor, Claude Code, Codex, Gemini CLI — what each tool is for, how they differ, and why "which one should I use?" has a different answer depending on what you're doing.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[What Is Prompt Engineering?]]></title>
      <link>https://durgesh.dev/blog/what-is-prompt-engineering</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/what-is-prompt-engineering</guid>
      <description><![CDATA[What prompt engineering actually is, how LLMs work as token predictors, and why the same prompt can give 10 different answers.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Your Editor Should Get Out of the Way]]></title>
      <link>https://durgesh.dev/blog/your-editor-should-get-out-of-the-way</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/your-editor-should-get-out-of-the-way</guid>
      <description><![CDATA[Becoming great with VS Code is really about getting the mechanics out of your head so you can spend more of your attention on the actual problem.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vscode-power-user</category>
    </item>
    <item>
      <title><![CDATA[Context Window Management]]></title>
      <link>https://durgesh.dev/blog/context-window-management</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/context-window-management</guid>
      <description><![CDATA[Managing what's in the context window is the single biggest lever for AI coding quality. Here's how to think about it and what to do about it.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Temperature and Top P]]></title>
      <link>https://durgesh.dev/blog/temperature-and-top-p</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/temperature-and-top-p</guid>
      <description><![CDATA[Temperature and Top P are the two knobs that control how random or deterministic an LLM's output is. Knowing when to use each one matters.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Tokens and Context Windows]]></title>
      <link>https://durgesh.dev/blog/tokens-and-context-windows</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tokens-and-context-windows</guid>
      <description><![CDATA[Tokens are the currency LLMs think in. Context windows are their working memory. Here's what both mean for you in practice.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Cursor's Four Modes]]></title>
      <link>https://durgesh.dev/blog/cursor-modes</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/cursor-modes</guid>
      <description><![CDATA[Cursor has four modes — inline edit, agent, tab completion, and ask. Knowing which to reach for and when is what separates productive use from frustrated use.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Using a Coding Agent]]></title>
      <link>https://durgesh.dev/blog/using-a-coding-agent</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/using-a-coding-agent</guid>
      <description><![CDATA[Chat interfaces make you copy-paste. Coding agents edit your files directly. Understanding the difference — and the three modes they offer — changes how you prompt.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[VS Code Tasks]]></title>
      <link>https://durgesh.dev/blog/tasks</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tasks</guid>
      <description><![CDATA[VS Code Tasks turn repeated shell commands into one-click operations with problem matchers that pipe errors directly into the Problems tab. Here's how to set them up.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vscode-power-user</category>
    </item>
    <item>
      <title><![CDATA[Cursor Settings That Actually Matter]]></title>
      <link>https://durgesh.dev/blog/cursor-settings</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/cursor-settings</guid>
      <description><![CDATA[The Cursor settings that actually matter — model selection, API keys, dot file protection, and the options that change how the AI behaves in your codebase.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[The Standard Prompt]]></title>
      <link>https://durgesh.dev/blog/standard-prompt</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/standard-prompt</guid>
      <description><![CDATA[The standard prompt is the foundation of everything — a direct question or instruction. Understanding its limits shows you why better techniques exist.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Debugging in VS Code]]></title>
      <link>https://durgesh.dev/blog/debugging</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/debugging</guid>
      <description><![CDATA[VS Code's built-in debugger lets you set breakpoints, inspect memory, change variable values, and step through execution — all without leaving your editor or adding console.log.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vscode-power-user</category>
    </item>
    <item>
      <title><![CDATA[Cursor Rules]]></title>
      <link>https://durgesh.dev/blog/cursor-rules</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/cursor-rules</guid>
      <description><![CDATA[Cursor Rules are persistent instructions that live in your codebase and shape AI behavior for every interaction. How to write them, when to auto-attach them, and where to find good starting points.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Zero-Shot Prompts]]></title>
      <link>https://durgesh.dev/blog/zero-shot-prompt</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/zero-shot-prompt</guid>
      <description><![CDATA[Zero-shot prompts are direct task requests with no examples — but with specificity that makes the difference between a great output and a chaotic one.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Notepads: Session-Specific Context]]></title>
      <link>https://durgesh.dev/blog/notepads</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/notepads</guid>
      <description><![CDATA[Notepads are Cursor's session-specific context pad — not a replacement for CLAUDE.md or documentation, but a place to drop in context that's only relevant today.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[One-Shot Prompts]]></title>
      <link>https://durgesh.dev/blog/one-shot-prompt</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/one-shot-prompt</guid>
      <description><![CDATA[One-shot prompts provide a single example alongside your request. Show, don't tell — the model learns pattern, format, and tone from that one example.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Background Agents and MCP Servers]]></title>
      <link>https://durgesh.dev/blog/background-agents-and-mcp</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/background-agents-and-mcp</guid>
      <description><![CDATA[Background agents let Cursor work while you do other things. MCP servers connect the AI to external tools. Both are powerful and both deserve careful handling.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Few-Shot Prompts]]></title>
      <link>https://durgesh.dev/blog/few-shot-prompt</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/few-shot-prompt</guid>
      <description><![CDATA[Few-shot prompts use 2+ examples to teach the model nuances, edge cases, and format variations. More powerful than one-shot — but requires more upfront effort.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[ESLint as an AI Guardrail]]></title>
      <link>https://durgesh.dev/blog/linting-rules</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/linting-rules</guid>
      <description><![CDATA[ESLint rules aren't just for humans — they're guardrails for AI agents. The right rules catch AI-generated code that works but violates the patterns your codebase needs.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Choosing the Right Model]]></title>
      <link>https://durgesh.dev/blog/model-selection</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/model-selection</guid>
      <description><![CDATA[Different models have different strengths, costs, and deprecation timelines. Picking the right model for the job is a core prompt engineering skill.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Claude Code Overview]]></title>
      <link>https://durgesh.dev/blog/claude-code-overview</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/claude-code-overview</guid>
      <description><![CDATA[Claude Code is Anthropic's terminal-based AI coding tool. What it is, how it's priced, which model to use for what, and the tradeoffs vs. Cursor.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Structured Output]]></title>
      <link>https://durgesh.dev/blog/structured-output</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/structured-output</guid>
      <description><![CDATA[Structured output prompts tell the model exactly what format to return: JSON, tables, specific fields. Essential for building AI applications that chain outputs to the next step.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Dev Containers in VS Code]]></title>
      <link>https://durgesh.dev/blog/dev-containers</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/dev-containers</guid>
      <description><![CDATA[Dev containers run your development environment inside Docker, so every team member is on the same Node version, same database, same tools — without the "works on my machine" problem.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vscode-power-user</category>
    </item>
    <item>
      <title><![CDATA[Thinking Mode and Context Management]]></title>
      <link>https://durgesh.dev/blog/thinking-mode-and-context</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/thinking-mode-and-context</guid>
      <description><![CDATA[Claude Code has three thinking modes that trade speed for reasoning quality. Knowing when to trigger "ultrathink" vs. just typing is the difference between thoughtful solutions and fast ones.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Chain-of-Thought Prompting]]></title>
      <link>https://durgesh.dev/blog/chain-of-thought</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/chain-of-thought</guid>
      <description><![CDATA[Five words — "Let's think step-by-step" — took model accuracy from 17.7% to 78.7% on math problems. Chain-of-thought is the most impactful technique per character written.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Getting Started with Claude Code]]></title>
      <link>https://durgesh.dev/blog/getting-started</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/getting-started</guid>
      <description><![CDATA[/init generates your CLAUDE.md. From there — slash commands, /status, /model, and the habits that make Claude Code productive from day one.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Context Placement]]></title>
      <link>https://durgesh.dev/blog/context-placement</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/context-placement</guid>
      <description><![CDATA[Where you place information in a prompt matters as much as what you say. Critical info buried in the middle gets ignored — sometimes worse than saying nothing at all.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Project Boundaries and CLAUDE.md]]></title>
      <link>https://durgesh.dev/blog/project-boundaries</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/project-boundaries</guid>
      <description><![CDATA[CLAUDE.md is the contract between you and the AI. Plan mode lets you review before acting. Reference files, nested CLAUDE.md in monorepos — all the tools for shaping what the AI knows and does.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Emotional Prompts and Delimiters]]></title>
      <link>https://durgesh.dev/blog/emotional-prompts-and-delimiters</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/emotional-prompts-and-delimiters</guid>
      <description><![CDATA[Emotional phrases like "this is important to my career" measurably improve LLM attention on key prompt words. And delimiters (quotes, XML tags, markdown) make complex prompts dramatically easier for models to parse.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Custom Commands]]></title>
      <link>https://durgesh.dev/blog/commands</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/commands</guid>
      <description><![CDATA[Custom commands in Claude Code are reusable prompts with bash interpolation and file references. The repetitive things you ask the AI to do can become one-word invocations.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Personas]]></title>
      <link>https://durgesh.dev/blog/personas</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/personas</guid>
      <description><![CDATA[Personas don't make models smarter - they steer them toward a relevant subset of their training data. Here's how they actually work and when to use them.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Hooks: Automated Quality Gates]]></title>
      <link>https://durgesh.dev/blog/hooks</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/hooks</guid>
      <description><![CDATA[Claude Code hooks are shell commands that run automatically before or after the AI takes action. PreToolUse can block bad behavior. PostToolUse can enforce quality gates. Here's how to use both.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Future-Proofing Your Prompts]]></title>
      <link>https://durgesh.dev/blog/future-proofing</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/future-proofing</guid>
      <description><![CDATA[AI models get deprecated, new ones arrive, and techniques that worked last year may not work next year. Here's how to track your prompts so you're always ready to adapt.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>prompt-engineering</category>
    </item>
    <item>
      <title><![CDATA[Subagents and Parallel Workstreams]]></title>
      <link>https://durgesh.dev/blog/subagents</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/subagents</guid>
      <description><![CDATA[Subagents let you run multiple Claude Code instances in parallel, each with its own context window. How sharded context works, which personas reliably produce quality output, git worktrees for isolation, and when parallelization helps vs. hurts.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Supporting Tools and Closing Thoughts]]></title>
      <link>https://durgesh.dev/blog/tools-and-closing-thoughts</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tools-and-closing-thoughts</guid>
      <description><![CDATA[NotebookLM, Repomix, Gemini Gems — the supporting tools that complete the AI-assisted development workflow. Plus the honest take on what this all means for software engineers.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>cursor-claude-code</category>
    </item>
    <item>
      <title><![CDATA[Building VS Code Extensions]]></title>
      <link>https://durgesh.dev/blog/building-extensions</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/building-extensions</guid>
      <description><![CDATA[VS Code extensions range from a JSON color theme to a full embedded app. Learn how to scaffold one, build a code decorator, and add a webview UI — and understand how the pieces connect.]]></description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vscode-power-user</category>
    </item>
    <item>
      <title><![CDATA[Memoization and useCallback]]></title>
      <link>https://durgesh.dev/blog/memoization-and-usecallback</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/memoization-and-usecallback</guid>
      <description><![CDATA[Functions are recreated on every render — here's why that matters and when useCallback actually helps.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[React.memo and Referential Equality]]></title>
      <link>https://durgesh.dev/blog/react-memo-referential-equality</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-memo-referential-equality</guid>
      <description><![CDATA[React.memo does shallow comparison — which means object props break it in a way that's easy to miss.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[useMemo: Memoizing Expensive Calculations]]></title>
      <link>https://durgesh.dev/blog/usememo</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/usememo</guid>
      <description><![CDATA[useMemo does two different jobs — and knowing which one you need makes the difference between a useful optimization and noise.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Wrapping Components with React.memo]]></title>
      <link>https://durgesh.dev/blog/wrap-with-memo-exercise</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/wrap-with-memo-exercise</guid>
      <description><![CDATA[Practice wrapping components with React.memo and watching which re-renders disappear — and which ones don't.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[React Compiler: Automatic Memoization]]></title>
      <link>https://durgesh.dev/blog/react-compiler</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-compiler</guid>
      <description><![CDATA[React Compiler analyzes your code at build time and applies memoization automatically — no useCallback, useMemo, or React.memo required.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Separating the Urgent from the Non-Urgent]]></title>
      <link>https://durgesh.dev/blog/separating-urgent-from-non-urgent</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/separating-urgent-from-non-urgent</guid>
      <description><![CDATA[useTransition and useDeferredValue are for a specific class of problem — big, obvious, and unmissable. Here's the mental model for reaching for them.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[useTransition: Keeping the UI Responsive]]></title>
      <link>https://durgesh.dev/blog/use-transition</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/use-transition</guid>
      <description><![CDATA[useTransition splits one state update into two tracks — the urgent user input and the expensive downstream work — so the UI stays responsive while React processes the heavy part.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[useDeferredValue: Deferring What You Don't Control]]></title>
      <link>https://durgesh.dev/blog/use-deferred-value</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/use-deferred-value</guid>
      <description><![CDATA[useDeferredValue defers the expensive downstream work from a value you receive — the alternative to useTransition when you don't control where state is set.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Optimistic Updates with useOptimistic]]></title>
      <link>https://durgesh.dev/blog/optimistic-updates</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/optimistic-updates</guid>
      <description><![CDATA[useOptimistic shows the result of an action before the server confirms it — making mutations feel instant even on a slow connection.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[React Performance in the Real World]]></title>
      <link>https://durgesh.dev/blog/performance-in-the-real-world</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/performance-in-the-real-world</guid>
      <description><![CDATA[How to actually triage performance in a production app — finding the right problem before reaching for the right tool.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Common TypeScript Challenges at Scale]]></title>
      <link>https://durgesh.dev/blog/common-typescript-challenges</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/common-typescript-challenges</guid>
      <description><![CDATA[Why TypeScript slows down as projects grow — and the specific culprits that will eventually cost you a day of debugging.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[TypeScript Diagnostics: Reading the Numbers]]></title>
      <link>https://durgesh.dev/blog/typescript-diagnostics</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/typescript-diagnostics</guid>
      <description><![CDATA[The four tsc flags that tell you what TypeScript is doing — and what to do with the numbers they surface.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[TypeScript Project References and Configuration]]></title>
      <link>https://durgesh.dev/blog/project-references-and-configuration</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/project-references-and-configuration</guid>
      <description><![CDATA[How TypeScript project references split a monorepo into independently-checkable units — and what composite mode actually does.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Enforcing Architecture Rules with ESLint]]></title>
      <link>https://durgesh.dev/blog/enforcing-architecture-rules</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/enforcing-architecture-rules</guid>
      <description><![CDATA[How to encode architectural decisions into ESLint rules that run on every commit — so the architecture enforces itself.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Writing Custom ESLint Rules]]></title>
      <link>https://durgesh.dev/blog/custom-eslint-rules</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/custom-eslint-rules</guid>
      <description><![CDATA[Writing ESLint rules that are specific to your codebase — when existing plugins don't cover your architectural decisions.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Exercise: Architectural Linting]]></title>
      <link>https://durgesh.dev/blog/architectural-linting-exercise</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/architectural-linting-exercise</guid>
      <description><![CDATA[Practice enforcing module boundaries and writing a custom ESLint rule that catches project-specific violations.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[GitHub Actions Patterns for Large Frontend Systems]]></title>
      <link>https://durgesh.dev/blog/github-action-patterns</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/github-action-patterns</guid>
      <description><![CDATA[The GitHub Actions patterns that make CI pipelines scale — matrix strategy, conditional jobs, and deciding what to run on which trigger.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Performance Budgets as Constraints]]></title>
      <link>https://durgesh.dev/blog/performance-budgets</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/performance-budgets</guid>
      <description><![CDATA[Making performance and accessibility measurable constraints — not aspirations you check manually.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[A Complete GitHub Actions Example]]></title>
      <link>https://durgesh.dev/blog/github-actions-example</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/github-actions-example</guid>
      <description><![CDATA[Concurrency groups, cancel-in-progress, Turborepo remote cache in CI, and workflow dispatch — the patterns that make GitHub Actions production-ready.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Mock Service Worker: Frontend Testing Without a Real Backend]]></title>
      <link>https://durgesh.dev/blog/mock-service-worker</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/mock-service-worker</guid>
      <description><![CDATA[How Mock Service Worker intercepts network requests at the service worker level — and why this makes it fundamentally different from mocking fetch directly.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Monitoring and Observability in the Frontend]]></title>
      <link>https://durgesh.dev/blog/monitoring-and-observability</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/monitoring-and-observability</guid>
      <description><![CDATA[Error monitoring and real user metrics in production — what to capture, what to avoid, and why frontend observability is harder than backend observability.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Agentic Workflows in Large Codebases]]></title>
      <link>https://durgesh.dev/blog/agentic-workflows</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/agentic-workflows</guid>
      <description><![CDATA[Where AI-assisted development actually helps in large codebases — and why the architectural guardrails you already built are what make it safe.]]></description>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[The Monolith: Start Here]]></title>
      <link>https://durgesh.dev/blog/monoliths</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/monoliths</guid>
      <description><![CDATA[Why the monolith is not a dirty word — and why almost every successful large-scale system started as one.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Runtime Architecture & Deployment: It Is Not a Binary Choice]]></title>
      <link>https://durgesh.dev/blog/runtime-architecture-and-deployment</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/runtime-architecture-and-deployment</guid>
      <description><![CDATA[Monolith vs microfrontend is a false binary — architecture has three independent dimensions, and mixing them up is how teams end up with all the complexity and none of the benefits.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Problems with Monoliths: When to Move On]]></title>
      <link>https://durgesh.dev/blog/problems-with-monoliths</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/problems-with-monoliths</guid>
      <description><![CDATA[When the monolith starts fighting you — merge conflicts, slow CI, and team collisions — and how to read the signals before they become crises.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Microfrontend Architectures: The Flavors]]></title>
      <link>https://durgesh.dev/blog/microfrontend-architectures</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/microfrontend-architectures</guid>
      <description><![CDATA[The flavors of microfrontend composition — from server-side HTML to module federation — and how to pick the right one for your actual constraints.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Runtime Composition: The Shell and Remotes Pattern]]></title>
      <link>https://durgesh.dev/blog/runtime-composition</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/runtime-composition</guid>
      <description><![CDATA[How the shell-and-remotes pattern works — host app, remote modules, shared dependencies, and the trade-offs you're signing up for.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Module Federation Configuration Deep Dive]]></title>
      <link>https://durgesh.dev/blog/module-federation-config</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/module-federation-config</guid>
      <description><![CDATA[How the module federation configuration actually works — host config, remote config, shared dependencies, and the environment variable problem you will hit in production.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Lazy-Loading Remote Modules]]></title>
      <link>https://durgesh.dev/blog/lazy-loading-remote-modules</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/lazy-loading-remote-modules</guid>
      <description><![CDATA[How React.lazy and dynamic import wire up to module federation — and why a remote team can deploy without the shell ever redeploying.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Dependency Management and Global State in Federated Systems]]></title>
      <link>https://durgesh.dev/blog/dependency-and-global-state</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/dependency-and-global-state</guid>
      <description><![CDATA[Shared dependencies, version conflicts across remotes, error boundaries for blast radius, and why the Context API stops working across React trees.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Microfrontend Communication Patterns]]></title>
      <link>https://durgesh.dev/blog/microfrontend-communication</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/microfrontend-communication</guid>
      <description><![CDATA[Three ways microfrontends talk to each other — Nanostores, Broadcast Channel, and Comlink — and how to pick the right one.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Build-Time Composition: The Middle Ground]]></title>
      <link>https://durgesh.dev/blog/build-time-composition</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/build-time-composition</guid>
      <description><![CDATA[The middle ground between runtime federation and monolith — one build catches everything, but every team ships together.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Monorepo Project Tour: How the Workspace Fits Together]]></title>
      <link>https://durgesh.dev/blog/monorepo-project-tour</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/monorepo-project-tour</guid>
      <description><![CDATA[A walkthrough of a monorepo workspace structure — apps, packages, workspace protocol, and the build ordering problem you will hit next.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Rspack, Webpack, and Vite: Pick One and Move On]]></title>
      <link>https://durgesh.dev/blog/rspack-webpack-vite</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/rspack-webpack-vite</guid>
      <description><![CDATA[Why the choice of build tool matters less than you think — and what workspaces cannot solve on their own.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[The Case for Monorepos]]></title>
      <link>https://durgesh.dev/blog/case-for-monorepos</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/case-for-monorepos</guid>
      <description><![CDATA[Why fewer repos is almost always the right call — and what workspaces give you that private npm registries never will.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Turborepo, Nx, and Bazel: Build Systems for Monorepos]]></title>
      <link>https://durgesh.dev/blog/turborepo-nx-bazel</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/turborepo-nx-bazel</guid>
      <description><![CDATA[How Turborepo builds a dependency graph from your package.json files — and where Nx and Bazel fit when you need more.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Turborepo in Practice: Setup and Build Caching]]></title>
      <link>https://durgesh.dev/blog/turborepo-builds</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/turborepo-builds</guid>
      <description><![CDATA[Setting up Turborepo, watching it build in dependency order, and the cache hit that went from 5 seconds to 3 milliseconds.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Partial Rebuilds: Only Building What Changed]]></title>
      <link>https://durgesh.dev/blog/partial-rebuilds</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/partial-rebuilds</guid>
      <description><![CDATA[How Turborepo determines what to rebuild — content hashing, dependency cascades, and remote caching across machines.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Island Architecture: Ship Less JavaScript]]></title>
      <link>https://durgesh.dev/blog/island-architecture</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/island-architecture</guid>
      <description><![CDATA[Ship HTML first, hydrate only the interactive parts — and why this pattern is older than it looks and more relevant than ever.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[Backends for Frontends: The API You Actually Need]]></title>
      <link>https://durgesh.dev/blog/backends-for-frontends</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/backends-for-frontends</guid>
      <description><![CDATA[When the backend API is not built for your UI — and how a BFF layer gives you the API you need without waiting for another team.]]></description>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>enterprise-ui</category>
    </item>
    <item>
      <title><![CDATA[The Two Rules of React Performance]]></title>
      <link>https://durgesh.dev/blog/two-rules-of-react-performance</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/two-rules-of-react-performance</guid>
      <description><![CDATA[Two rules that cut through almost every React performance problem — and why measuring always comes first.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Anatomy of a Re-Render]]></title>
      <link>https://durgesh.dev/blog/anatomy-of-a-rerender</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/anatomy-of-a-rerender</guid>
      <description><![CDATA[What actually causes a React component to re-render — and what doesn't. Three triggers, three myths.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[React Fiber]]></title>
      <link>https://durgesh.dev/blog/react-fiber</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-fiber</guid>
      <description><![CDATA[How React's Fiber architecture enables interruptible rendering — and why it makes modern features like Suspense and transitions possible.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Rendering Phases]]></title>
      <link>https://durgesh.dev/blog/rendering-phases</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/rendering-phases</guid>
      <description><![CDATA[The render phase and commit phase — what React does in each, what you can safely do in each, and why the line matters.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Lanes]]></title>
      <link>https://durgesh.dev/blog/lanes</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/lanes</guid>
      <description><![CDATA[How React prioritises work using lanes — and why not all state updates are created equal.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[React Developer Tools]]></title>
      <link>https://durgesh.dev/blog/react-developer-tools</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-developer-tools</guid>
      <description><![CDATA[The React DevTools features that matter for performance work — and how to use them without measuring yourself into wrong conclusions.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Pushing State Down]]></title>
      <link>https://durgesh.dev/blog/pushing-state-down</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/pushing-state-down</guid>
      <description><![CDATA[The single most impactful React performance technique — and it requires zero APIs.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
    <item>
      <title><![CDATA[Local State Exercise]]></title>
      <link>https://durgesh.dev/blog/local-state-exercise</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/local-state-exercise</guid>
      <description><![CDATA[A guided exercise in using DevTools to find unnecessary re-renders and fixing them by pushing state down.]]></description>
      <pubDate>Thu, 20 Mar 2025 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>react-performance</category>
    </item>
  </channel>
</rss>