<?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>Mon, 01 Jun 2026 20:07:49 GMT</lastBuildDate>
    
    <item>
      <title><![CDATA[Predictive Software Neural Networks]]></title>
      <link>https://durgesh.dev/blog/predictive-software-neural-networks</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/predictive-software-neural-networks</guid>
      <description><![CDATA[Discover how predictive software is changing engineering by moving from manual rules to pattern matching at scale.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Why Pm Matters For Developers]]></title>
      <link>https://durgesh.dev/blog/why-pm-matters-for-developers</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/why-pm-matters-for-developers</guid>
      <description><![CDATA[Product management is not just a PM job. Every developer who understands prioritization, user thinking, and product decisions grows faster and ships better software.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>pm-for-developers</category>
    </item>
    <item>
      <title><![CDATA[Getting Started With React]]></title>
      <link>https://durgesh.dev/blog/getting-started-with-react</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/getting-started-with-react</guid>
      <description><![CDATA[React has been around for over a decade and it still ships faster UIs than most alternatives -- here is why starting with zero tools is the right way to learn it.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[The Product Engineer]]></title>
      <link>https://durgesh.dev/blog/the-product-engineer</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/the-product-engineer</guid>
      <description><![CDATA[What separates a Product Engineer from a developer who waits for instructions: the three questions, senior thinking, and why flexibility is an architecture decision.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>pm-for-developers</category>
    </item>
    <item>
      <title><![CDATA[Netflix Churn And Ip Sniffing]]></title>
      <link>https://durgesh.dev/blog/netflix-churn-and-ip-sniffing</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/netflix-churn-and-ip-sniffing</guid>
      <description><![CDATA[Netflix was losing $1 billion a year to a problem that had nothing to do with content quality. The fix -- IP sniffing -- shows exactly how PM and developer thinking combine.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>pm-for-developers</category>
    </item>
    <item>
      <title><![CDATA[Ml Decision Making Automation]]></title>
      <link>https://durgesh.dev/blog/ml-decision-making-automation</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/ml-decision-making-automation</guid>
      <description><![CDATA[Learn how to turn manual human decisions into automated patterns using features, samples, and historical labels.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Tiktok Swiggy Uber Case Studies]]></title>
      <link>https://durgesh.dev/blog/tiktok-swiggy-uber-case-studies</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tiktok-swiggy-uber-case-studies</guid>
      <description><![CDATA[TikTok turned 5 minutes of daily usage into 52 with a single UI nudge. Swiggy loses 70% of sessions without a transaction. Uber cut cab abandonment in half with suggested destinations.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>pm-for-developers</category>
    </item>
    <item>
      <title><![CDATA[React Without A Build Step]]></title>
      <link>https://durgesh.dev/blog/react-without-a-build-step</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-without-a-build-step</guid>
      <description><![CDATA[Before JSX and bundlers existed, React was just a function call -- writing it that way once makes everything that comes after make sense.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Data Converter Decision Model]]></title>
      <link>https://durgesh.dev/blog/data-converter-decision-model</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/data-converter-decision-model</guid>
      <description><![CDATA[Build your first decision model by setting boundaries, calculating accuracy, and understanding the power of interpretability.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Stakeholder Management And Metrics]]></title>
      <link>https://durgesh.dev/blog/stakeholder-management-and-metrics</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/stakeholder-management-and-metrics</guid>
      <description><![CDATA[A product feature that helps one group of users can destroy the product for another. Stakeholder management is what prevents that -- and engagement, retention, monetization are how you measure whether it's working.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>pm-for-developers</category>
    </item>
    <item>
      <title><![CDATA[Components And Props]]></title>
      <link>https://durgesh.dev/blog/components-and-props</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/components-and-props</guid>
      <description><![CDATA[A component is just a function you can call with different arguments -- once that clicks, the entire component model falls into place.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Validation Generalization Drift]]></title>
      <link>https://durgesh.dev/blog/validation-generalization-drift</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/validation-generalization-drift</guid>
      <description><![CDATA[Discover why perfect accuracy on your sample data isn't enough and how models fail when real-world patterns start to drift.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Ml Foundations Three Pillars]]></title>
      <link>https://durgesh.dev/blog/ml-foundations-three-pillars</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/ml-foundations-three-pillars</guid>
      <description><![CDATA[Explore the three major buckets of machine learning: from finding the best model to the massive compute power required for optimization.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Production Ml Prototyping Engineering]]></title>
      <link>https://durgesh.dev/blog/production-ml-prototyping-engineering</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/production-ml-prototyping-engineering</guid>
      <description><![CDATA[Learn the workflow of moving from a prototype to a production-ready model, from feature engineering to API deployment.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>hard-parts-neural-networks</category>
    </item>
    <item>
      <title><![CDATA[Prettier And Eslint]]></title>
      <link>https://durgesh.dev/blog/prettier-and-eslint</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/prettier-and-eslint</guid>
      <description><![CDATA[Prettier kills formatting arguments forever and ESLint catches the bugs that slip through review -- understanding which tool does which job stops them from fighting each other.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Vite And Project Setup]]></title>
      <link>https://durgesh.dev/blog/vite-and-project-setup</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/vite-and-project-setup</guid>
      <description><![CDATA[Vite turns a pile of disconnected files into a fast dev server and an optimized production bundle -- and understanding what it is doing makes the config obvious.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Jsx In React]]></title>
      <link>https://durgesh.dev/blog/jsx-in-react</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/jsx-in-react</guid>
      <description><![CDATA[JSX felt wrong to me until one reframe changed everything -- writing React.createElement is already mimicking HTML, so why not just write the HTML?]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Api And Static Assets]]></title>
      <link>https://durgesh.dev/blog/api-and-static-assets</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/api-and-static-assets</guid>
      <description><![CDATA[A frontend that cannot talk to a backend is just a brochure -- here is how to wire up ESLint for JSX, proxy API requests, and serve images through Vite.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Building The Order Form]]></title>
      <link>https://durgesh.dev/blog/building-the-order-form</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/building-the-order-form</guid>
      <description><![CDATA[Building a real form in React means thinking in controlled inputs -- here is how a select and a group of radio buttons come together into one Order component.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Usestate And Useeffect]]></title>
      <link>https://durgesh.dev/blog/usestate-and-useeffect</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/usestate-and-useeffect</guid>
      <description><![CDATA[useState gives a component memory and useEffect lets it talk to the outside world -- together they cover the majority of what real React features need.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Updating State And Keys]]></title>
      <link>https://durgesh.dev/blog/updating-state-and-keys</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/updating-state-and-keys</guid>
      <description><![CDATA[React needs a key on every list item to track what changed -- using array index as the key is a trap, and understanding why makes reconciliation click.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[React Devtools]]></title>
      <link>https://durgesh.dev/blog/react-devtools</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-devtools</guid>
      <description><![CDATA[Strict Mode surfaces bugs in development by running effects twice, and React DevTools lets you inspect the live component tree without console.log.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Custom Hooks]]></title>
      <link>https://durgesh.dev/blog/custom-hooks</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/custom-hooks</guid>
      <description><![CDATA[Custom hooks are just functions that call other hooks -- that one rule unlocks the ability to extract fetch logic, timers, and subscriptions into clean, reusable units.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[User Input And Cart]]></title>
      <link>https://durgesh.dev/blog/user-input-and-cart</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/user-input-and-cart</guid>
      <description><![CDATA[Submitting a form and managing a growing cart array is where controlled state really earns its keep -- this is the moment a UI starts behaving like a real application.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Usecontext]]></title>
      <link>https://durgesh.dev/blog/usecontext</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/usecontext</guid>
      <description><![CDATA[Prop drilling is fine until it is not -- useContext gives sibling components a shared channel without threading props through every layer in between.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[TanStack Router and Lazy Loading]]></title>
      <link>https://durgesh.dev/blog/tanstack-router</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tanstack-router</guid>
      <description><![CDATA[TanStack Router adds type-safe, file-based routing to React -- and lazy loading routes means users only download the code for the page they are actually visiting.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[TanStack Query]]></title>
      <link>https://durgesh.dev/blog/tanstack-query</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/tanstack-query</guid>
      <description><![CDATA[TanStack Query replaced every useEffect fetch I had written with a single hook -- and it brought caching, background refetching, and stale-time along for free.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Portals and Modals]]></title>
      <link>https://durgesh.dev/blog/portals-and-modals</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/portals-and-modals</guid>
      <description><![CDATA[A portal lets you render UI into a DOM node that lives outside your React root -- which is exactly what you need when a modal has to escape its container's overflow rules.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Error Boundaries and Class Components]]></title>
      <link>https://durgesh.dev/blog/error-boundaries</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/error-boundaries</guid>
      <description><![CDATA[Error boundaries are the one React feature that still needs a class component -- and wrapping a risky subtree in one is the difference between a blank screen and a helpful fallback.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Uncontrolled Forms]]></title>
      <link>https://durgesh.dev/blog/uncontrolled-forms</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/uncontrolled-forms</guid>
      <description><![CDATA[Not every form needs state -- uncontrolled forms read values directly from FormData on submit, which means less wiring and the same result.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Unit Testing with Vitest]]></title>
      <link>https://durgesh.dev/blog/unit-testing-with-vitest</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/unit-testing-with-vitest</guid>
      <description><![CDATA[Tests are the thing that lets you refactor without fear -- Vitest makes writing them in a Vite project feel like it was designed for exactly that, because it was.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[Snapshot Testing and Browser Tests]]></title>
      <link>https://durgesh.dev/blog/snapshot-and-browser-testing</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/snapshot-and-browser-testing</guid>
      <description><![CDATA[Snapshot tests catch unintended UI changes and Playwright browser tests verify real interactions -- together they cover what unit tests miss.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[React 19 Features]]></title>
      <link>https://durgesh.dev/blog/react-19-features</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/react-19-features</guid>
      <description><![CDATA[React 19 ships form actions, a new use hook, and a compiler that memoizes your code automatically -- three ideas that make the patterns from earlier in the course feel even cleaner.]]></description>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>complete-intro-to-react</category>
    </item>
    <item>
      <title><![CDATA[What Is JavaScript, Really?]]></title>
      <link>https://durgesh.dev/blog/what-is-javascript</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/what-is-javascript</guid>
      <description><![CDATA[Most people start with React, but JavaScript is the foundation. Here is what the language actually is and where we write it.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[The Hammer Problem]]></title>
      <link>https://durgesh.dev/blog/the-hammer-problem</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/the-hammer-problem</guid>
      <description><![CDATA[When a framework is the only tool you know, you reach for it even when you don't need it. Knowing vanilla JS does not mean abandoning frameworks. It means choosing them.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[DIP]]></title>
      <link>https://durgesh.dev/blog/dependency-inversion-principle-and-the-decoupling-magic</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/dependency-inversion-principle-and-the-decoupling-magic</guid>
      <description><![CDATA[Why should high-level logic depend on low-level details? Master Dependency Inversion to build truly decoupled and testable systems.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>solid-principles</category>
    </item>
    <item>
      <title><![CDATA[SOLID Boss Battle]]></title>
      <link>https://durgesh.dev/blog/solid-boss-battle-the-refactor-challenge</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/solid-boss-battle-the-refactor-challenge</guid>
      <description><![CDATA[Can you fix the God Class? Put your SOLID skills to the ultimate test by refactoring a broken, tightly-coupled ordering system.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>solid-principles</category>
    </item>
    <item>
      <title><![CDATA[The Document Object Model]]></title>
      <link>https://durgesh.dev/blog/document-object-model</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/document-object-model</guid>
      <description><![CDATA[An HTML file is just text. The DOM is the living structure that JavaScript actually interacts with.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[What Is Vanilla Js]]></title>
      <link>https://durgesh.dev/blog/what-is-vanilla-js</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/what-is-vanilla-js</guid>
      <description><![CDATA[Vanilla JS is not a new idea. It has been a running joke, a counter-movement, and a legitimate architectural choice for decades. Here is what it actually means.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Finding and Changing Elements]]></title>
      <link>https://durgesh.dev/blog/finding-and-changing-elements</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/finding-and-changing-elements</guid>
      <description><![CDATA[How to use querySelector, getElementById, and textContent to manipulate the page.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[Why Vanilla Js]]></title>
      <link>https://durgesh.dev/blog/why-vanilla-js</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/why-vanilla-js</guid>
      <description><![CDATA[Libraries sit on top of the same DOM APIs you can use directly. Understanding the platform makes you better at everything, including the frameworks you already love.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Primitives and Strings]]></title>
      <link>https://durgesh.dev/blog/primitives-and-strings</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/primitives-and-strings</guid>
      <description><![CDATA[Understand the basic building blocks of JavaScript: numbers, strings, booleans, undefined, and null.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[The Dom Api]]></title>
      <link>https://durgesh.dev/blog/the-dom-api</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/the-dom-api</guid>
      <description><![CDATA[The DOM is a memory structure, not the HTML file. The DOM API is how you talk to it. Understanding this distinction changes how you think about rendering and performance.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Operators and Comparisons]]></title>
      <link>https://durgesh.dev/blog/operators-and-comparisons</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/operators-and-comparisons</guid>
      <description><![CDATA[Learn how to compute values with arithmetic operators and why you should always use triple equals (===) for comparison.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[Finding Elements]]></title>
      <link>https://durgesh.dev/blog/finding-elements</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/finding-elements</guid>
      <description><![CDATA[Not all selection methods return the same thing. The difference between a live HTMLCollection and a static NodeList can cause bugs that are almost impossible to trace without knowing this distinction.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Expressions]]></title>
      <link>https://durgesh.dev/blog/expressions</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/expressions</guid>
      <description><![CDATA[Learn what expressions are and how JavaScript evaluates them to produce values.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>javascript-first-steps</category>
    </item>
    <item>
      <title><![CDATA[Modifying The Dom]]></title>
      <link>https://durgesh.dev/blog/modifying-the-dom</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/modifying-the-dom</guid>
      <description><![CDATA[Three ways to change what is on screen, and they are not interchangeable. Here is when to use innerHTML, textContent, and createElement, and why class and for work differently in JavaScript.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Dom Is Not The Html File]]></title>
      <link>https://durgesh.dev/blog/dom-is-not-the-html-file</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/dom-is-not-the-html-file</guid>
      <description><![CDATA[The DOM and your HTML file are not the same thing. DevTools shows you one. View Source shows you the other. Knowing the difference changes how you debug.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Scoping Queryselector]]></title>
      <link>https://durgesh.dev/blog/scoping-queryselector</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/scoping-queryselector</guid>
      <description><![CDATA[querySelector works on every DOM element, not just the document. Scoping your queries to a specific subtree makes them faster and harder to break.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
    <item>
      <title><![CDATA[Async Defer Script Loading]]></title>
      <link>https://durgesh.dev/blog/async-defer-script-loading</link>
      <guid isPermaLink="true">https://durgesh.dev/blog/async-defer-script-loading</guid>
      <description><![CDATA[The default script tag halts HTML parsing. "Put scripts at the bottom" is a deprecated workaround. Here is the modern answer with async and defer.]]></description>
      <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
      <author>durgesh@durgesh.dev (Durgesh Rai)</author>
      <category>vanilla-js</category>
    </item>
  </channel>
</rss>