<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:podcast="https://podcastindex.org/namespace/1.0">
    <channel>
        <generator>RedCircle VERIFY_TOKEN_418c958c-6a25-42ce-85f6-fc957b1999c1  -- Rendered At Fri, 11 Sep 2026 05:59:38 &#43;0000</generator>
        <title>Okay, But Why?</title>
        <link>https://redcircle.com/shows/okay-but-why</link>
        <language>en-US</language>
        <copyright>All rights reserved.</copyright>
        <itunes:author>Lori Dunford</itunes:author>
        <itunes:summary>*Okay, But Why?* is a funny, candid tech-learning podcast for developers who are tired of being told how something works without anyone bothering to explain *why the hell it exists in the first place*.

Each episode takes apart a technology, tool, or concept by asking the questions developers are sometimes afraid they&#39;re already supposed to know: What problem was this trying to solve? What did we do before it existed? How does it actually work? When is it useful? When is it unnecessary? And, ultimately, *why should I give a shit?*

Hosts Parisa and Jules bring different generations of web-development experience to the conversation, occasionally joined by their extremely enthusiastic intern Sabrina and guests who actually know what they&#39;re talking about. Together they work through everything from TypeScript, Node and modern JavaScript tooling to CSS, React, web architecture, cybersecurity, DevOps, containers, cloud infrastructure, AI, and whatever developers are expected to understand next Tuesday.

There are no stupid questions, newer doesn&#39;t automatically mean better, and nobody is expected to memorize a pile of buzzwords and pretend they understand them.

Come for the technology. Stay for the metaphors, debugging, generational chaos, and occasional realization:

*“Ohhh. THAT&#39;S why that exists.”*</itunes:summary>
        <podcast:guid>418c958c-6a25-42ce-85f6-fc957b1999c1</podcast:guid>
        
        <description><![CDATA[<p><strong>Okay, But Why?</strong> is a funny, candid tech-learning podcast for developers who are tired of being told <em>how</em> something works without anyone bothering to explain <strong>why the hell it exists in the first place</strong>.</p><p>Each episode takes apart a technology, tool, or concept by asking the questions developers are sometimes afraid they&#39;re already supposed to know: What problem was this trying to solve? What did we do before it existed? How does it actually work? When is it useful? When is it unnecessary? And, ultimately, <strong>why should I give a shit?</strong></p><p>Hosts Parisa and Jules bring different generations of web-development experience to the conversation, occasionally joined by their extremely enthusiastic intern Sabrina and guests who actually know what they&#39;re talking about. Together they work through everything from TypeScript, Node and modern JavaScript tooling to CSS, React, web architecture, cybersecurity, DevOps, containers, cloud infrastructure, AI, and whatever developers are expected to understand next Tuesday.</p><p>There are no stupid questions, newer doesn&#39;t automatically mean better, and nobody is expected to memorize a pile of buzzwords and pretend they understand them.</p><p>Come for the technology. Stay for the metaphors, debugging, generational chaos, and occasional realization:</p><p><strong>“Ohhh. THAT&#39;S why that exists.”</strong></p>]]></description>
        
        <itunes:type>episodic</itunes:type>
        <podcast:locked>no</podcast:locked>
        <itunes:owner>
            <itunes:name>Lori Dunford</itunes:name>
            <itunes:email>loridk@gmail.com</itunes:email>
        </itunes:owner>
        
        <itunes:image href="https://media.redcircle.com/images/2026/9/6/22/7f3265ea-18ab-40bd-8c5e-dc1f66c62152_nervous_robot.jpg"/>
        
        
        
            
            <itunes:category text="Technology" />

            

        
        
            
            <itunes:category text="Education">

            
                <itunes:category text="How To"/>
            
                <itunes:category text="Language Learning"/>
            
                <itunes:category text="Self-Improvement"/>
            

        </itunes:category>
        

        
        <itunes:explicit>true</itunes:explicit>
        
        
        
        
        
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 8 - Do You Actually Need a Framework?</itunes:title>
                <title>React/Frameworks - Episode 8 - Do You Actually Need a Framework?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>After an entire series about frameworks, we finally ask the dangerous question: should you use one at all? The crew works through real project shapes—from a simple business site to an interactive scheduling dashboard—and looks at progressive enhancement, browser-native capabilities, performance, accessibility, security, team fit, existing codebases, and maintenance costs. The answer is “it depends,” but nobody gets to say that until we explain exactly what it depends on.</p>]]></description>
                <content:encoded>&lt;p&gt;After an entire series about frameworks, we finally ask the dangerous question: should you use one at all? The crew works through real project shapes—from a simple business site to an interactive scheduling dashboard—and looks at progressive enhancement, browser-native capabilities, performance, accessibility, security, team fit, existing codebases, and maintenance costs. The answer is “it depends,” but nobody gets to say that until we explain exactly what it depends on.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12709302" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/64caedfb-4010-4b13-a3cb-d4ab0bc16edc/stream.mp3"/>
                
                <guid isPermaLink="false">0862b745-68a0-4096-b8a4-ef6f55ab4ee8</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:58:40 &#43;0000</pubDate>
                <itunes:duration>794</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 7 - React Frameworks — Why Is Next.js Standing Behind React?</itunes:title>
                <title>React/Frameworks - Episode 7 - React Frameworks — Why Is Next.js Standing Behind React?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>React is a library that people call a framework, and now there are frameworks built around it. Excellent. Parisa, Jules, and Sabrina untangle the nesting dolls by exploring client and server rendering, hydration, React Server Components, Next.js and the App Router, <code>&#34;use client&#34;</code>, server functions, caching, streaming, hosting, and what architectural complexity you&#39;re actually buying when you add a React framework.</p>]]></description>
                <content:encoded>&lt;p&gt;React is a library that people call a framework, and now there are frameworks built around it. Excellent. Parisa, Jules, and Sabrina untangle the nesting dolls by exploring client and server rendering, hydration, React Server Components, Next.js and the App Router, &lt;code&gt;&amp;#34;use client&amp;#34;&lt;/code&gt;, server functions, caching, streaming, hosting, and what architectural complexity you&amp;#39;re actually buying when you add a React framework.&lt;/p&gt;</content:encoded>
                
                <enclosure length="11974530" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ac1a0bc2-8eda-458a-99a7-ddcbd518907c/stream.mp3"/>
                
                <guid isPermaLink="false">592c195a-a92d-4b4e-9a96-a903d455664b</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:57:54 &#43;0000</pubDate>
                <itunes:duration>748</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 6 - Vue and Angular — React Is Not the Only Answer</itunes:title>
                <title>React/Frameworks - Episode 6 - Vue and Angular — React Is Not the Only Answer</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>No framework cage match required. React, Vue, and Angular tackle many of the same UI problems but make very different decisions about how much structure and tooling they provide. The crew compares their component models, Vue&#39;s progressive approach, Angular&#39;s broader platform and dependency injection, ecosystems, accessibility, security, migration, and team considerations—without pretending one framework universally wins.</p>]]></description>
                <content:encoded>&lt;p&gt;No framework cage match required. React, Vue, and Angular tackle many of the same UI problems but make very different decisions about how much structure and tooling they provide. The crew compares their component models, Vue&amp;#39;s progressive approach, Angular&amp;#39;s broader platform and dependency injection, ecosystems, accessibility, security, migration, and team considerations—without pretending one framework universally wins.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12008385" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/2b1feacf-008c-4e13-ad54-6ba1b50cf381/stream.mp3"/>
                
                <guid isPermaLink="false">a49aed6b-3d41-496e-ac02-a9383bf1f916</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:57:08 &#43;0000</pubDate>
                <itunes:duration>750</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 5 - The React Ecosystem — Why Do I Need Seventeen Other Things?</itunes:title>
                <title>React/Frameworks - Episode 5 - The React Ecosystem — Why Do I Need Seventeen Other Things?</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>You learned React. Congratulations! Now please select a router, build tool, data-fetching strategy, form solution, state-management approach, styling system, testing tools, and possibly a small emotional-support animal. Parisa, Jules, and Sabrina map out the ecosystem around React, why the core library deliberately doesn&#39;t solve everything, and how to choose tools based on actual project requirements instead of stack astrology.</p>]]></description>
                <content:encoded>&lt;p&gt;You learned React. Congratulations! Now please select a router, build tool, data-fetching strategy, form solution, state-management approach, styling system, testing tools, and possibly a small emotional-support animal. Parisa, Jules, and Sabrina map out the ecosystem around React, why the core library deliberately doesn&amp;#39;t solve everything, and how to choose tools based on actual project requirements instead of stack astrology.&lt;/p&gt;</content:encoded>
                
                <enclosure length="11872130" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5b73085f-c8d2-402e-84b4-3a568cd42198/stream.mp3"/>
                
                <guid isPermaLink="false">7ec9ea6f-3d80-4472-ac94-2ea2f4be8f6b</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:56:19 &#43;0000</pubDate>
                <itunes:duration>742</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 4 - Hooks and useEffect — Stop Synchronizing Nothing</itunes:title>
                <title>React/Frameworks - Episode 4 - Hooks and useEffect — Stop Synchronizing Nothing</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Hooks are not magical React incantations, and <code>useEffect</code> is not the junk drawer where code goes when you don&#39;t know where else to put it. This episode explains what Hooks actually are, why effects exist, dependency arrays, cleanup, race conditions, refs, memoization, context, and custom Hooks—with a particular focus on recognizing when you don&#39;t need an effect at all.</p>]]></description>
                <content:encoded>&lt;p&gt;Hooks are not magical React incantations, and &lt;code&gt;useEffect&lt;/code&gt; is not the junk drawer where code goes when you don&amp;#39;t know where else to put it. This episode explains what Hooks actually are, why effects exist, dependency arrays, cleanup, race conditions, refs, memoization, context, and custom Hooks—with a particular focus on recognizing when you don&amp;#39;t need an effect at all.&lt;/p&gt;</content:encoded>
                
                <enclosure length="11791882" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/179dd307-377b-4d30-a6b6-599ce4def24f/stream.mp3"/>
                
                <guid isPermaLink="false">59a13a9a-bb75-4db8-9dd5-2f051eea9f2d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:55:32 &#43;0000</pubDate>
                <itunes:duration>736</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 3 - State — Why Didn’t My Variable Update the Screen?</itunes:title>
                <title>React/Frameworks - Episode 3 - State — Why Didn’t My Variable Update the Screen?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>You changed the variable. The screen did not care. Welcome to state. Parisa and Jules build the mental model behind React rendering: state updates, render snapshots, render versus commit, controlled inputs, lifting state up, immutable updates, stale closures, and how to decide what actually deserves to be state instead of storing every value you can get your hands on.</p>]]></description>
                <content:encoded>&lt;p&gt;You changed the variable. The screen did not care. Welcome to state. Parisa and Jules build the mental model behind React rendering: state updates, render snapshots, render versus commit, controlled inputs, lifting state up, immutable updates, stale closures, and how to decide what actually deserves to be state instead of storing every value you can get your hands on.&lt;/p&gt;</content:encoded>
                
                <enclosure length="11269851" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e5c796f5-e79d-4336-b255-a5737d50b5e5/stream.mp3"/>
                
                <guid isPermaLink="false">a0ecf09d-b240-4f91-b6b5-e09bd9ea4a14</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:54:49 &#43;0000</pubDate>
                <itunes:duration>704</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 2 - Components, Props, and JSX — Whose HTML Is This?</itunes:title>
                <title>React/Frameworks - Episode 2 - Components, Props, and JSX — Whose HTML Is This?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>React puts markup in JavaScript, invents components, and starts passing things called props around. Rude. This episode explains what JSX actually becomes, how React components work, why props are read-only inputs, component trees, children, lists and keys, and why mixing markup with behavior isn&#39;t necessarily the separation-of-concerns disaster it first appears to be.</p>]]></description>
                <content:encoded>&lt;p&gt;React puts markup in JavaScript, invents components, and starts passing things called props around. Rude. This episode explains what JSX actually becomes, how React components work, why props are read-only inputs, component trees, children, lists and keys, and why mixing markup with behavior isn&amp;#39;t necessarily the separation-of-concerns disaster it first appears to be.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12936254" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/4c0ac7d7-5584-45a1-a513-24804646e45d/stream.mp3"/>
                
                <guid isPermaLink="false">30e0d35f-744a-4374-97f0-d08b577e1ad0</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:54:04 &#43;0000</pubDate>
                <itunes:duration>808</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>React/Frameworks - Episode 1 - Who Asked for This? Why the Fuck Did We Need React?</itunes:title>
                <title>React/Frameworks - Episode 1 - Who Asked for This? Why the Fuck Did We Need React?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>4</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Before React, websites were not helpless piles of rocks waiting to be rescued. So what changed? Parisa and Jules trace the path from server-rendered pages and jQuery to increasingly stateful browser applications, then unpack declarative UI, components, and the idea of UI as a function of state. Along the way: what React actually does, what it absolutely does not do, and why its model became useful enough to justify all this.</p>]]></description>
                <content:encoded>&lt;p&gt;Before React, websites were not helpless piles of rocks waiting to be rescued. So what changed? Parisa and Jules trace the path from server-rendered pages and jQuery to increasingly stateful browser applications, then unpack declarative UI, components, and the idea of UI as a function of state. Along the way: what React actually does, what it absolutely does not do, and why its model became useful enough to justify all this.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13869557" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/252b1fbb-7eae-48de-8cb6-8d1e46edf3af/stream.mp3"/>
                
                <guid isPermaLink="false">37741e0a-4391-4015-87a6-b7c13512afc6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:52:45 &#43;0000</pubDate>
                <itunes:duration>866</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 14 - So… Do We Even Need a CSS Framework?</itunes:title>
                <title>Modern CSS - Episode 14 - So… Do We Even Need a CSS Framework?</title>

                <itunes:episode>14</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>After fourteen episodes of discovering how much CSS can do by itself, it&#39;s time for the obvious question: do we still need frameworks? Parisa and Jules compare plain CSS, Bootstrap-style component systems, utility-first approaches, CSS Modules, CSS-in-JS, Sass, and PostCSS—not to crown a universal winner, but to build a practical way to decide whether a project&#39;s problems actually justify another dependency.</p>]]></description>
                <content:encoded>&lt;p&gt;After fourteen episodes of discovering how much CSS can do by itself, it&amp;#39;s time for the obvious question: do we still need frameworks? Parisa and Jules compare plain CSS, Bootstrap-style component systems, utility-first approaches, CSS Modules, CSS-in-JS, Sass, and PostCSS—not to crown a universal winner, but to build a practical way to decide whether a project&amp;#39;s problems actually justify another dependency.&lt;/p&gt;</content:encoded>
                
                <enclosure length="7932029" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5e3cb707-3f7a-4d13-ac81-8af1fb3ccb20/stream.mp3"/>
                
                <guid isPermaLink="false">7cdb75eb-8572-4eb9-8e0e-0f0d2b819d94</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:51:54 &#43;0000</pubDate>
                <itunes:duration>495</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 13 - Animation Without Making Everyone Sick</itunes:title>
                <title>Modern CSS - Episode 13 - Animation Without Making Everyone Sick</title>

                <itunes:episode>13</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Motion can communicate state and relationships—or it can make your interface physically unpleasant to use. This episode looks at transitions, keyframes, transforms, opacity, <code>prefers-reduced-motion</code>, View Transitions, scroll-driven animations, and when CSS versus JavaScript should control motion, with accessibility treated as part of the animation decision rather than an afterthought.</p>]]></description>
                <content:encoded>&lt;p&gt;Motion can communicate state and relationships—or it can make your interface physically unpleasant to use. This episode looks at transitions, keyframes, transforms, opacity, &lt;code&gt;prefers-reduced-motion&lt;/code&gt;, View Transitions, scroll-driven animations, and when CSS versus JavaScript should control motion, with accessibility treated as part of the animation decision rather than an afterthought.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4607164" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/88bc21d6-f21b-4d65-b814-bf4fe66ac9a9/stream.mp3"/>
                
                <guid isPermaLink="false">16ebdf76-2cd6-4646-9ea4-9cdefde4b354</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:50:52 &#43;0000</pubDate>
                <itunes:duration>287</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 12 - Modern Color — CSS Learned Math and Developed Opinions About Purple</itunes:title>
                <title>Modern CSS - Episode 12 - Modern Color — CSS Learned Math and Developed Opinions About Purple</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Hex and RGB aren&#39;t the whole color story anymore. Parisa and Jules venture into modern CSS color with OKLCH, wider color gamuts, <code>color-mix()</code>, relative colors, gradient color spaces, alpha, gamut mapping, fallbacks, and design tokens—while making one thing very clear: fancy color math does not excuse you from actually testing contrast.</p>]]></description>
                <content:encoded>&lt;p&gt;Hex and RGB aren&amp;#39;t the whole color story anymore. Parisa and Jules venture into modern CSS color with OKLCH, wider color gamuts, &lt;code&gt;color-mix()&lt;/code&gt;, relative colors, gradient color spaces, alpha, gamut mapping, fallbacks, and design tokens—while making one thing very clear: fancy color math does not excuse you from actually testing contrast.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4486373" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/6e740f70-15c4-40b4-901c-01ea2ba9216c/stream.mp3"/>
                
                <guid isPermaLink="false">b05e1595-f6fc-4605-9a0e-a2b3528359ce</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:50:07 &#43;0000</pubDate>
                <itunes:duration>280</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 11 - Logical Properties — CSS That Stops Assuming Everyone Reads Like You</itunes:title>
                <title>Modern CSS - Episode 11 - Logical Properties — CSS That Stops Assuming Everyone Reads Like You</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p><code>margin-left</code> seems harmless until “left” isn&#39;t actually the direction your interface needs. This episode explores CSS logical properties, inline and block directions, logical sizing and positioning, writing modes, bidirectional layouts, icons, and how flow-relative CSS can remove assumptions about language and reading direction from your layouts.</p>]]></description>
                <content:encoded>&lt;p&gt;&lt;code&gt;margin-left&lt;/code&gt; seems harmless until “left” isn&amp;#39;t actually the direction your interface needs. This episode explores CSS logical properties, inline and block directions, logical sizing and positioning, writing modes, bidirectional layouts, icons, and how flow-relative CSS can remove assumptions about language and reading direction from your layouts.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4198817" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8fe4c8b7-8ef1-45cb-87bc-31f80a554dcc/stream.mp3"/>
                
                <guid isPermaLink="false">041314f9-f55d-4783-8074-f3abed72867d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:49:24 &#43;0000</pubDate>
                <itunes:duration>262</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 10 - Tailwind — Why Are There 900 Classes in My HTML?</itunes:title>
                <title>Modern CSS - Episode 10 - Tailwind — Why Are There 900 Classes in My HTML?</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Utility-first CSS can be a genuine culture shock when you&#39;re used to semantic class names and separate stylesheets. Parisa, Jules, and Sabrina unpack what Tailwind actually is, why developers like it, how variants and its modern CSS-first approach work, where all those classes come from, and the real tradeoffs around composition, maintainability, accessibility, and dynamic class generation.</p>]]></description>
                <content:encoded>&lt;p&gt;Utility-first CSS can be a genuine culture shock when you&amp;#39;re used to semantic class names and separate stylesheets. Parisa, Jules, and Sabrina unpack what Tailwind actually is, why developers like it, how variants and its modern CSS-first approach work, where all those classes come from, and the real tradeoffs around composition, maintainability, accessibility, and dynamic class generation.&lt;/p&gt;</content:encoded>
                
                <enclosure length="6758400" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/b8fa4c6e-b485-4e34-82ba-6f63e851853e/stream.mp3"/>
                
                <guid isPermaLink="false">51459508-d040-4f76-a43f-8615ab7ab75c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:48:41 &#43;0000</pubDate>
                <itunes:duration>422</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 9 - PostCSS — Wait, This Isn&#39;t Another Sass, Right?</itunes:title>
                <title>Modern CSS - Episode 9 - PostCSS — Wait, This Isn&#39;t Another Sass, Right?</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>PostCSS keeps appearing in modern build systems, often without anyone formally introducing it. This episode explains PostCSS as a CSS-processing pipeline, how plugins like Autoprefixer fit in, why Node is involved, how browser targets affect generated CSS, and why PostCSS isn&#39;t automatically a preprocessor or a magical “future CSS” translator.</p>]]></description>
                <content:encoded>&lt;p&gt;PostCSS keeps appearing in modern build systems, often without anyone formally introducing it. This episode explains PostCSS as a CSS-processing pipeline, how plugins like Autoprefixer fit in, why Node is involved, how browser targets affect generated CSS, and why PostCSS isn&amp;#39;t automatically a preprocessor or a magical “future CSS” translator.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4854177" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/4f8b7673-a83d-4bfc-b901-612f173f028b/stream.mp3"/>
                
                <guid isPermaLink="false">98d91406-c33b-4c2e-b7eb-8373d4af5522</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:47:55 &#43;0000</pubDate>
                <itunes:duration>303</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 8 - Sass in 2026 — Are We Still Doing This?</itunes:title>
                <title>Modern CSS - Episode 8 - Sass in 2026 — Are We Still Doing This?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Native CSS has variables, nesting, color functions, and increasingly powerful layout tools, so... do we still need Sass? Instead of holding a funeral for a perfectly functional preprocessor, Parisa and Jules examine what Sass actually does, which of its old jobs CSS has absorbed, what build-time features remain genuinely useful, and how to decide whether Sass is still earning its place in a project.</p>]]></description>
                <content:encoded>&lt;p&gt;Native CSS has variables, nesting, color functions, and increasingly powerful layout tools, so... do we still need Sass? Instead of holding a funeral for a perfectly functional preprocessor, Parisa and Jules examine what Sass actually does, which of its old jobs CSS has absorbed, what build-time features remain genuinely useful, and how to decide whether Sass is still earning its place in a project.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4975386" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e7789f20-3e92-4548-99c3-806e20141b45/stream.mp3"/>
                
                <guid isPermaLink="false">78d2045b-0af8-44e6-bf01-29168d14218e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:47:15 &#43;0000</pubDate>
                <itunes:duration>310</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 7 - The Cascade Strikes Back — Specificity, Layers, Scope and Nesting</itunes:title>
                <title>Modern CSS - Episode 7 - The Cascade Strikes Back — Specificity, Layers, Scope and Nesting</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The cascade gets blamed for a lot of CSS misery, but the problem is often that nobody explained what the damn thing is deciding. Parisa and Jules unpack specificity and <code>!important</code>, then explore cascade layers, native CSS nesting, and <code>@scope</code>—different tools for controlling precedence, structure, and boundaries without building an even more elaborate specificity war.</p>]]></description>
                <content:encoded>&lt;p&gt;The cascade gets blamed for a lot of CSS misery, but the problem is often that nobody explained what the damn thing is deciding. Parisa and Jules unpack specificity and &lt;code&gt;!important&lt;/code&gt;, then explore cascade layers, native CSS nesting, and &lt;code&gt;@scope&lt;/code&gt;—different tools for controlling precedence, structure, and boundaries without building an even more elaborate specificity war.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4817397" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/1209ab56-a0d5-4383-b2b7-eb8aad871b86/stream.mp3"/>
                
                <guid isPermaLink="false">954ec5d8-f3bb-4935-9b7c-ab66134a2e15</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:46:38 &#43;0000</pubDate>
                <itunes:duration>301</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 6 - Selectors Got Weirdly Powerful — :has(), :is(), :where() and Friends</itunes:title>
                <title>Modern CSS - Episode 6 - Selectors Got Weirdly Powerful — :has(), :is(), :where() and Friends</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>CSS selectors have acquired some serious new tricks. This episode digs into <code>:is()</code>, <code>:where()</code>, <code>:has()</code>, modern <code>:not()</code>, forgiving selector lists, specificity, and the long-awaited ability to select elements based on what they contain—all while resisting the temptation to turn clever selectors into an unreadable crime scene.</p>]]></description>
                <content:encoded>&lt;p&gt;CSS selectors have acquired some serious new tricks. This episode digs into &lt;code&gt;:is()&lt;/code&gt;, &lt;code&gt;:where()&lt;/code&gt;, &lt;code&gt;:has()&lt;/code&gt;, modern &lt;code&gt;:not()&lt;/code&gt;, forgiving selector lists, specificity, and the long-awaited ability to select elements based on what they contain—all while resisting the temptation to turn clever selectors into an unreadable crime scene.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4659826" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/dd9510d2-b591-4755-b3ca-c6d51d770f22/stream.mp3"/>
                
                <guid isPermaLink="false">5156acf0-e6c9-455a-aa3d-f2370753e59d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:45:53 &#43;0000</pubDate>
                <itunes:duration>291</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 5 - Container Queries — The Component Finally Knows Where It Lives</itunes:title>
                <title>Modern CSS - Episode 5 - Container Queries — The Component Finally Knows Where It Lives</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Media queries know about the viewport, but reusable components don&#39;t always give a shit how wide the viewport is—they care about the space they&#39;re actually given. Parisa and Jules explain container queries, query containers, container units, size and style queries, progressive enhancement, and why this feature changes how we can think about truly reusable components.</p>]]></description>
                <content:encoded>&lt;p&gt;Media queries know about the viewport, but reusable components don&amp;#39;t always give a shit how wide the viewport is—they care about the space they&amp;#39;re actually given. Parisa and Jules explain container queries, query containers, container units, size and style queries, progressive enhancement, and why this feature changes how we can think about truly reusable components.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4709146" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a236c49e-e393-406e-b32a-6436c1b27df6/stream.mp3"/>
                
                <guid isPermaLink="false">ff981114-796f-41cb-ac5f-eae5f6aa5ede</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:45:13 &#43;0000</pubDate>
                <itunes:duration>294</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 4 - Responsive CSS Without Seventeen Breakpoints</itunes:title>
                <title>Modern CSS - Episode 4 - Responsive CSS Without Seventeen Breakpoints</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Responsive design doesn&#39;t have to mean collecting device breakpoints like Pokémon. This episode explores intrinsic layouts, <code>min()</code>, <code>max()</code>, <code>clamp()</code>, Grid&#39;s <code>auto-fit</code> and <code>auto-fill</code>, modern viewport units, content-driven breakpoints, and how letting the browser negotiate available space can eliminate a surprising amount of media-query micromanagement.</p>]]></description>
                <content:encoded>&lt;p&gt;Responsive design doesn&amp;#39;t have to mean collecting device breakpoints like Pokémon. This episode explores intrinsic layouts, &lt;code&gt;min()&lt;/code&gt;, &lt;code&gt;max()&lt;/code&gt;, &lt;code&gt;clamp()&lt;/code&gt;, Grid&amp;#39;s &lt;code&gt;auto-fit&lt;/code&gt; and &lt;code&gt;auto-fill&lt;/code&gt;, modern viewport units, content-driven breakpoints, and how letting the browser negotiate available space can eliminate a surprising amount of media-query micromanagement.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4934426" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e2365516-7e81-4191-bfe2-d42bf8f39f04/stream.mp3"/>
                
                <guid isPermaLink="false">01b14bbc-f260-4206-9786-b3a2a9d7f30c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:44:25 &#43;0000</pubDate>
                <itunes:duration>308</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 3 - Flexbox and Grid — We Can Stop Abusing Floats Now</itunes:title>
                <title>Modern CSS - Episode 3 - Flexbox and Grid — We Can Stop Abusing Floats Now</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>For years, web developers made layouts with a CSS feature designed to let text wrap around pictures. It was weird, but we survived. Parisa and Jules revisit the float years before digging into what Flexbox and Grid were actually designed to solve, how their layout models differ, and why choosing between them is less about picking a winner and more about understanding the relationship you&#39;re trying to describe.</p>]]></description>
                <content:encoded>&lt;p&gt;For years, web developers made layouts with a CSS feature designed to let text wrap around pictures. It was weird, but we survived. Parisa and Jules revisit the float years before digging into what Flexbox and Grid were actually designed to solve, how their layout models differ, and why choosing between them is less about picking a winner and more about understanding the relationship you&amp;#39;re trying to describe.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12025103" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ea71071a-059d-4024-b24d-2f823dd6c005/stream.mp3"/>
                
                <guid isPermaLink="false">cc24d97a-c4f7-493a-bf61-300c7a3f859c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:42:41 &#43;0000</pubDate>
                <itunes:duration>751</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 2 - CSS Variables — Oh, So Sass Variables Aren&#39;t the Same Thing</itunes:title>
                <title>Modern CSS - Episode 2 - CSS Variables — Oh, So Sass Variables Aren&#39;t the Same Thing</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>They both have “variables” in the name, but Sass variables and CSS custom properties fundamentally live in different worlds. This episode explores build time versus runtime, the cascade, inheritance, scope, fallbacks, computed values, and how custom properties can become a surprisingly powerful API for components.</p>]]></description>
                <content:encoded>&lt;p&gt;They both have “variables” in the name, but Sass variables and CSS custom properties fundamentally live in different worlds. This episode explores build time versus runtime, the cascade, inheritance, scope, fallbacks, computed values, and how custom properties can become a surprisingly powerful API for components.&lt;/p&gt;</content:encoded>
                
                <enclosure length="15875343" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/0ca47c03-8aa9-413f-b650-78f08d266293/stream.mp3"/>
                
                <guid isPermaLink="false">73bf4c49-5f65-4b05-a703-444d7b2728cc</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:41:52 &#43;0000</pubDate>
                <itunes:duration>992</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CSS - Episode 1 - What Happened to CSS?</itunes:title>
                <title>Modern CSS - Episode 1 - What Happened to CSS?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>3</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>CSS changed—a lot. If you learned it during the era of floats, clearfixes, browser hacks, and preprocessors, modern CSS can feel like somebody quietly replaced half the language while you weren&#39;t looking. Parisa and Jules trace how we got from old-school CSS to Grid, custom properties, container queries, and other native features, while sorting out browser support, progressive enhancement, and why there was never actually a “CSS4.”</p>]]></description>
                <content:encoded>&lt;p&gt;CSS changed—a lot. If you learned it during the era of floats, clearfixes, browser hacks, and preprocessors, modern CSS can feel like somebody quietly replaced half the language while you weren&amp;#39;t looking. Parisa and Jules trace how we got from old-school CSS to Grid, custom properties, container queries, and other native features, while sorting out browser support, progressive enhancement, and why there was never actually a “CSS4.”&lt;/p&gt;</content:encoded>
                
                <enclosure length="28245263" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d4fc5a53-03e6-47a0-94b8-f8bd660a1b23/stream.mp3"/>
                
                <guid isPermaLink="false">a09a77c2-b66c-4a1d-816f-db59351213a0</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:40:29 &#43;0000</pubDate>
                <itunes:duration>1765</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Node/NPM - Episode 4 - What Actually Happens When You Run npm run dev?</itunes:title>
                <title>Node/NPM - Episode 4 - What Actually Happens When You Run npm run dev?</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>2</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Everyone knows <code>npm run dev</code> starts the project. That is not the same thing as knowing what the hell it actually does. Parisa and Jules trace the command from the terminal through npm, <code>package.json</code>, local binaries, Node, and Vite to show how a modern development server actually starts—and where the shell, package manager, runtime, and tooling each fit into the process.</p>]]></description>
                <content:encoded>&lt;p&gt;Everyone knows &lt;code&gt;npm run dev&lt;/code&gt; starts the project. That is not the same thing as knowing what the hell it actually does. Parisa and Jules trace the command from the terminal through npm, &lt;code&gt;package.json&lt;/code&gt;, local binaries, Node, and Vite to show how a modern development server actually starts—and where the shell, package manager, runtime, and tooling each fit into the process.&lt;/p&gt;</content:encoded>
                
                <enclosure length="25232613" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/61bfcd8f-47a5-4688-bd0a-cef7e31589a7/stream.mp3"/>
                
                <guid isPermaLink="false">1ba5def1-3cfa-40c6-b600-f78a841eb71e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:37:05 &#43;0000</pubDate>
                <itunes:duration>1577</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Node/NPM - Episode 3 - package.json, node_modules &amp; Dependency Hell</itunes:title>
                <title>Node/NPM - Episode 3 - package.json, node_modules &amp; Dependency Hell</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>2</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why can you delete <code>node_modules</code> and magically bring it back? Parisa and Jules unpack the relationship between <code>package.json</code>, <code>package-lock.json</code>, and <code>node_modules</code>, including direct versus transitive dependencies, version ranges, lockfiles, reproducible installs, dependency trees, and how a perfectly reasonable package system occasionally turns into dependency hell.</p>]]></description>
                <content:encoded>&lt;p&gt;Why can you delete &lt;code&gt;node_modules&lt;/code&gt; and magically bring it back? Parisa and Jules unpack the relationship between &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;package-lock.json&lt;/code&gt;, and &lt;code&gt;node_modules&lt;/code&gt;, including direct versus transitive dependencies, version ranges, lockfiles, reproducible installs, dependency trees, and how a perfectly reasonable package system occasionally turns into dependency hell.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23812388" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ca61c75a-96ef-4f85-88d8-1a46a0cd2354/stream.mp3"/>
                
                <guid isPermaLink="false">4cd03bbf-ec7d-407a-9639-551c7a2f7b3a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:36:02 &#43;0000</pubDate>
                <itunes:duration>1488</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Node/NPM - Episode 2 - npm — Composer, But Make It JavaScript</itunes:title>
                <title>Node/NPM - Episode 2 - npm — Composer, But Make It JavaScript</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>2</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>You type <code>npm install</code>, your terminal loses its mind, and suddenly thousands of files appear. What actually happened? This episode explains what npm is, why package managers exist, how dependencies and package registries work, and why modern JavaScript projects stopped downloading random ZIP files and copying libraries into folders by hand.</p>]]></description>
                <content:encoded>&lt;p&gt;You type &lt;code&gt;npm install&lt;/code&gt;, your terminal loses its mind, and suddenly thousands of files appear. What actually happened? This episode explains what npm is, why package managers exist, how dependencies and package registries work, and why modern JavaScript projects stopped downloading random ZIP files and copying libraries into folders by hand.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22298958" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/51a34f63-b813-458a-93e8-eea764f1850a/stream.mp3"/>
                
                <guid isPermaLink="false">b6315f0d-8b67-40f4-b00d-fd9b42615d60</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:34:55 &#43;0000</pubDate>
                <itunes:duration>1393</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Node/NPM - Episode 1 - Node.js — Who Let JavaScript Out of the Browser?</itunes:title>
                <title>Node/NPM - Episode 1 - Node.js — Who Let JavaScript Out of the Browser?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>2</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>JavaScript used to live in the browser. Then Node showed up and suddenly JavaScript could run servers, command-line tools, build systems, and half the modern web-development ecosystem. Parisa and Jules break down what a JavaScript runtime actually is, why Node exists, what it gives JavaScript outside the browser, and why installing Node somehow became step one of making a website.</p>]]></description>
                <content:encoded>&lt;p&gt;JavaScript used to live in the browser. Then Node showed up and suddenly JavaScript could run servers, command-line tools, build systems, and half the modern web-development ecosystem. Parisa and Jules break down what a JavaScript runtime actually is, why Node exists, what it gives JavaScript outside the browser, and why installing Node somehow became step one of making a website.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12164284" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/6d8c5e31-cf9a-4176-b9f5-3c1590b09bd3/stream.mp3"/>
                
                <guid isPermaLink="false">31326b3b-7dc1-4a38-b796-eeb620258306</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:33:28 &#43;0000</pubDate>
                <itunes:duration>760</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 9 — Put It in a Real Project</itunes:title>
                <title>Typescript - Episode 9 — Put It in a Real Project</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Knowing TypeScript syntax is one thing. Deciding whether and how to use it in an actual codebase is another. Parisa and Jules cover gradual adoption, JavaScript and TypeScript living together, third-party type declarations, untrusted network data, a quick look at TSX, migration strategy, and the situations where TypeScript genuinely pays rent.</p>]]></description>
                <content:encoded>&lt;p&gt;Knowing TypeScript syntax is one thing. Deciding whether and how to use it in an actual codebase is another. Parisa and Jules cover gradual adoption, JavaScript and TypeScript living together, third-party type declarations, untrusted network data, a quick look at TSX, migration strategy, and the situations where TypeScript genuinely pays rent.&lt;/p&gt;</content:encoded>
                
                <enclosure length="7205198" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/322caa68-e3ff-4c0b-aa23-191c9c733e1b/stream.mp3"/>
                
                <guid isPermaLink="false">6bf80f86-3c34-4006-9949-2c1b71aba88a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:29:38 &#43;0000</pubDate>
                <itunes:duration>450</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 8 — Who Invited the Compiler?</itunes:title>
                <title>Typescript - Episode 8 — Who Invited the Compiler?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>TypeScript is more than type annotations — there is also an actual toolchain involved. This episode sorts out <code>tsc</code>, <code>tsconfig.json</code>, strict mode, targets, modules, emitting JavaScript, source maps, type dependencies, and the difference between the type checker, compiler, transpiler, bundler, and runtime.</p>]]></description>
                <content:encoded>&lt;p&gt;TypeScript is more than type annotations — there is also an actual toolchain involved. This episode sorts out &lt;code&gt;tsc&lt;/code&gt;, &lt;code&gt;tsconfig.json&lt;/code&gt;, strict mode, targets, modules, emitting JavaScript, source maps, type dependencies, and the difference between the type checker, compiler, transpiler, bundler, and runtime.&lt;/p&gt;</content:encoded>
                
                <enclosure length="6867069" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d44f80e8-5fc2-45de-a4dd-37a01c1955c4/stream.mp3"/>
                
                <guid isPermaLink="false">4537c835-8f59-4449-8960-9b900622c0aa</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:28:44 &#43;0000</pubDate>
                <itunes:duration>429</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 7 — The Escape Hatches Department</itunes:title>
                <title>Typescript - Episode 7 — The Escape Hatches Department</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>What happens when you really want TypeScript to stop asking questions? Parisa and Jules tour <code>any</code>, <code>unknown</code>, type assertions, the non-null assertion, and <code>never</code>, including when these tools are genuinely useful and when they are just creative ways to disable the smoke detector.</p>]]></description>
                <content:encoded>&lt;p&gt;What happens when you really want TypeScript to stop asking questions? Parisa and Jules tour &lt;code&gt;any&lt;/code&gt;, &lt;code&gt;unknown&lt;/code&gt;, type assertions, the non-null assertion, and &lt;code&gt;never&lt;/code&gt;, including when these tools are genuinely useful and when they are just creative ways to disable the smoke detector.&lt;/p&gt;</content:encoded>
                
                <enclosure length="5942543" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5a5ef8a0-00b3-44be-97dc-71cea0b930b7/stream.mp3"/>
                
                <guid isPermaLink="false">7950cd6f-c8c1-4918-8b96-027c3e11f7f5</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:27:52 &#43;0000</pubDate>
                <itunes:duration>371</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 6 — The Reusable Type Machine</itunes:title>
                <title>Typescript - Episode 6 — The Reusable Type Machine</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Generics can look like algebra wandered into your JavaScript, but the idea is simpler than the angle brackets suggest. This episode explains type parameters, generic functions, constraints, generic types, built-in generics, and how generics preserve relationships between values without throwing away useful type information.</p>]]></description>
                <content:encoded>&lt;p&gt;Generics can look like algebra wandered into your JavaScript, but the idea is simpler than the angle brackets suggest. This episode explains type parameters, generic functions, constraints, generic types, built-in generics, and how generics preserve relationships between values without throwing away useful type information.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3512946" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/18c3c94d-9fd9-40d6-825e-0990b7a500a7/stream.mp3"/>
                
                <guid isPermaLink="false">7c0e10ec-d06a-4cf7-93ed-54f19a1c9909</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:26:56 &#43;0000</pubDate>
                <itunes:duration>219</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 5 — Functions Have Boundaries</itunes:title>
                <title>Typescript - Episode 5 — Functions Have Boundaries</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Functions are where values enter, leave, and occasionally return later with consequences. Parisa and Jules look at parameter types, return types, optional and default parameters, rest parameters, callbacks, function types, <code>void</code>, methods, <code>this</code>, and why function boundaries are one of the places TypeScript can earn its keep.</p>]]></description>
                <content:encoded>&lt;p&gt;Functions are where values enter, leave, and occasionally return later with consequences. Parisa and Jules look at parameter types, return types, optional and default parameters, rest parameters, callbacks, function types, &lt;code&gt;void&lt;/code&gt;, methods, &lt;code&gt;this&lt;/code&gt;, and why function boundaries are one of the places TypeScript can earn its keep.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3013903" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/eb92a1f2-a087-4067-945a-6785dd58e113/stream.mp3"/>
                
                <guid isPermaLink="false">080d9167-3110-4915-ab45-257545c6e483</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:26:02 &#43;0000</pubDate>
                <itunes:duration>188</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 4 — Please Describe Your Object</itunes:title>
                <title>Typescript - Episode 4 — Please Describe Your Object</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How does TypeScript decide whether an object has the right shape? This episode covers structural typing, object literal checks, optional and readonly properties, type aliases, interfaces, arrays, tuples, and the important difference between describing data well and simply making the compiler stop complaining.</p>]]></description>
                <content:encoded>&lt;p&gt;How does TypeScript decide whether an object has the right shape? This episode covers structural typing, object literal checks, optional and readonly properties, type aliases, interfaces, arrays, tuples, and the important difference between describing data well and simply making the compiler stop complaining.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3739480" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/11264ce4-4a36-453b-b852-7e0d5f79fcc5/stream.mp3"/>
                
                <guid isPermaLink="false">20bcf697-296e-48f4-9a51-795ee8234e88</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:25:09 &#43;0000</pubDate>
                <itunes:duration>233</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 3 — It Can Be a String or a Number. Now What?</itunes:title>
                <title>Typescript - Episode 3 — It Can Be a String or a Number. Now What?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Sometimes a value really can be more than one thing. Parisa and Jules explore union types, narrowing, control-flow analysis, <code>null</code>, <code>undefined</code>, optional values, literal types, discriminated unions, and why TypeScript needs proof before it lets you treat a value as something more specific.</p>]]></description>
                <content:encoded>&lt;p&gt;Sometimes a value really can be more than one thing. Parisa and Jules explore union types, narrowing, control-flow analysis, &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;undefined&lt;/code&gt;, optional values, literal types, discriminated unions, and why TypeScript needs proof before it lets you treat a value as something more specific.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3595702" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/7f664592-0f23-45d1-90ba-2bc5e01861db/stream.mp3"/>
                
                <guid isPermaLink="false">26711aed-4493-4c8c-b1d0-67f94d4c6ecd</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:24:00 &#43;0000</pubDate>
                <itunes:duration>224</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 2 — JavaScript Already Has Types, So What the Hell?</itunes:title>
                <title>Typescript - Episode 2 — JavaScript Already Has Types, So What the Hell?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>JavaScript already has strings, numbers, booleans, objects, <code>undefined</code>, <code>null</code>, and more — so what does TypeScript mean when it talks about types? This episode separates runtime types from static types, digs into inference, arrays, function boundaries, and explains what TypeScript is actually adding to JavaScript.</p>]]></description>
                <content:encoded>&lt;p&gt;JavaScript already has strings, numbers, booleans, objects, &lt;code&gt;undefined&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt;, and more — so what does TypeScript mean when it talks about types? This episode separates runtime types from static types, digs into inference, arrays, function boundaries, and explains what TypeScript is actually adding to JavaScript.&lt;/p&gt;</content:encoded>
                
                <enclosure length="6896744" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/60b905f7-b3da-48cd-b7b6-f5c9b37d3f71/stream.mp3"/>
                
                <guid isPermaLink="false">e91a05bf-d3a9-4494-b00b-7998fa746ae4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:22:31 &#43;0000</pubDate>
                <itunes:duration>431</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Typescript - Episode 1 — JavaScript With a Complicated Little Hat</itunes:title>
                <title>Typescript - Episode 1 — JavaScript With a Complicated Little Hat</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>TypeScript looks a lot like JavaScript wearing extra paperwork, so what problem is it actually solving? Parisa and Jules break down what TypeScript is, why developers wanted it, how static checking differs from runtime behavior, what type inference does, and where TypeScript can help without pretending it magically prevents every bug.</p>]]></description>
                <content:encoded>&lt;p&gt;TypeScript looks a lot like JavaScript wearing extra paperwork, so what problem is it actually solving? Parisa and Jules break down what TypeScript is, why developers wanted it, how static checking differs from runtime behavior, what type inference does, and where TypeScript can help without pretending it magically prevents every bug.&lt;/p&gt;</content:encoded>
                
                <enclosure length="24602331" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/76c0497a-b037-4c87-877f-ad92515119e9/stream.mp3"/>
                
                <guid isPermaLink="false">38235fd9-3629-4207-9ee5-cc32768f051e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 07 Sep 2026 00:06:22 &#43;0000</pubDate>
                <itunes:duration>1537</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
    </channel>
</rss>
