<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Praveen Kumar</title>
        <link>https://praveeen.in/</link>
        <description>Senior frontend engineer. Frontend migrations, design systems, Sentry, codemods. Deep dives on JavaScript, React, and systems internals.</description>
        <lastBuildDate>Wed, 05 Aug 2026 13:00:26 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Praveen Kumar, CC-BY-SA</copyright>
        <item>
            <title><![CDATA[Ripple Runtime: Mount & Block Tree]]></title>
            <link>https://praveeen.in/articles/ripple-mount-and-blocks</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ripple-mount-and-blocks</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Part 3 of the Ripple internals deep dive series.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Ripple Runtime: Quick Reference]]></title>
            <link>https://praveeen.in/articles/ripple-reference</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ripple-reference</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Part 5 of the Ripple internals deep dive series.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Ripple Runtime: Compilation Pipeline]]></title>
            <link>https://praveeen.in/articles/ripple-runtime-compilation</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ripple-runtime-compilation</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Part 2 of the Ripple internals deep dive series.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Ripple Runtime: Updates & Performance]]></title>
            <link>https://praveeen.in/articles/ripple-updates-and-performance</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ripple-updates-and-performance</guid>
            <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Part 4 of the Ripple internals deep dive series.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Deep Dive: Understanding Ripple's Runtime and Reactivity System (For Nerds)]]></title>
            <link>https://praveeen.in/articles/ripple-deep-dive-1/intro-to-ripple-internals</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ripple-deep-dive-1/intro-to-ripple-internals</guid>
            <pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[A comprehensive exploration of Ripple's compile-time reactive framework, tracing how reactive code flows from source to execution, how dependencies are tracked, and how updates propagate through the block tree.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[useNetworkStatus: react to online/offline]]></title>
            <link>https://praveeen.in/articles/use-network-status</link>
            <guid isPermaLink="false">https://praveeen.in/articles/use-network-status</guid>
            <pubDate>Thu, 29 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A custom hook that listens to window online/offline events and returns a boolean.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[useMouseCoords: track cursor position]]></title>
            <link>https://praveeen.in/articles/use-mousecoords</link>
            <guid isPermaLink="false">https://praveeen.in/articles/use-mousecoords</guid>
            <pubDate>Thu, 15 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A custom hook that subscribes to mousemove and returns the latest clientX and clientY.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[useLocalStorage: persist React state in localStorage]]></title>
            <link>https://praveeen.in/articles/use-localstorage</link>
            <guid isPermaLink="false">https://praveeen.in/articles/use-localstorage</guid>
            <pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[A small custom hook that reads and writes JSON to localStorage, with lazy initialization on first render.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Custom React hooks: a three-part series]]></title>
            <link>https://praveeen.in/articles/hooks-unleashed</link>
            <guid isPermaLink="false">https://praveeen.in/articles/hooks-unleashed</guid>
            <pubDate>Thu, 01 Jun 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Three small hooks I wrote in 2023: localStorage persistence, mouse coordinates, and online/offline status. Code-first, no fluff.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Setting up Metacall development environment on Windows]]></title>
            <link>https://praveeen.in/articles/setting-up-metacall-dev-env-windows</link>
            <guid isPermaLink="false">https://praveeen.in/articles/setting-up-metacall-dev-env-windows</guid>
            <pubDate>Fri, 10 Feb 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[MetaCall is open-sourced under Apache 2.0 license. Let's switch gears and setup our windows system to build and develop metacall locally.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Polyglot Programming with Metacall]]></title>
            <link>https://praveeen.in/articles/polyglot-programming-with-metacall</link>
            <guid isPermaLink="false">https://praveeen.in/articles/polyglot-programming-with-metacall</guid>
            <pubDate>Mon, 30 Jan 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[Calling Python from Node without spawning a subprocess. Metacall loads foreign functions through a shared C ABI.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Arrays In JavaScript]]></title>
            <link>https://praveeen.in/articles/arrays-in-js</link>
            <guid isPermaLink="false">https://praveeen.in/articles/arrays-in-js</guid>
            <pubDate>Wed, 13 Jul 2022 00:00:00 GMT</pubDate>
            <description><![CDATA[Consider a case when you want to store lots of data e.g. all your favorite pizzas or tacos. How will you store all the names in your program? Will you create 10 different variables for ten different pizzas?.]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Ternary operator in Javascript]]></title>
            <link>https://praveeen.in/articles/ternary-op-js</link>
            <guid isPermaLink="false">https://praveeen.in/articles/ternary-op-js</guid>
            <pubDate>Thu, 30 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Learn how to use ternary operator (?) in javascript]]></description>
            <author>Praveen Kumar</author>
        </item>
        <item>
            <title><![CDATA[Unboxing Javascript]]></title>
            <link>https://praveeen.in/articles/unboxing-javascript</link>
            <guid isPermaLink="false">https://praveeen.in/articles/unboxing-javascript</guid>
            <pubDate>Mon, 27 Sep 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Exploring the real model of an variable in javascript]]></description>
            <author>Praveen Kumar</author>
        </item>
    </channel>
</rss>