<?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 Tue, 03 Nov 2026 18:51:29 &#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>AI - Episode 12 - Forward Deployed: Turning &#39;We Should Use AI&#39; Into Something Useful</itunes:title>
                <title>AI - Episode 12 - Forward Deployed: Turning &#39;We Should Use AI&#39; Into Something Useful</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>We return to the original support problem and follow the complete journey: discovery, scoping, prototyping, architecture, integration, evaluation, production, adoption, and feedback. Along the way, we explain Forward Deployed Engineering and compare it with software engineering, AI/ML engineering, solutions architecture, and DevRel. The final realization: technology is not the requirement. The problem is the requirement.</p>]]></description>
                <content:encoded>&lt;p&gt;We return to the original support problem and follow the complete journey: discovery, scoping, prototyping, architecture, integration, evaluation, production, adoption, and feedback. Along the way, we explain Forward Deployed Engineering and compare it with software engineering, AI/ML engineering, solutions architecture, and DevRel. The final realization: technology is not the requirement. The problem is the requirement.&lt;/p&gt;</content:encoded>
                
                <enclosure length="11653537" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d2956e6f-f5ec-4a5d-a698-44c605e922d4/stream.mp3"/>
                
                <guid isPermaLink="false">d085eab6-5d69-4218-8d8c-b3cc9b8859cb</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:48:54 &#43;0000</pubDate>
                <itunes:duration>728</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 11 - From Demo to Production: Oh Shit, People Are Actually Using It</itunes:title>
                <title>AI - Episode 11 - From Demo to Production: Oh Shit, People Are Actually Using It</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Real users have arrived, and so have latency, rate limits, privacy questions, and bills. We explore model choice, caching, fallbacks, logging, and operational ownership before comparing hosted APIs with local and self-hosted models. Sabrina brings the open-weight question; GPUs and quantization get plain-language explanations. The model turns out to be one dependency inside a much larger software system.</p>]]></description>
                <content:encoded>&lt;p&gt;Real users have arrived, and so have latency, rate limits, privacy questions, and bills. We explore model choice, caching, fallbacks, logging, and operational ownership before comparing hosted APIs with local and self-hosted models. Sabrina brings the open-weight question; GPUs and quantization get plain-language explanations. The model turns out to be one dependency inside a much larger software system.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9055503" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/77874771-bc10-4aef-b972-2fd1497e35bf/stream.mp3"/>
                
                <guid isPermaLink="false">17495362-8f3b-4fe3-973a-73d06260e2fc</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:48:21 &#43;0000</pubDate>
                <itunes:duration>565</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 10 - Evals, Hallucinations &amp; Keeping the Robot From Ruining Tuesday</itunes:title>
                <title>AI - Episode 10 - Evals, Hallucinations &amp; Keeping the Robot From Ruining Tuesday</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The demo worked. Unfortunately, that’s not a test strategy. We try to break Support Assistant with missing policies, conflicting documents, unavailable services, malicious instructions, and unauthorized refund requests. Learn how ordinary tests, AI evaluations, human review, monitoring, and traces work together—and why a convincing answer or impressive average score can hide a serious failure.</p>]]></description>
                <content:encoded>&lt;p&gt;The demo worked. Unfortunately, that’s not a test strategy. We try to break Support Assistant with missing policies, conflicting documents, unavailable services, malicious instructions, and unauthorized refund requests. Learn how ordinary tests, AI evaluations, human review, monitoring, and traces work together—and why a convincing answer or impressive average score can hide a serious failure.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9154560" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8058a4f5-a374-444b-8af1-b54a30031a55/stream.mp3"/>
                
                <guid isPermaLink="false">c23f7ae6-f6a4-4010-8ea9-6174060dafeb</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:47:41 &#43;0000</pubDate>
                <itunes:duration>572</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 9 - Agents: Apparently the Robot Has a Job Now</itunes:title>
                <title>AI - Episode 9 - Agents: Apparently the Robot Has a Job Now</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>When does a chatbot with tools become an agent—and would that actually help? We compare tool assistants, predefined workflows, and systems that let a model choose what happens next. Planning, state, memory, orchestration, and multiple agents all get a turn, but so do budgets, stopping conditions, and the humble if statement. The robot’s lanyard remains under review.</p>]]></description>
                <content:encoded>&lt;p&gt;When does a chatbot with tools become an agent—and would that actually help? We compare tool assistants, predefined workflows, and systems that let a model choose what happens next. Planning, state, memory, orchestration, and multiple agents all get a turn, but so do budgets, stopping conditions, and the humble if statement. The robot’s lanyard remains under review.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8874109" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/bd63e016-cdb6-40a6-a8bb-031a1990e58f/stream.mp3"/>
                
                <guid isPermaLink="false">f76f9291-a1a3-43e5-857b-8e8355286194</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:47:12 &#43;0000</pubDate>
                <itunes:duration>554</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 8 - MCP: Why Does AI Need Another Damn Protocol?</itunes:title>
                <title>AI - Episode 8 - MCP: Why Does AI Need Another Damn Protocol?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>We already have APIs and tool calling. What problem is MCP trying to solve? Parisa, Jules, and Sabrina untangle hosts, clients, servers, tools, resources, and prompts as Support Assistant connects to more systems. The USB-C analogy makes an appearance—with limits—because a shared connection format doesn’t guarantee compatibility, trustworthy integrations, or permission to access everything.</p>]]></description>
                <content:encoded>&lt;p&gt;We already have APIs and tool calling. What problem is MCP trying to solve? Parisa, Jules, and Sabrina untangle hosts, clients, servers, tools, resources, and prompts as Support Assistant connects to more systems. The USB-C analogy makes an appearance—with limits—because a shared connection format doesn’t guarantee compatibility, trustworthy integrations, or permission to access everything.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8551862" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/695b01b1-46d6-44a4-a8ca-331ff9067c22/stream.mp3"/>
                
                <guid isPermaLink="false">e81485c1-0a72-4089-a298-0c909c87b0e8</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:46:44 &#43;0000</pubDate>
                <itunes:duration>534</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 7 - Tools &amp; Function Calling: Letting the Robot Do Things</itunes:title>
                <title>AI - Episode 7 - Tools &amp; Function Calling: Letting the Robot Do Things</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Reading the shipping policy is useful. Checking a real order requires a different capability. We follow a tool call from the model’s proposed arguments through application-controlled validation, authorization, execution, and results. Then someone asks for a refund, and suddenly permissions, human approval, accessible confirmations, and avoiding duplicate transactions become very relevant.</p>]]></description>
                <content:encoded>&lt;p&gt;Reading the shipping policy is useful. Checking a real order requires a different capability. We follow a tool call from the model’s proposed arguments through application-controlled validation, authorization, execution, and results. Then someone asks for a refund, and suddenly permissions, human approval, accessible confirmations, and avoiding duplicate transactions become very relevant.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8181551" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/c0cf4979-ba95-4ab6-9c01-9dc0b858c59c/stream.mp3"/>
                
                <guid isPermaLink="false">575042c6-7293-4f5c-86cf-6bfd058bb4e0</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:46:20 &#43;0000</pubDate>
                <itunes:duration>511</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 6 - RAG: Giving AI a Filing Cabinet</itunes:title>
                <title>AI - Episode 6 - RAG: Giving AI a Filing Cabinet</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Brenda’s 40,000 documents are back, and this time we’re retrieving the useful ones. We explain retrieval-augmented generation, embeddings, vectors, semantic search, and chunking without turning the episode into a mathematics lecture. Learn how RAG differs from keyword search and fine-tuning—and why retrieving a passage doesn’t automatically make the resulting answer correct.</p>]]></description>
                <content:encoded>&lt;p&gt;Brenda’s 40,000 documents are back, and this time we’re retrieving the useful ones. We explain retrieval-augmented generation, embeddings, vectors, semantic search, and chunking without turning the episode into a mathematics lecture. Learn how RAG differs from keyword search and fine-tuning—and why retrieving a passage doesn’t automatically make the resulting answer correct.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8547265" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8db64351-981b-4349-b7d3-00f1bebd2dec/stream.mp3"/>
                
                <guid isPermaLink="false">ef568e3b-7415-45a9-8e80-d93568fcb368</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:45:34 &#43;0000</pubDate>
                <itunes:duration>534</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 5 - Putting AI in Software: Models, APIs &amp; SDKs</itunes:title>
                <title>AI - Episode 5 - Putting AI in Software: Models, APIs &amp; SDKs</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How does a model become a feature in your own application? Follow a request from the browser through your server to a model provider, with APIs, SDKs, streaming, token costs, and failure handling along the way. There’s a Chef Nervous Robot callback, a firm boundary around secret API keys, and a familiar realization: wait, that’s just JavaScript.</p>]]></description>
                <content:encoded>&lt;p&gt;How does a model become a feature in your own application? Follow a request from the browser through your server to a model provider, with APIs, SDKs, streaming, token costs, and failure handling along the way. There’s a Chef Nervous Robot callback, a firm boundary around secret API keys, and a familiar realization: wait, that’s just JavaScript.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8545175" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/1da09b8b-724c-49ec-99de-d6decc0ff8fa/stream.mp3"/>
                
                <guid isPermaLink="false">50d49c1c-2d38-437b-88ee-ab57295fae58</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:45:02 &#43;0000</pubDate>
                <itunes:duration>534</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 4 - Prompts, Context &amp; Talking to the Robot</itunes:title>
                <title>AI - Episode 4 - Prompts, Context &amp; Talking to the Robot</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Can we replace elaborate prompt rituals with a useful brief? Sabrina joins Parisa and Jules to discuss instructions, examples, context windows, randomness, and structured output. Brenda proposes pasting all 40,000 company documents into the prompt. We explain why that’s a problem—and why better prompting doesn’t mean training, guaranteed accuracy, or enforceable security.</p>]]></description>
                <content:encoded>&lt;p&gt;Can we replace elaborate prompt rituals with a useful brief? Sabrina joins Parisa and Jules to discuss instructions, examples, context windows, randomness, and structured output. Brenda proposes pasting all 40,000 company documents into the prompt. We explain why that’s a problem—and why better prompting doesn’t mean training, guaranteed accuracy, or enforceable security.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8860734" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/93e29bcd-144d-4e5f-b261-5254e780a082/stream.mp3"/>
                
                <guid isPermaLink="false">af5569ad-8a69-412c-8fe9-8bee16886495</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:44:29 &#43;0000</pubDate>
                <itunes:duration>553</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 3 - LLMs: Extremely Fancy Autocomplete?</itunes:title>
                <title>AI - Episode 3 - LLMs: Extremely Fancy Autocomplete?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Is a language model a digital mind or autocomplete wearing an expensive coat? We explore tokens, next-token prediction, transformers, attention, and context to understand what happens when an LLM generates an answer. Support Assistant discovers that sounding like an experienced employee is not the same as knowing the company’s actual refund policy.</p>]]></description>
                <content:encoded>&lt;p&gt;Is a language model a digital mind or autocomplete wearing an expensive coat? We explore tokens, next-token prediction, transformers, attention, and context to understand what happens when an LLM generates an answer. Support Assistant discovers that sounding like an experienced employee is not the same as knowing the company’s actual refund policy.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8898351" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/0cfb1e6f-c221-46c4-a417-696e1f6d1689/stream.mp3"/>
                
                <guid isPermaLink="false">9a4556b6-5b30-43c9-86a7-5584026dcbc6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:43:55 &#43;0000</pubDate>
                <itunes:duration>556</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 2 - How Does a Machine Learn Anything?</itunes:title>
                <title>AI - Episode 2 - How Does a Machine Learn Anything?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>If nobody programmed every answer, where did they come from? Parisa and Jules unpack training data, models, weights, neural networks, and the difference between training and inference. Along the way, “let’s train our own AI” turns out to contain several enormous assumptions—and using AI in a web application doesn’t suddenly require writing everything in Python.</p>]]></description>
                <content:encoded>&lt;p&gt;If nobody programmed every answer, where did they come from? Parisa and Jules unpack training data, models, weights, neural networks, and the difference between training and inference. Along the way, “let’s train our own AI” turns out to contain several enormous assumptions—and using AI in a web application doesn’t suddenly require writing everything in Python.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9737613" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/78cddaf8-df96-47e1-9faa-121a30b39831/stream.mp3"/>
                
                <guid isPermaLink="false">14ceb371-8f31-44fb-9636-4fe88a7769ca</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:43:17 &#43;0000</pubDate>
                <itunes:duration>608</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>AI - Episode 1 - What the Hell Is AI, Actually?</itunes:title>
                <title>AI - Episode 1 - What the Hell Is AI, Actually?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>14</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Management says, “We should add AI.” Parisa has a follow-up: “To do what?” We untangle AI, machine learning, deep learning, generative AI, and LLMs—and introduce Support Assistant, our fictional company’s attempt to help support staff find information without opening twelve tabs. Before choosing the technology, we need an actual problem.</p>]]></description>
                <content:encoded>&lt;p&gt;Management says, “We should add AI.” Parisa has a follow-up: “To do what?” We untangle AI, machine learning, deep learning, generative AI, and LLMs—and introduce Support Assistant, our fictional company’s attempt to help support staff find information without opening twelve tabs. Before choosing the technology, we need an actual problem.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9276604" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/82e75a40-3242-48a6-8d0c-b69e8fb69e17/stream.mp3"/>
                
                <guid isPermaLink="false">6865d913-cbbf-4831-bb47-68ec7faa3288</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Sun, 27 Sep 2026 16:41:26 &#43;0000</pubDate>
                <itunes:duration>579</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 12 - Do You Actually Need Any of This Shit?</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 12 - Do You Actually Need Any of This Shit?</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Our little podcast app probably never needed Kubernetes. From static portfolios to large distributed systems, we compare infrastructure choices against actual requirements, costs, and maintenance responsibilities. The goal isn’t the most impressive diagram—it’s a decision you can explain and sustain.</p>]]></description>
                <content:encoded>&lt;p&gt;Our little podcast app probably never needed Kubernetes. From static portfolios to large distributed systems, we compare infrastructure choices against actual requirements, costs, and maintenance responsibilities. The goal isn’t the most impressive diagram—it’s a decision you can explain and sustain.&lt;/p&gt;</content:encoded>
                
                <enclosure length="10752000" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/57b62cb5-40dc-4563-b58d-9dcac3123f10/stream.mp3"/>
                
                <guid isPermaLink="false">d29f3ac1-e02b-4131-92cb-6dc7908a3702</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:59:11 &#43;0000</pubDate>
                <itunes:duration>672</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 11 - Infrastructure as Code: Why Is My Server in Git?</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 11 - Infrastructure as Code: Why Is My Server in Git?</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Someone configured production six months ago. Nobody remembers exactly what they did. We explore how infrastructure as code makes those decisions reviewable and repeatable, why Terraform and OpenTofu keep state, and why Git cannot reverse time for your database.</p>]]></description>
                <content:encoded>&lt;p&gt;Someone configured production six months ago. Nobody remembers exactly what they did. We explore how infrastructure as code makes those decisions reviewable and repeatable, why Terraform and OpenTofu keep state, and why Git cannot reverse time for your database.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9246511" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/33b7eeda-fcc1-4b1a-8e4f-46d165e1ee9a/stream.mp3"/>
                
                <guid isPermaLink="false">16928e52-28eb-4424-b713-5ac584d20d80</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:58:38 &#43;0000</pubDate>
                <itunes:duration>577</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 10 - The Cloud Is Someone Else&#39;s Computer*</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 10 - The Cloud Is Someone Else&#39;s Computer*</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The asterisk is doing some serious work. We explore cloud services by what they manage: compute, storage, databases, networking, containers, and more. The useful question is how much responsibility you want to keep—and what you’re paying someone else to handle.</p>]]></description>
                <content:encoded>&lt;p&gt;The asterisk is doing some serious work. We explore cloud services by what they manage: compute, storage, databases, networking, containers, and more. The useful question is how much responsibility you want to keep—and what you’re paying someone else to handle.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9156649" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/2e77bc08-dbe9-4ba2-9a90-8632a4d5077b/stream.mp3"/>
                
                <guid isPermaLink="false">d0189301-897e-4d75-bb22-682ac92bffd4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:58:10 &#43;0000</pubDate>
                <itunes:duration>572</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 9 - Pods, Nodes &amp; Clusters, Oh My</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 9 - Pods, Nodes &amp; Clusters, Oh My</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Kubernetes has a lot of nouns. Now they have jobs. We connect clusters, nodes, Pods, Deployments, and Services through one simple example: we want three replicas, but only two exist. What happens next—and what can still go wrong?</p>]]></description>
                <content:encoded>&lt;p&gt;Kubernetes has a lot of nouns. Now they have jobs. We connect clusters, nodes, Pods, Deployments, and Services through one simple example: we want three replicas, but only two exist. What happens next—and what can still go wrong?&lt;/p&gt;</content:encoded>
                
                <enclosure length="8961880" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d4694e3e-ee09-4c80-ab58-073a3e2471f0/stream.mp3"/>
                
                <guid isPermaLink="false">d792a60b-a05e-4733-88e6-03ce1d8193d1</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:57:41 &#43;0000</pubDate>
                <itunes:duration>560</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 8 - Kubernetes: Who Asked for This?!</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 8 - Kubernetes: Who Asked for This?!</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>One container is manageable. Hundreds of containers across machines that occasionally fail create a different problem. Before introducing the vocabulary, we explain why orchestration exists—and why “Docker or Kubernetes?” is usually the wrong question.</p>]]></description>
                <content:encoded>&lt;p&gt;One container is manageable. Hundreds of containers across machines that occasionally fail create a different problem. Before introducing the vocabulary, we explain why orchestration exists—and why “Docker or Kubernetes?” is usually the wrong question.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8419369" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/3f30a3bd-a8e1-4c86-8fb4-362e6d951e0b/stream.mp3"/>
                
                <guid isPermaLink="false">08a5a95f-5e04-45a1-a8eb-3a24e3dcf2b1</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:57:12 &#43;0000</pubDate>
                <itunes:duration>526</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 7 - From Git Push to Production</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 7 - From Git Push to Production</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Pushing code means the code has traveled. It doesn’t necessarily mean anything is deployed. We trace a change through automated checks, image builds, registries, and production, then ask what happens when the green checkmark turns into a real-world problem.</p>]]></description>
                <content:encoded>&lt;p&gt;Pushing code means the code has traveled. It doesn’t necessarily mean anything is deployed. We trace a change through automated checks, image builds, registries, and production, then ask what happens when the green checkmark turns into a real-world problem.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8488333" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/bb7bb4ae-c293-494d-b087-e9d4b588d524/stream.mp3"/>
                
                <guid isPermaLink="false">e13b97b7-9acd-4036-a0a0-fb76dbb7db5e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:56:42 &#43;0000</pubDate>
                <itunes:duration>530</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 6 - Docker Compose: My App Has Friends</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 6 - Docker Compose: My App Has Friends</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Our fictional podcast app now has a frontend, an API, and a database. Docker Compose helps describe how they fit together—and Parisa discovers that familiar tools like DDEV and Lando have been doing quite a bit of this work already.</p>]]></description>
                <content:encoded>&lt;p&gt;Our fictional podcast app now has a frontend, an API, and a database. Docker Compose helps describe how they fit together—and Parisa discovers that familiar tools like DDEV and Lando have been doing quite a bit of this work already.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8685609" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/94f9cc3c-1237-408a-abd4-c5e1b289a4ec/stream.mp3"/>
                
                <guid isPermaLink="false">3623b21f-83b7-4c68-aa27-7aa2e29637e6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:56:20 &#43;0000</pubDate>
                <itunes:duration>542</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 5 - Why Can&#39;t My Container See Localhost?!</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 5 - Why Can&#39;t My Container See Localhost?!</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The API works. The database works. Together, they refuse to speak. We follow requests across container boundaries, decode port mappings, and discover why deleting a container can become a very unpleasant lesson about persistent storage.</p>]]></description>
                <content:encoded>&lt;p&gt;The API works. The database works. Together, they refuse to speak. We follow requests across container boundaries, decode port mappings, and discover why deleting a container can become a very unpleasant lesson about persistent storage.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9148290" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/6dc081a7-f03c-4800-a893-bb80d9aa30b5/stream.mp3"/>
                
                <guid isPermaLink="false">d34aa1ff-de33-41b9-aed1-7fe55afb5523</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:55:25 &#43;0000</pubDate>
                <itunes:duration>571</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 4 - Images, Containers &amp; Dockerfiles</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 4 - Images, Containers &amp; Dockerfiles</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A Dockerfile, an image, and a container walk into a deployment—and they are three different things. We untangle building, pulling, running, layers, and registries, with a frozen-lasagna metaphor that knows when to stop.</p>]]></description>
                <content:encoded>&lt;p&gt;A Dockerfile, an image, and a container walk into a deployment—and they are three different things. We untangle building, pulling, running, layers, and registries, with a frozen-lasagna metaphor that knows when to stop.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8473704" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d0129de3-fe82-4a13-84e0-32e88cef8259/stream.mp3"/>
                
                <guid isPermaLink="false">dac2e94e-e0e6-4bca-8ce5-06f14d0c914c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:55:02 &#43;0000</pubDate>
                <itunes:duration>529</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 3 - Docker: Who Asked for This?</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 3 - Docker: Who Asked for This?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>“It works on my machine” is less reassuring when nobody else has your machine. We explore the environment problems containers help solve, how Docker fits in, and why a container is not simply a tiny virtual machine.</p>]]></description>
                <content:encoded>&lt;p&gt;“It works on my machine” is less reassuring when nobody else has your machine. We explore the environment problems containers help solve, how Docker fits in, and why a container is not simply a tiny virtual machine.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8556878" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/791974ac-b1d6-4950-92d6-892fb7b474b1/stream.mp3"/>
                
                <guid isPermaLink="false">53cf0236-e6d0-48cf-9bc0-ca033c2b6af8</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:54:30 &#43;0000</pubDate>
                <itunes:duration>534</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 2 - Servers, VMs &amp; the Cloud Before Containers</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 2 - Servers, VMs &amp; the Cloud Before Containers</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why couldn’t we just put every application on one server? From shared hosting and cPanel to virtual machines, we explore resource sharing, isolation, and the infrastructure work that existed long before anyone called it “the cloud.”</p>]]></description>
                <content:encoded>&lt;p&gt;Why couldn’t we just put every application on one server? From shared hosting and cPanel to virtual machines, we explore resource sharing, isolation, and the infrastructure work that existed long before anyone called it “the cloud.”&lt;/p&gt;</content:encoded>
                
                <enclosure length="8876199" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5546d63d-67d3-4b7c-a2ab-0b6bf185e1cd/stream.mp3"/>
                
                <guid isPermaLink="false">f31b3a9a-c4dc-4e05-be2a-8fc8b56889e3</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:53:10 &#43;0000</pubDate>
                <itunes:duration>554</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Containers &amp; Infrastructure - Episode 1 - Where Does My App Actually Live?</itunes:title>
                <title>Containers &amp; Infrastructure - Episode 1 - Where Does My App Actually Live?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>13</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Underneath every framework and hosting dashboard, something is running on a computer. Parisa and Jules unpack processes, runtimes, memory, storage, ports, and servers—and explain why sending someone a localhost link does not count as deployment.</p>]]></description>
                <content:encoded>&lt;p&gt;Underneath every framework and hosting dashboard, something is running on a computer. Parisa and Jules unpack processes, runtimes, memory, storage, ports, and servers—and explain why sending someone a localhost link does not count as deployment.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9157067" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/1029fad5-111e-41cd-aeea-1c197c922d86/stream.mp3"/>
                
                <guid isPermaLink="false">7db3537c-ccd2-4821-98a8-9104507d33d5</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Fri, 25 Sep 2026 17:52:36 &#43;0000</pubDate>
                <itunes:duration>572</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 6 - Your Lighthouse Score Is Not an Accessibility Audit</itunes:title>
                <title>Accessibility - Episode 6 - Your Lighthouse Score Is Not an Accessibility Audit</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Lighthouse says 100. Congratulations! Are we accessible now? Parisa and Jules look at what automated accessibility testing can—and absolutely cannot—tell us. They dig into Lighthouse, axe, WAVE, browser accessibility tools, keyboard testing, screen readers, and manual checks, then put it all together into a development workflow where accessibility happens while we&#39;re building instead of during the traditional pre-launch panic.</p>]]></description>
                <content:encoded>&lt;p&gt;Lighthouse says 100. Congratulations! Are we accessible now? Parisa and Jules look at what automated accessibility testing can—and absolutely cannot—tell us. They dig into Lighthouse, axe, WAVE, browser accessibility tools, keyboard testing, screen readers, and manual checks, then put it all together into a development workflow where accessibility happens while we&amp;#39;re building instead of during the traditional pre-launch panic.&lt;/p&gt;</content:encoded>
                
                <enclosure length="25249750" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/bf2f66f9-e633-4b23-878f-567339954535/stream.mp3"/>
                
                <guid isPermaLink="false">823d4187-bfe5-4827-a893-9c55af5e7787</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:16:57 &#43;0000</pubDate>
                <itunes:duration>1578</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 5 - Your Design Is Lying to You</itunes:title>
                <title>Accessibility - Episode 5 - Your Design Is Lying to You</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>An interface can look completely obvious to the person who designed it and still create barriers for someone else. Parisa and Jules tackle contrast, color, zoom and reflow, motion, touch targets, labels, form errors, and cognitive load. Because “I can see what it means” turns out to be a pretty terrible accessibility testing methodology.</p>]]></description>
                <content:encoded>&lt;p&gt;An interface can look completely obvious to the person who designed it and still create barriers for someone else. Parisa and Jules tackle contrast, color, zoom and reflow, motion, touch targets, labels, form errors, and cognitive load. Because “I can see what it means” turns out to be a pretty terrible accessibility testing methodology.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23943209" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/23885ef6-20b4-4cec-80a1-d1be38b23b51/stream.mp3"/>
                
                <guid isPermaLink="false">fc379a7e-167b-45f1-8ee4-bb8a7df162a6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:16:30 &#43;0000</pubDate>
                <itunes:duration>1496</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 4 - ARIA: What Is This Shit Actually For?</itunes:title>
                <title>Accessibility - Episode 4 - ARIA: What Is This Shit Actually For?</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>ARIA is supposed to improve accessibility, so surely adding more ARIA makes things more accessible. Right? Absolutely not. Parisa and Jules figure out what ARIA actually communicates, when native HTML is the better answer, how roles, states, accessible names, descriptions, and live regions work, and why <code>role=&#34;button&#34;</code> doesn&#39;t magically turn a div into a button.</p>]]></description>
                <content:encoded>&lt;p&gt;ARIA is supposed to improve accessibility, so surely adding more ARIA makes things more accessible. Right? Absolutely not. Parisa and Jules figure out what ARIA actually communicates, when native HTML is the better answer, how roles, states, accessible names, descriptions, and live regions work, and why &lt;code&gt;role=&amp;#34;button&amp;#34;&lt;/code&gt; doesn&amp;#39;t magically turn a div into a button.&lt;/p&gt;</content:encoded>
                
                <enclosure length="25184548" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/f0c7c6da-3bfc-45b5-baf0-b07ca468e32c/stream.mp3"/>
                
                <guid isPermaLink="false">d68737db-20a4-4546-b85b-510d3c180ee5</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:16:02 &#43;0000</pubDate>
                <itunes:duration>1574</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 3 - Throw Away Your Mouse</itunes:title>
                <title>Accessibility - Episode 3 - Throw Away Your Mouse</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Your interface works perfectly—as long as everyone owns a mouse. Parisa and Jules put the mouse aside to explore keyboard navigation, focus, focus order, <code>tabindex</code>, skip links, dialogs, and focus management. They also discover why removing the focus outline is one of those tiny CSS decisions capable of causing a disproportionate amount of bullshit.</p>]]></description>
                <content:encoded>&lt;p&gt;Your interface works perfectly—as long as everyone owns a mouse. Parisa and Jules put the mouse aside to explore keyboard navigation, focus, focus order, &lt;code&gt;tabindex&lt;/code&gt;, skip links, dialogs, and focus management. They also discover why removing the focus outline is one of those tiny CSS decisions capable of causing a disproportionate amount of bullshit.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23137384" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d2c127b3-100b-44a0-abfd-c5fa141228eb/stream.mp3"/>
                
                <guid isPermaLink="false">21c893df-4d14-4064-a201-878a5627cbac</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:15:29 &#43;0000</pubDate>
                <itunes:duration>1446</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 2 - HTML Was Already Doing This</itunes:title>
                <title>Accessibility - Episode 2 - HTML Was Already Doing This</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why does it matter whether you use a button or a div if they look exactly the same? Parisa and Jules dig into semantic HTML, the DOM, the accessibility tree, and all the useful information and behavior browsers already provide when we use native elements correctly. Turns out HTML has been doing a surprising amount of accessibility work for us this whole time.</p>]]></description>
                <content:encoded>&lt;p&gt;Why does it matter whether you use a button or a div if they look exactly the same? Parisa and Jules dig into semantic HTML, the DOM, the accessibility tree, and all the useful information and behavior browsers already provide when we use native elements correctly. Turns out HTML has been doing a surprising amount of accessibility work for us this whole time.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23849586" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/630c82e7-4b16-479d-a260-35981931f409/stream.mp3"/>
                
                <guid isPermaLink="false">97889d44-9ec0-47ac-bfca-84158f5c4f78</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:15:00 &#43;0000</pubDate>
                <itunes:duration>1490</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Accessibility - Episode 1 - Who Is This Actually For?</itunes:title>
                <title>Accessibility - Episode 1 - Who Is This Actually For?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>12</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Accessibility gets reduced to checklists, screen readers, and “remember your alt text” way too easily. Parisa and Jules start with the bigger question: who actually encounters accessibility barriers on the web, how different people interact with the same interface, and what WCAG and POUR are actually trying to accomplish. Accessibility isn&#39;t a special version of the web. It&#39;s about not unnecessarily requiring everyone to use the web the same way.</p>]]></description>
                <content:encoded>&lt;p&gt;Accessibility gets reduced to checklists, screen readers, and “remember your alt text” way too easily. Parisa and Jules start with the bigger question: who actually encounters accessibility barriers on the web, how different people interact with the same interface, and what WCAG and POUR are actually trying to accomplish. Accessibility isn&amp;#39;t a special version of the web. It&amp;#39;s about not unnecessarily requiring everyone to use the web the same way.&lt;/p&gt;</content:encoded>
                
                <enclosure length="24351973" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8574c992-cb9f-4382-8aa4-cfb69f433ca7/stream.mp3"/>
                
                <guid isPermaLink="false">6fbe8efc-830c-42e1-82d1-8bb693450c2e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 22:14:18 &#43;0000</pubDate>
                <itunes:duration>1521</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 10 - Drupal 10/11: What Changed, What Stayed &amp; Should We Use a CMS?</itunes:title>
                <title>Modern CMS Development - Episode 10 - Drupal 10/11: What Changed, What Stayed &amp; Should We Use a CMS?</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>What modern Drupal changed, what stayed fundamentally Drupal, and how to decide between Drupal, WordPress, static sites, custom applications, and headless CMSs.</p>]]></description>
                <content:encoded>&lt;p&gt;What modern Drupal changed, what stayed fundamentally Drupal, and how to decide between Drupal, WordPress, static sites, custom applications, and headless CMSs.&lt;/p&gt;</content:encoded>
                
                <enclosure length="15685172" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/9059ab30-eab4-4bf7-a09a-276e4ba85efd/stream.mp3"/>
                
                <guid isPermaLink="false">b0041b45-9ef7-4941-a97b-49fb8e4814b7</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:30:01 &#43;0000</pubDate>
                <itunes:duration>980</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 9 - APIs, Headless Drupal &amp; Modern Drupal</itunes:title>
                <title>Modern CMS Development - Episode 9 - APIs, Headless Drupal &amp; Modern Drupal</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>JSON:API, authentication, headless frontends, decoupling tradeoffs, Recipes, Drupal CMS, Canvas, and what “modern Drupal” actually means now.</p>]]></description>
                <content:encoded>&lt;p&gt;JSON:API, authentication, headless frontends, decoupling tradeoffs, Recipes, Drupal CMS, Canvas, and what “modern Drupal” actually means now.&lt;/p&gt;</content:encoded>
                
                <enclosure length="14188042" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/0913f1c0-5c0d-4090-94d1-f5eccd4bc763/stream.mp3"/>
                
                <guid isPermaLink="false">8cb00e82-8487-4772-acff-0b38368a54b2</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:29:35 &#43;0000</pubDate>
                <itunes:duration>886</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 8 - Composer, Config &amp; Deployment: “But I Changed It in the Admin UI”</itunes:title>
                <title>Modern CMS Development - Episode 8 - Composer, Config &amp; Deployment: “But I Changed It in the Admin UI”</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Composer, Drush, YAML configuration, environments, deployments, and the extremely important distinction between code, configuration, and content.</p>]]></description>
                <content:encoded>&lt;p&gt;Composer, Drush, YAML configuration, environments, deployments, and the extremely important distinction between code, configuration, and content.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13034057" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/bf2151bb-d44c-4fc4-af66-e1a530f4aec6/stream.mp3"/>
                
                <guid isPermaLink="false">8fe3f73d-911a-40cc-8bd8-b90d14b86b8c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:29:00 &#43;0000</pubDate>
                <itunes:duration>814</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 7 - Modules, Hooks, Services &amp; Symfony: Wait, Which Part Is Drupal?</itunes:title>
                <title>Modern CMS Development - Episode 7 - Modules, Hooks, Services &amp; Symfony: Wait, Which Part Is Drupal?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Routes, controllers, plugins, services, dependency injection, Symfony, events, and the evolution from procedural hooks toward modern Drupal’s object-oriented patter</p>]]></description>
                <content:encoded>&lt;p&gt;Routes, controllers, plugins, services, dependency injection, Symfony, events, and the evolution from procedural hooks toward modern Drupal’s object-oriented patter&lt;/p&gt;</content:encoded>
                
                <enclosure length="12728946" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/3e291400-d61b-4a0e-8817-7cc48e5537a1/stream.mp3"/>
                
                <guid isPermaLink="false">8c6aa790-f13d-419b-97ad-2d8b5f8a4531</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:28:29 &#43;0000</pubDate>
                <itunes:duration>795</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 6 - Modern Drupal Frontend: Twig, Themes &amp; Components</itunes:title>
                <title>Modern CMS Development - Episode 6 - Modern Drupal Frontend: Twig, Themes &amp; Components</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Modern Drupal theming with Twig, preprocessing, libraries, behaviors, Single Directory Components, props, slots, and accessible component markup.</p>]]></description>
                <content:encoded>&lt;p&gt;Modern Drupal theming with Twig, preprocessing, libraries, behaviors, Single Directory Components, props, slots, and accessible component markup.&lt;/p&gt;</content:encoded>
                
                <enclosure length="14178011" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/9cef84ea-65d5-427c-a2ce-5ee1ebf99424/stream.mp3"/>
                
                <guid isPermaLink="false">aca62efd-7833-4b89-bcea-3a68e1a2dbbe</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:28:00 &#43;0000</pubDate>
                <itunes:duration>886</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 5 - Views, Display Modes &amp; Render Arrays: Who Actually Builds the Page?</itunes:title>
                <title>Modern CMS Development - Episode 5 - Views, Display Modes &amp; Render Arrays: Who Actually Builds the Page?</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How Drupal finds content, decides how to display it, renders it, and keeps all of that performant through its caching system.</p>]]></description>
                <content:encoded>&lt;p&gt;How Drupal finds content, decides how to display it, renders it, and keeps all of that performant through its caching system.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13214197" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/daebad93-df4b-4684-92ca-994af940065a/stream.mp3"/>
                
                <guid isPermaLink="false">95da28b4-5b79-4087-8c64-19bb604aa08a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:27:26 &#43;0000</pubDate>
                <itunes:duration>825</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 4 - Content Modeling: Why Drupal People Won&#39;t Shut Up About Structure</itunes:title>
                <title>Modern CMS Development - Episode 4 - Content Modeling: Why Drupal People Won&#39;t Shut Up About Structure</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How to model real content using fields, references, cardinality, taxonomy, reusable structures, display modes, moderation, and multilingual requirements.</p>]]></description>
                <content:encoded>&lt;p&gt;How to model real content using fields, references, cardinality, taxonomy, reusable structures, display modes, moderation, and multilingual requirements.&lt;/p&gt;</content:encoded>
                
                <enclosure length="14070177" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/020c74b4-9d85-4efb-b0b3-e18790f8177c/stream.mp3"/>
                
                <guid isPermaLink="false">89f96408-2bb0-492f-bce5-35521eb0d497</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:26:59 &#43;0000</pubDate>
                <itunes:duration>879</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 3 - Drupal: Why Is Everything an Entity?</itunes:title>
                <title>Modern CMS Development - Episode 3 - Drupal: Why Is Everything an Entity?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The Drupal mental model: entity types, bundles, entities, and fields—and why nodes, media, taxonomy terms, users, and blocks all start making more sense once that clicks.</p>]]></description>
                <content:encoded>&lt;p&gt;The Drupal mental model: entity types, bundles, entities, and fields—and why nodes, media, taxonomy terms, users, and blocks all start making more sense once that clicks.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13898814" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/662a06c0-acf1-4161-b941-23ce5b74f83c/stream.mp3"/>
                
                <guid isPermaLink="false">7346d311-6a8b-401a-9a34-c94c5c53ea5d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:26:25 &#43;0000</pubDate>
                <itunes:duration>868</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 2 - WordPress: How Did a Blogging Tool Eat the Web?</itunes:title>
                <title>Modern CMS Development - Episode 2 - WordPress: How Did a Blogging Tool Eat the Web?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How WordPress grew from blogging software into a massive CMS ecosystem of content types, taxonomies, themes, plugins, hooks, and blocks.</p>]]></description>
                <content:encoded>&lt;p&gt;How WordPress grew from blogging software into a massive CMS ecosystem of content types, taxonomies, themes, plugins, hooks, and blocks.&lt;/p&gt;</content:encoded>
                
                <enclosure length="15297306" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/7e8e9e47-0016-4e39-9fe5-ff19cbcd9698/stream.mp3"/>
                
                <guid isPermaLink="false">5306a77f-78b2-49f5-9404-c0f391d1a2c4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:25:52 &#43;0000</pubDate>
                <itunes:duration>956</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern CMS Development - Episode 1 - What the Hell Is a CMS?</itunes:title>
                <title>Modern CMS Development - Episode 1 - What the Hell Is a CMS?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>11</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why content management systems exist, what they actually manage, and how a CMS differs from a framework, site builder, or hosting platform.</p>]]></description>
                <content:encoded>&lt;p&gt;Why content management systems exist, what they actually manage, and how a CMS differs from a framework, site builder, or hosting platform.&lt;/p&gt;</content:encoded>
                
                <enclosure length="14515304" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/09601e86-745b-4f44-b7cd-f0ffcd5278d1/stream.mp3"/>
                
                <guid isPermaLink="false">71f1cb7e-304f-47e5-a192-86c2792758e1</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:25:27 &#43;0000</pubDate>
                <itunes:duration>907</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 14 - Modern APIs: AI, MCP, and &#34;Wait, Isn&#39;t This All Just APIs Again?&#34;</itunes:title>
                <title>APIs - Episode 14 - Modern APIs: AI, MCP, and &#34;Wait, Isn&#39;t This All Just APIs Again?&#34;</title>

                <itunes:episode>14</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Model APIs, SDKs, streaming, tool calls, MCP, and agents—and how a lot of supposedly mysterious AI infrastructure becomes much less mysterious once you see the boundaries.</p>]]></description>
                <content:encoded>&lt;p&gt;Model APIs, SDKs, streaming, tool calls, MCP, and agents—and how a lot of supposedly mysterious AI infrastructure becomes much less mysterious once you see the boundaries.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22016000" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/621472b3-cba4-4bcc-96af-fe9a2f9e0b12/stream.mp3"/>
                
                <guid isPermaLink="false">1e2d078a-a76a-4626-8ce7-8864e78398f9</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:24:54 &#43;0000</pubDate>
                <itunes:duration>1376</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 13 - API Design: Don&#39;t Make Other Developers Hate You</itunes:title>
                <title>APIs - Episode 13 - API Design: Don&#39;t Make Other Developers Hate You</title>

                <itunes:episode>13</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Consistent contracts, useful errors, pagination, filtering, rate limits, idempotency, compatibility, and documentation that does not require psychic powers.</p>]]></description>
                <content:encoded>&lt;p&gt;Consistent contracts, useful errors, pagination, filtering, rate limits, idempotency, compatibility, and documentation that does not require psychic powers.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20760450" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/65f5015a-6083-405b-a2b5-e171ad70c82d/stream.mp3"/>
                
                <guid isPermaLink="false">e161199b-c6ce-4e4a-8096-c4eba1babca6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:24:24 &#43;0000</pubDate>
                <itunes:duration>1297</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 12 - REST Isn&#39;t the Only Option</itunes:title>
                <title>APIs - Episode 12 - REST Isn&#39;t the Only Option</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>GraphQL, RPC, gRPC, WebSockets, server-sent events, and streaming—and the different communication problems each approach is trying to solve.</p>]]></description>
                <content:encoded>&lt;p&gt;GraphQL, RPC, gRPC, WebSockets, server-sent events, and streaming—and the different communication problems each approach is trying to solve.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21033377" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/881b0262-0891-4138-82a2-6ceef5c6f6b6/stream.mp3"/>
                
                <guid isPermaLink="false">51ce9f0c-bf4c-4025-8c5b-ccf8a4a5840c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:23:54 &#43;0000</pubDate>
                <itunes:duration>1314</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 11 - Webhooks: What If the API Calls You?</itunes:title>
                <title>APIs - Episode 11 - Webhooks: What If the API Calls You?</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Instead of constantly asking an API whether something happened, let it call you—then deal with verification, retries, duplicates, ordering, and failure.</p>]]></description>
                <content:encoded>&lt;p&gt;Instead of constantly asking an API whether something happened, let it call you—then deal with verification, retries, duplicates, ordering, and failure.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20232986" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a4278629-c5ee-4e86-b3ae-2a14ace21ab6/stream.mp3"/>
                
                <guid isPermaLink="false">512ec2d6-df22-44b8-93ae-19ea63783bb9</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:23:26 &#43;0000</pubDate>
                <itunes:duration>1264</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 10 - CORS: Why Is My Browser Yelling at Me?</itunes:title>
                <title>APIs - Episode 10 - CORS: Why Is My Browser Yelling at Me?</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Origins, preflight requests, credentials, browser restrictions, and why CORS is neither authentication nor a random punishment invented for frontend developers.</p>]]></description>
                <content:encoded>&lt;p&gt;Origins, preflight requests, credentials, browser restrictions, and why CORS is neither authentication nor a random punishment invented for frontend developers.&lt;/p&gt;</content:encoded>
                
                <enclosure length="19669159" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/c4348855-0d16-466c-a823-1116d238953b/stream.mp3"/>
                
                <guid isPermaLink="false">156dfe97-8634-4a23-bdac-4fbc0d571ce2</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:22:45 &#43;0000</pubDate>
                <itunes:duration>1229</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 9 - OAuth: Why Is &#34;Sign In With Google&#34; So Complicated?</itunes:title>
                <title>APIs - Episode 9 - OAuth: Why Is &#34;Sign In With Google&#34; So Complicated?</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>What OAuth is actually doing during all those redirects, why delegated authorization exists, and how “Sign in with…” fits into the larger picture.</p>]]></description>
                <content:encoded>&lt;p&gt;What OAuth is actually doing during all those redirects, why delegated authorization exists, and how “Sign in with…” fits into the larger picture.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21074337" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/894118c8-223c-46da-a262-cd2e56f45cdc/stream.mp3"/>
                
                <guid isPermaLink="false">b1d6c057-88e7-42c7-9779-3b420e277ab0</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:22:18 &#43;0000</pubDate>
                <itunes:duration>1317</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 8 - Authentication: How Does the API Know Who the Hell I Am?</itunes:title>
                <title>APIs - Episode 8 - Authentication: How Does the API Know Who the Hell I Am?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How APIs identify callers, where authentication ends and authorization begins, and how credentials, sessions, and tokens fit into the picture.</p>]]></description>
                <content:encoded>&lt;p&gt;How APIs identify callers, where authentication ends and authorization begins, and how credentials, sessions, and tokens fit into the picture.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20158171" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/25d3ac65-7854-44ed-a29c-71342ff0c336/stream.mp3"/>
                
                <guid isPermaLink="false">6335b63c-a961-4c2b-a16c-0f0cf91a1cf3</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:21:47 &#43;0000</pubDate>
                <itunes:duration>1259</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 7 - Building an API</itunes:title>
                <title>APIs - Episode 7 - Building an API</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>What happens on the other side of the request: routes, handlers, validation, authorization, business logic, databases, errors, and contracts.</p>]]></description>
                <content:encoded>&lt;p&gt;What happens on the other side of the request: routes, handlers, validation, authorization, business logic, databases, errors, and contracts.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20371748" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d1de52ae-7987-4448-a113-040be1b18fca/stream.mp3"/>
                
                <guid isPermaLink="false">d3d42e5a-171d-4864-9b09-1b506d627cb4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:21:19 &#43;0000</pubDate>
                <itunes:duration>1273</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 6 - Calling an API From JavaScript</itunes:title>
                <title>APIs - Episode 6 - Calling an API From JavaScript</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Using fetch and async/await without pretending networks are reliable, including loading, errors, cancellation, races, and retries.</p>]]></description>
                <content:encoded>&lt;p&gt;Using fetch and async/await without pretending networks are reliable, including loading, errors, cancellation, races, and retries.&lt;/p&gt;</content:encoded>
                
                <enclosure length="18771800" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ee560196-4bfe-40e0-84f6-5498683dcc19/stream.mp3"/>
                
                <guid isPermaLink="false">681c4315-0866-45af-80d0-ef49bf6dca69</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:20:47 &#43;0000</pubDate>
                <itunes:duration>1173</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 5 - JSON: Why Are We Passing This Stuff Around Everywhere?</itunes:title>
                <title>APIs - Episode 5 - JSON: Why Are We Passing This Stuff Around Everywhere?</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why JSON became the web’s favorite little data envelope, how it differs from a JavaScript object, and why parsing data does not mean you can trust it.</p>]]></description>
                <content:encoded>&lt;p&gt;Why JSON became the web’s favorite little data envelope, how it differs from a JavaScript object, and why parsing data does not mean you can trust it.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21050096" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e7b869bf-4f73-41e4-b6c2-5498f960c5d8/stream.mp3"/>
                
                <guid isPermaLink="false">de3d2adc-4b67-4fb8-878b-454e537ff4ce</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:20:18 &#43;0000</pubDate>
                <itunes:duration>1315</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 4 - REST: Who Asked for This?</itunes:title>
                <title>APIs - Episode 4 - REST: Who Asked for This?</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why REST became popular, what resources and stateless requests actually mean, and why GET, POST, PUT, PATCH, and DELETE are not interchangeable vibes.</p>]]></description>
                <content:encoded>&lt;p&gt;Why REST became popular, what resources and stateless requests actually mean, and why GET, POST, PUT, PATCH, and DELETE are not interchangeable vibes.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21182589" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ab746028-119e-4e32-b2d8-8b256477094d/stream.mp3"/>
                
                <guid isPermaLink="false">ad6caa4c-52a5-41c7-b42f-c728eff0c465</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:19:46 &#43;0000</pubDate>
                <itunes:duration>1323</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 3 - HTTP: The Thing Underneath the API</itunes:title>
                <title>APIs - Episode 3 - HTTP: The Thing Underneath the API</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Requests, responses, methods, headers, bodies, status codes, failures, and the protocol doing most of the actual work underneath web APIs.</p>]]></description>
                <content:encoded>&lt;p&gt;Requests, responses, methods, headers, bodies, status codes, failures, and the protocol doing most of the actual work underneath web APIs.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23582511" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/71f4d04c-ad33-4d6c-b17d-19a49c2d17db/stream.mp3"/>
                
                <guid isPermaLink="false">95e3f990-0a35-4674-9889-7b568f6ff771</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:19:00 &#43;0000</pubDate>
                <itunes:duration>1473</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 2 - Why Did We Need Web APIs?</itunes:title>
                <title>APIs - Episode 2 - Why Did We Need Web APIs?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How we got from server-rendered forms to AJAX and shared backends, and why separating data from pages became useful.</p>]]></description>
                <content:encoded>&lt;p&gt;How we got from server-rendered forms to AJAX and shared backends, and why separating data from pages became useful.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21845054" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/1b283cc2-5a72-4753-98a6-e26b891b448b/stream.mp3"/>
                
                <guid isPermaLink="false">d34c1682-36fb-41ca-b8b5-f69f9de026bb</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:18:16 &#43;0000</pubDate>
                <itunes:duration>1365</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>APIs - Episode 1 - Okay, What Actually Is an API?</itunes:title>
                <title>APIs - Episode 1 - Okay, What Actually Is an API?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>10</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>APIs as contracts and boundaries—not just URLs—including the APIs inside libraries, browsers, operating systems, and remote services.</p>]]></description>
                <content:encoded>&lt;p&gt;APIs as contracts and boundaries—not just URLs—including the APIs inside libraries, browsers, operating systems, and remote services.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21893120" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d1b52fa3-d05f-4bf3-aa32-f2b692c99ce9/stream.mp3"/>
                
                <guid isPermaLink="false">cd2c15c0-595f-4376-9d93-24e43a36283c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:17:17 &#43;0000</pubDate>
                <itunes:duration>1368</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 10 - Do I Actually Need This Shit?</itunes:title>
                <title>Next.js - Episode 10 - Do I Actually Need This Shit?</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>When Next.js earns its complexity, when plain React is enough, and when the boring old web may still be exactly what your project needs.</p>]]></description>
                <content:encoded>&lt;p&gt;When Next.js earns its complexity, when plain React is enough, and when the boring old web may still be exactly what your project needs.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23220976" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/63c5e731-6964-437a-9d22-959ae4440c05/stream.mp3"/>
                
                <guid isPermaLink="false">298c6bec-f3c4-4d41-a1d2-9459dcfe991d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:07:08 &#43;0000</pubDate>
                <itunes:duration>1451</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 9 - Next.js Ate My Web Stack</itunes:title>
                <title>Next.js - Episode 9 - Next.js Ate My Web Stack</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How routing, rendering, server code, APIs, caching, assets, metadata, and deployment ended up under one framework-shaped roof.</p>]]></description>
                <content:encoded>&lt;p&gt;How routing, rendering, server code, APIs, caching, assets, metadata, and deployment ended up under one framework-shaped roof.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21291676" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/0db0db92-b245-4a7b-9433-4ee37d920e3f/stream.mp3"/>
                
                <guid isPermaLink="false">9941b31f-b67f-45fc-b06d-d11f57a3abb8</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:05:45 &#43;0000</pubDate>
                <itunes:duration>1330</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 8 - Oh, So There IS a Backend</itunes:title>
                <title>Next.js - Episode 8 - Oh, So There IS a Backend</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Route Handlers, HTTP endpoints, webhooks, external consumers, and when your Next.js application really does need an API boundary.</p>]]></description>
                <content:encoded>&lt;p&gt;Route Handlers, HTTP endpoints, webhooks, external consumers, and when your Next.js application really does need an API boundary.&lt;/p&gt;</content:encoded>
                
                <enclosure length="19937071" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/4e544bc3-1090-4d3b-a702-707469e9b2b1/stream.mp3"/>
                
                <guid isPermaLink="false">23b51918-12cc-43d9-a410-53b2e440e4b5</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:04:31 &#43;0000</pubDate>
                <itunes:duration>1246</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 7 - Did We Just Put the Backend in the Component?</itunes:title>
                <title>Next.js - Episode 7 - Did We Just Put the Backend in the Component?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Server-side mutations, forms, validation, authorization, and why putting backend work near your React code does not make normal security rules disappear.</p>]]></description>
                <content:encoded>&lt;p&gt;Server-side mutations, forms, validation, authorization, and why putting backend work near your React code does not make normal security rules disappear.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20309890" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/2c773c11-d5e1-4d49-8b26-b8ba0267b3ba/stream.mp3"/>
                
                <guid isPermaLink="false">3cf9898e-44cf-4f19-bdd1-b43173f1160d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:03:16 &#43;0000</pubDate>
                <itunes:duration>1269</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 6 - Caching: Why Is My Website Lying to Me?</itunes:title>
                <title>Next.js - Episode 6 - Caching: Why Is My Website Lying to Me?</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why Next.js caches things, how stale data happens, and how to think about freshness, revalidation, and invalidation without losing your damn mind.</p>]]></description>
                <content:encoded>&lt;p&gt;Why Next.js caches things, how stale data happens, and how to think about freshness, revalidation, and invalidation without losing your damn mind.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20836937" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5b63abd4-56eb-45c9-8f58-6f6a9fb7f3d6/stream.mp3"/>
                
                <guid isPermaLink="false">7f4e7e61-4e76-48c4-a838-413445aeb711</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:01:44 &#43;0000</pubDate>
                <itunes:duration>1302</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 5 - Why Am I Fetching My Own Data Over HTTP?</itunes:title>
                <title>Next.js - Episode 5 - Why Am I Fetching My Own Data Over HTTP?</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Where data fetching belongs in Next.js, when Server Components can talk directly to your data source, and when an HTTP request is just an unnecessary middleman.</p>]]></description>
                <content:encoded>&lt;p&gt;Where data fetching belongs in Next.js, when Server Components can talk directly to your data source, and when an HTTP request is just an unnecessary middleman.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20206654" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/214152f7-efbe-463d-a411-2ffc8977de5a/stream.mp3"/>
                
                <guid isPermaLink="false">ce07d9fb-60a3-4bac-b7ed-1eb9ccccf113</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 20:00:25 &#43;0000</pubDate>
                <itunes:duration>1262</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 4 - SSR, SSG, CSR and Please Stop Inventing Acronyms</itunes:title>
                <title>Next.js - Episode 4 - SSR, SSG, CSR and Please Stop Inventing Acronyms</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A practical tour of server rendering, static generation, client rendering, hydration, streaming, and when the HTML actually gets made.</p>]]></description>
                <content:encoded>&lt;p&gt;A practical tour of server rendering, static generation, client rendering, hydration, streaming, and when the HTML actually gets made.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20970684" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/db159bb6-32cd-49a9-b499-661247d28b55/stream.mp3"/>
                
                <guid isPermaLink="false">ba61b598-e22e-4e06-a39f-ae8bcd023581</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 19:59:06 &#43;0000</pubDate>
                <itunes:duration>1310</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 3 - React Runs WHERE?</itunes:title>
                <title>Next.js - Episode 3 - React Runs WHERE?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Server Components, Client Components, browser boundaries, hydration, and the increasingly complicated answer to “where is this React code actually running?”</p>]]></description>
                <content:encoded>&lt;p&gt;Server Components, Client Components, browser boundaries, hydration, and the increasingly complicated answer to “where is this React code actually running?”&lt;/p&gt;</content:encoded>
                
                <enclosure length="20226716" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ddd7e853-6bd2-40f6-bdbc-43a20493de88/stream.mp3"/>
                
                <guid isPermaLink="false">fa8436f3-12cf-4653-980e-2fc9527b4579</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 19:57:37 &#43;0000</pubDate>
                <itunes:duration>1264</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 2 - The Folder That Controls Reality</itunes:title>
                <title>Next.js - Episode 2 - The Folder That Controls Reality</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How the App Router turns folders and files into routes, pages, layouts, and dynamic URLs—and why your directory structure suddenly has opinions.</p>]]></description>
                <content:encoded>&lt;p&gt;How the App Router turns folders and files into routes, pages, layouts, and dynamic URLs—and why your directory structure suddenly has opinions.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20044904" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/6399dca8-74aa-4d03-902e-a90e26933219/stream.mp3"/>
                
                <guid isPermaLink="false">ae4043c4-27d0-49d1-99a6-d240b0d84662</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 19:56:21 &#43;0000</pubDate>
                <itunes:duration>1252</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Next.js - Episode 1 - Wait, React Needs a Framework Now?</itunes:title>
                <title>Next.js - Episode 1 - Wait, React Needs a Framework Now?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>9</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why Next.js exists, what it adds on top of React, and how routing, rendering, data, and deployment became part of the framework conversation.</p>]]></description>
                <content:encoded>&lt;p&gt;Why Next.js exists, what it adds on top of React, and how routing, rendering, data, and deployment became part of the framework conversation.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22647118" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/613ade8b-38b1-40c2-bae9-d90cf005f7db/stream.mp3"/>
                
                <guid isPermaLink="false">4c86a253-15fc-4eb4-9c9e-ef1996b48aef</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Thu, 17 Sep 2026 19:49:55 &#43;0000</pubDate>
                <itunes:duration>1415</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 25 - So You Want to Take Security&#43; — Fine, Here Are the Acronyms</itunes:title>
                <title>Cybersecurity - Episode 25 - So You Want to Take Security&#43; — Fine, Here Are the Acronyms</title>

                <itunes:episode>25</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>We turn the series’ practical understanding toward Security+ preparation: concept families, common protocols, scenario questions, labs, and coverage planning. The exam objectives provide the checklist; understanding provides a way to reason through it. Memorization has a job, but it shouldn’t be doing all the work.</p>]]></description>
                <content:encoded>&lt;p&gt;We turn the series’ practical understanding toward Security&#43; preparation: concept families, common protocols, scenario questions, labs, and coverage planning. The exam objectives provide the checklist; understanding provides a way to reason through it. Memorization has a job, but it shouldn’t be doing all the work.&lt;/p&gt;</content:encoded>
                
                <enclosure length="9448803" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/75af2936-f770-4815-b43c-2e9dbcc6f25d/stream.mp3"/>
                
                <guid isPermaLink="false">b98e0fe8-2d11-4968-a1d5-26d0a3afe769</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 03:02:40 &#43;0000</pubDate>
                <itunes:duration>590</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 24 - The Big Security Picture — Red Teams, Blue Teams &amp; Everyone Else</itunes:title>
                <title>Cybersecurity - Episode 24 - The Big Security Picture — Red Teams, Blue Teams &amp; Everyone Else</title>

                <itunes:episode>24</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Who actually does all this security work? We connect application security, detection, incident response, identity, governance, architecture, and offensive testing into a larger picture. These roles overlap, collaborate, and depend on skills from across technology. There’s considerably more to the field than “person in hoodie.”</p>]]></description>
                <content:encoded>&lt;p&gt;Who actually does all this security work? We connect application security, detection, incident response, identity, governance, architecture, and offensive testing into a larger picture. These roles overlap, collaborate, and depend on skills from across technology. There’s considerably more to the field than “person in hoodie.”&lt;/p&gt;</content:encoded>
                
                <enclosure length="7534550" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/0c269f86-6350-4664-9473-dddd09b90686/stream.mp3"/>
                
                <guid isPermaLink="false">15c0a47a-0d88-489b-8ddf-dcd4ae0fed58</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 03:01:39 &#43;0000</pubDate>
                <itunes:duration>470</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 23 - Secure Development &amp; DevSecOps — Security Before Friday</itunes:title>
                <title>Cybersecurity - Episode 23 - Secure Development &amp; DevSecOps — Security Before Friday</title>

                <itunes:episode>23</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Security works better when it participates in development instead of arriving as a surprise before release. We explore requirements, reviews, automated scanning, pipeline permissions, artifact integrity, and maintenance. The goal is useful feedback throughout the lifecycle, without turning every developer’s day into an obstacle course.</p>]]></description>
                <content:encoded>&lt;p&gt;Security works better when it participates in development instead of arriving as a surprise before release. We explore requirements, reviews, automated scanning, pipeline permissions, artifact integrity, and maintenance. The goal is useful feedback throughout the lifecycle, without turning every developer’s day into an obstacle course.&lt;/p&gt;</content:encoded>
                
                <enclosure length="7100708" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/2e724a87-91d4-4fd9-b764-b754ab72c0c8/stream.mp3"/>
                
                <guid isPermaLink="false">afe45095-20ae-434f-9697-391ffb445fc4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 03:00:41 &#43;0000</pubDate>
                <itunes:duration>443</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 22 - Business Continuity &amp; Disaster Recovery — The Building Is Gone, Now What?</itunes:title>
                <title>Cybersecurity - Episode 22 - Business Continuity &amp; Disaster Recovery — The Building Is Gone, Now What?</title>

                <itunes:episode>22</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Having a backup and being able to recover are different achievements. We explore business continuity, disaster recovery, recovery targets, failover, and restoration testing. The question isn’t just whether the data survived—it’s how the organization keeps working while the systems it relies on are unavailable.</p>]]></description>
                <content:encoded>&lt;p&gt;Having a backup and being able to recover are different achievements. We explore business continuity, disaster recovery, recovery targets, failover, and restoration testing. The question isn’t just whether the data survived—it’s how the organization keeps working while the systems it relies on are unavailable.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4012826" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/009b65f4-3871-4afb-abf4-25b659b32b31/stream.mp3"/>
                
                <guid isPermaLink="false">017c7350-ee7a-4533-8e33-f08bf68303df</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:59:44 &#43;0000</pubDate>
                <itunes:duration>250</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 21 - Risk, Governance, Privacy &amp; Compliance — Congratulations, Security Has Paperwork</itunes:title>
                <title>Cybersecurity - Episode 21 - Risk, Governance, Privacy &amp; Compliance — Congratulations, Security Has Paperwork</title>

                <itunes:episode>21</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Policies and risk registers sound far removed from writing code—until somebody has to decide what data to keep or which risk to accept. We connect governance, privacy, compliance, and third-party risk to practical choices. Documentation earns its place when it makes responsibilities and decisions clear.</p>]]></description>
                <content:encoded>&lt;p&gt;Policies and risk registers sound far removed from writing code—until somebody has to decide what data to keep or which risk to accept. We connect governance, privacy, compliance, and third-party risk to practical choices. Documentation earns its place when it makes responsibilities and decisions clear.&lt;/p&gt;</content:encoded>
                
                <enclosure length="5112894" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/25e79506-54bc-489e-9edc-debadce54227/stream.mp3"/>
                
                <guid isPermaLink="false">65c202c7-06f8-4143-94e0-aeb9614554b4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:58:50 &#43;0000</pubDate>
                <itunes:duration>319</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 20 - Incident Response &amp; Digital Forensics — Production Is on Fire, Don’t Touch Anything</itunes:title>
                <title>Cybersecurity - Episode 20 - Incident Response &amp; Digital Forensics — Production Is on Fire, Don’t Touch Anything</title>

                <itunes:episode>20</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Something bad is happening, and panic is not an incident-response plan. We walk through preparation, analysis, containment, recovery, and lessons learned, alongside evidence preservation and forensic basics. The challenge is to stop the harm without destroying the information needed to understand what happened.</p>]]></description>
                <content:encoded>&lt;p&gt;Something bad is happening, and panic is not an incident-response plan. We walk through preparation, analysis, containment, recovery, and lessons learned, alongside evidence preservation and forensic basics. The challenge is to stop the harm without destroying the information needed to understand what happened.&lt;/p&gt;</content:encoded>
                
                <enclosure length="5423856" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/07574a9c-e469-40ab-8891-7096d8e48ccf/stream.mp3"/>
                
                <guid isPermaLink="false">bb536da8-a488-4ede-9c36-e4be1338dad4</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:57:50 &#43;0000</pubDate>
                <itunes:duration>338</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 19 - Security Operations — Who Watches the Logs?</itunes:title>
                <title>Cybersecurity - Episode 19 - Security Operations — Who Watches the Logs?</title>

                <itunes:episode>19</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Collecting logs is easy compared with recognizing what matters in them. We explore security operations, SIEMs, detection tools, threat intelligence, baselines, and alert fatigue. A useful alert needs evidence and a response—not merely the ability to wake somebody up at an unreasonable hour.</p>]]></description>
                <content:encoded>&lt;p&gt;Collecting logs is easy compared with recognizing what matters in them. We explore security operations, SIEMs, detection tools, threat intelligence, baselines, and alert fatigue. A useful alert needs evidence and a response—not merely the ability to wake somebody up at an unreasonable hour.&lt;/p&gt;</content:encoded>
                
                <enclosure length="5079457" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/dff1e099-20db-40f0-89c6-a50ff826aeef/stream.mp3"/>
                
                <guid isPermaLink="false">c76de22c-61e1-4eb3-a719-d1937de87aca</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:56:57 &#43;0000</pubDate>
                <itunes:duration>317</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 18 - Secure Architecture &amp; Cloud Security — Whose Computer Is This Anyway?</itunes:title>
                <title>Cybersecurity - Episode 18 - Secure Architecture &amp; Cloud Security — Whose Computer Is This Anyway?</title>

                <itunes:episode>18</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Moving to the cloud changes responsibilities; it doesn’t remove them. We explore shared responsibility, service models, cloud permissions, network controls, hardening, and resilience. Managed infrastructure can take work off your plate, but somebody still has to decide who gets access and whether that storage should be public.</p>]]></description>
                <content:encoded>&lt;p&gt;Moving to the cloud changes responsibilities; it doesn’t remove them. We explore shared responsibility, service models, cloud permissions, network controls, hardening, and resilience. Managed infrastructure can take work off your plate, but somebody still has to decide who gets access and whether that storage should be public.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4841639" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/11cad03a-3d2d-4923-97bf-3ba95707689c/stream.mp3"/>
                
                <guid isPermaLink="false">e3292158-a265-4ed5-9969-bb92ac2d119f</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:56:00 &#43;0000</pubDate>
                <itunes:duration>302</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 17 - Vulnerabilities, CVEs &amp; Pentesting — How Broken Is It?</itunes:title>
                <title>Cybersecurity - Episode 17 - Vulnerabilities, CVEs &amp; Pentesting — How Broken Is It?</title>

                <itunes:episode>17</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A scanner found something. Now what? We distinguish vulnerability identifiers, severity scores, exploitation evidence, scanning, and penetration testing, then follow prioritization and remediation. The useful question isn’t simply how frightening a finding sounds—it’s what it means for this system and what should happen next.</p>]]></description>
                <content:encoded>&lt;p&gt;A scanner found something. Now what? We distinguish vulnerability identifiers, severity scores, exploitation evidence, scanning, and penetration testing, then follow prioritization and remediation. The useful question isn’t simply how frightening a finding sounds—it’s what it means for this system and what should happen next.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4957413" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/708d279b-56c2-4840-af0a-5417b01c7b18/stream.mp3"/>
                
                <guid isPermaLink="false">f40d91be-6c16-4c48-8f4b-546c067f2449</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:55:10 &#43;0000</pubDate>
                <itunes:duration>309</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 16 - Dependencies, Supply Chains &amp; Secrets — npm Has Entered the Threat Model</itunes:title>
                <title>Cybersecurity - Episode 16 - Dependencies, Supply Chains &amp; Secrets — npm Has Entered the Threat Model</title>

                <itunes:episode>16</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Your application depends on code you didn’t write, tools you didn’t build, and credentials you really shouldn’t commit. We examine dependency risks, lockfiles, vulnerability scanning, build pipelines, and software provenance. Plus: why deleting a leaked secret from the latest version doesn’t make it secret again.</p>]]></description>
                <content:encoded>&lt;p&gt;Your application depends on code you didn’t write, tools you didn’t build, and credentials you really shouldn’t commit. We examine dependency risks, lockfiles, vulnerability scanning, build pipelines, and software provenance. Plus: why deleting a leaked secret from the latest version doesn’t make it secret again.&lt;/p&gt;</content:encoded>
                
                <enclosure length="6573244" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/37fccdfe-9dcf-4dd9-b670-8b86d6f49129/stream.mp3"/>
                
                <guid isPermaLink="false">7ad24848-275e-4ce8-9388-0747d1af3bec</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:54:14 &#43;0000</pubDate>
                <itunes:duration>410</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 15 - OWASP &amp; Threat Modeling — Please Imagine the Worst</itunes:title>
                <title>Cybersecurity - Episode 15 - OWASP &amp; Threat Modeling — Please Imagine the Worst</title>

                <itunes:episode>15</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Security lists can help us remember familiar failures, but our application still needs its own questions. We explore OWASP, assets, trust boundaries, data flows, STRIDE, and abuse cases. Threat modeling means examining how a design could be misused while there’s still time to change it.</p>]]></description>
                <content:encoded>&lt;p&gt;Security lists can help us remember familiar failures, but our application still needs its own questions. We explore OWASP, assets, trust boundaries, data flows, STRIDE, and abuse cases. Threat modeling means examining how a design could be misused while there’s still time to change it.&lt;/p&gt;</content:encoded>
                
                <enclosure length="6492577" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/f645c90c-bd8a-48d2-bc7f-e27478f7cc27/stream.mp3"/>
                
                <guid isPermaLink="false">2d4c8799-8ed9-439c-8c2f-dde6558be14a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:53:19 &#43;0000</pubDate>
                <itunes:duration>405</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 14 - Sessions, Cookies, Tokens &amp; API Security</itunes:title>
                <title>Cybersecurity - Episode 14 - Sessions, Cookies, Tokens &amp; API Security</title>

                <itunes:episode>14</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How does an application remember a login without handing out unlimited access forever? We explore session security, cookie flags, bearer tokens, JWTs, API keys, expiry, and revocation. The format of a credential matters less than how it’s issued, stored, checked, and eventually made useless.</p>]]></description>
                <content:encoded>&lt;p&gt;How does an application remember a login without handing out unlimited access forever? We explore session security, cookie flags, bearer tokens, JWTs, API keys, expiry, and revocation. The format of a credential matters less than how it’s issued, stored, checked, and eventually made useless.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8564401" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/120340d8-3d79-4d6e-8379-e5cd855caeeb/stream.mp3"/>
                
                <guid isPermaLink="false">d826be9f-b711-4b10-8589-685a6b5b7e6e</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:52:14 &#43;0000</pubDate>
                <itunes:duration>535</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 13 - CSRF, CORS &amp; Same-Origin Policy — Why Is the Browser Yelling at Me?</itunes:title>
                <title>Cybersecurity - Episode 13 - CSRF, CORS &amp; Same-Origin Policy — Why Is the Browser Yelling at Me?</title>

                <itunes:episode>13</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>CORS errors, cookies, preflight requests, CSRF tokens: several different security mechanisms are getting blamed for each other’s jobs. We separate the same-origin policy, CORS, and cross-site request forgery, then follow what browsers send and what JavaScript can read. Turning the warning off is not the same as fixing the boundary.</p>]]></description>
                <content:encoded>&lt;p&gt;CORS errors, cookies, preflight requests, CSRF tokens: several different security mechanisms are getting blamed for each other’s jobs. We separate the same-origin policy, CORS, and cross-site request forgery, then follow what browsers send and what JavaScript can read. Turning the warning off is not the same as fixing the boundary.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13873319" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e074e92f-00b3-451e-bcdf-0fc1d6f80aae/stream.mp3"/>
                
                <guid isPermaLink="false">cd806a42-b607-458c-bec4-723b07c95a2c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:51:17 &#43;0000</pubDate>
                <itunes:duration>867</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 12 - Injection — Stop Concatenating Untrusted Shit</itunes:title>
                <title>Cybersecurity - Episode 12 - Injection — Stop Concatenating Untrusted Shit</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>When data becomes part of an instruction, the program may start following somebody else’s instructions. We explore SQL, command, template, and other injection problems, including why parameterized queries are a structural defense. Input validation helps, but it isn’t a substitute for keeping data and commands separate.</p>]]></description>
                <content:encoded>&lt;p&gt;When data becomes part of an instruction, the program may start following somebody else’s instructions. We explore SQL, command, template, and other injection problems, including why parameterized queries are a structural defense. Input validation helps, but it isn’t a substitute for keeping data and commands separate.&lt;/p&gt;</content:encoded>
                
                <enclosure length="12376189" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/e18750d2-46b9-48ce-bc71-4643874ff570/stream.mp3"/>
                
                <guid isPermaLink="false">d51c41dd-1e5d-42ab-870e-30313c13185b</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:50:17 &#43;0000</pubDate>
                <itunes:duration>773</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 11 - XSS — You Put WHAT in My DOM?</itunes:title>
                <title>Cybersecurity - Episode 11 - XSS — You Put WHAT in My DOM?</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Cross-site scripting happens when untrusted content gets to behave like trusted code. We explore stored, reflected, and DOM-based XSS, then examine output contexts, escaping, sanitization, CSP, and dangerous browser APIs. Framework protections help, but they can’t save us from every escape hatch we deliberately open.</p>]]></description>
                <content:encoded>&lt;p&gt;Cross-site scripting happens when untrusted content gets to behave like trusted code. We explore stored, reflected, and DOM-based XSS, then examine output contexts, escaping, sanitization, CSP, and dangerous browser APIs. Framework protections help, but they can’t save us from every escape hatch we deliberately open.&lt;/p&gt;</content:encoded>
                
                <enclosure length="13966524" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a51ee405-fdf8-4b97-8a36-fb28c9bad120/stream.mp3"/>
                
                <guid isPermaLink="false">b4d6ae0c-e6fc-4681-9d9a-62a3e6136afc</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:49:16 &#43;0000</pubDate>
                <itunes:duration>872</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 10 - How Attacks Actually Happen — From Recon to “Oh Shit”</itunes:title>
                <title>Cybersecurity - Episode 10 - How Attacks Actually Happen — From Recon to “Oh Shit”</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Real attacks often chain several ordinary weaknesses together. We follow reconnaissance, initial access, privilege escalation, lateral movement, and exfiltration, then explore how defenders can interrupt that sequence. Attack frameworks become useful when they help explain behavior—not when they become another wall of acronyms.</p>]]></description>
                <content:encoded>&lt;p&gt;Real attacks often chain several ordinary weaknesses together. We follow reconnaissance, initial access, privilege escalation, lateral movement, and exfiltration, then explore how defenders can interrupt that sequence. Attack frameworks become useful when they help explain behavior—not when they become another wall of acronyms.&lt;/p&gt;</content:encoded>
                
                <enclosure length="8821864" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a16feaae-2b74-4f22-a29c-1b96270c8b55/stream.mp3"/>
                
                <guid isPermaLink="false">e8898d02-958d-491c-bfca-817b83649acb</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:48:12 &#43;0000</pubDate>
                <itunes:duration>551</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 9 - Malware, Ransomware &amp; Other Assholes</itunes:title>
                <title>Cybersecurity - Episode 9 - Malware, Ransomware &amp; Other Assholes</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Malware is a broad category of bad behavior, not one specific kind of scary file. We distinguish viruses, worms, trojans, ransomware, spyware, and other threats, then connect persistence, detection, and recovery. Backups help, but recovering from an attack takes more than finding a folder marked “backup.”</p>]]></description>
                <content:encoded>&lt;p&gt;Malware is a broad category of bad behavior, not one specific kind of scary file. We distinguish viruses, worms, trojans, ransomware, spyware, and other threats, then connect persistence, detection, and recovery. Backups help, but recovering from an attack takes more than finding a folder marked “backup.”&lt;/p&gt;</content:encoded>
                
                <enclosure length="8692297" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a3dce4b6-be84-41b1-8e36-dee10d61a467/stream.mp3"/>
                
                <guid isPermaLink="false">5860bc77-3948-494f-85d4-1c67ee464481</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:47:15 &#43;0000</pubDate>
                <itunes:duration>543</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 8 - Social Engineering &amp; Credential Attacks — Hacking the Squishy Humans</itunes:title>
                <title>Cybersecurity - Episode 8 - Social Engineering &amp; Credential Attacks — Hacking the Squishy Humans</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Attackers don’t always need a software vulnerability. Sometimes they need urgency, apparent authority, and a believable request. We explore phishing, pretexting, help-desk attacks, MFA fatigue, and credential theft—and why useful defenses should support people instead of blaming them for being human.</p>]]></description>
                <content:encoded>&lt;p&gt;Attackers don’t always need a software vulnerability. Sometimes they need urgency, apparent authority, and a believable request. We explore phishing, pretexting, help-desk attacks, MFA fatigue, and credential theft—and why useful defenses should support people instead of blaming them for being human.&lt;/p&gt;</content:encoded>
                
                <enclosure length="10518360" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/f5eae777-0ba8-48ca-9508-cc7eaa3c5b3a/stream.mp3"/>
                
                <guid isPermaLink="false">cea13d4e-cf15-4481-81ce-a89804505e7a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:46:07 &#43;0000</pubDate>
                <itunes:duration>657</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 7 - HTTPS, TLS, Certificates &amp; PKI — Who Says This Is Really the Website?</itunes:title>
                <title>Cybersecurity - Episode 7 - HTTPS, TLS, Certificates &amp; PKI — Who Says This Is Really the Website?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The browser shows a secure connection. What did it actually verify? We follow TLS, certificates, certificate authorities, and the trust chain, then examine expiry, revocation, and private keys. HTTPS protects the connection, but it doesn’t certify that the application—or the person running it—is behaving well.</p>]]></description>
                <content:encoded>&lt;p&gt;The browser shows a secure connection. What did it actually verify? We follow TLS, certificates, certificate authorities, and the trust chain, then examine expiry, revocation, and private keys. HTTPS protects the connection, but it doesn’t certify that the application—or the person running it—is behaving well.&lt;/p&gt;</content:encoded>
                
                <enclosure length="16618893" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ff055777-e493-45db-9b86-8336b7c55633/stream.mp3"/>
                
                <guid isPermaLink="false">5dbcd03d-1ead-49f0-9ac9-f69cc8efe1e7</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:44:50 &#43;0000</pubDate>
                <itunes:duration>1038</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 6 - Cryptography Without the Wizard Robes</itunes:title>
                <title>Cybersecurity - Episode 6 - Cryptography Without the Wizard Robes</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Encryption, hashing, and digital signatures solve different problems, despite frequently sharing the same intimidating conversation. We unpack keys, password hashing, authenticity, randomness, and key management without turning the episode into a maths ambush. The algorithm matters, but so does where you left the secret.</p>]]></description>
                <content:encoded>&lt;p&gt;Encryption, hashing, and digital signatures solve different problems, despite frequently sharing the same intimidating conversation. We unpack keys, password hashing, authenticity, randomness, and key management without turning the episode into a maths ambush. The algorithm matters, but so does where you left the secret.&lt;/p&gt;</content:encoded>
                
                <enclosure length="16618057" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/a8a2192e-9393-45d4-82d7-69c17fdca212/stream.mp3"/>
                
                <guid isPermaLink="false">1879131a-53fa-4f5d-8653-e050d3166853</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:43:12 &#43;0000</pubDate>
                <itunes:duration>1038</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 5 - Authorization &amp; IAM — Are You Allowed to Do That?</itunes:title>
                <title>Cybersecurity - Episode 5 - Authorization &amp; IAM — Are You Allowed to Do That?</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Logging in doesn’t entitle you to everybody else’s data. We explore permissions, roles, attributes, service accounts, and identity lifecycles, including the surprisingly destructive act of changing an ID in a URL. Access control means checking this person, this action, and this resource—not merely confirming a session exists.</p>]]></description>
                <content:encoded>&lt;p&gt;Logging in doesn’t entitle you to everybody else’s data. We explore permissions, roles, attributes, service accounts, and identity lifecycles, including the surprisingly destructive act of changing an ID in a URL. Access control means checking this person, this action, and this resource—not merely confirming a session exists.&lt;/p&gt;</content:encoded>
                
                <enclosure length="15764584" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/31b796af-255a-43f1-8537-b836090129b6/stream.mp3"/>
                
                <guid isPermaLink="false">fad2a67b-8d4a-4c85-adf7-3068cd598668</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:42:12 &#43;0000</pubDate>
                <itunes:duration>985</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 4 - Authentication — Prove You&#39;re You</itunes:title>
                <title>Cybersecurity - Episode 4 - Authentication — Prove You&#39;re You</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Passwords, MFA, passkeys, biometrics: what evidence should convince a system that you’re really you? We examine authentication factors, credential attacks, password storage, SSO, and account recovery. Strong authentication also has to work for real people—including when they lose a device or need an accessible way in.</p>]]></description>
                <content:encoded>&lt;p&gt;Passwords, MFA, passkeys, biometrics: what evidence should convince a system that you’re really you? We examine authentication factors, credential attacks, password storage, SSO, and account recovery. Strong authentication also has to work for real people—including when they lose a device or need an accessible way in.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22010148" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/2b3fe762-916a-4d47-a982-30edfeaf9458/stream.mp3"/>
                
                <guid isPermaLink="false">19ac5b44-034e-43f0-a4ee-f8036716d13c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:40:42 &#43;0000</pubDate>
                <itunes:duration>1375</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 3 - Firewalls, Segmentation, VPNs &amp; Zero Trust</itunes:title>
                <title>Cybersecurity - Episode 3 - Firewalls, Segmentation, VPNs &amp; Zero Trust</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>“We have a firewall” is the beginning of a conversation, not the end. We explore traffic filtering, segmentation, VPNs, proxies, and Zero Trust through the access decisions they support. An encrypted tunnel doesn’t automatically make its users trustworthy, and being inside the network shouldn’t grant unlimited roaming privileges.</p>]]></description>
                <content:encoded>&lt;p&gt;“We have a firewall” is the beginning of a conversation, not the end. We explore traffic filtering, segmentation, VPNs, proxies, and Zero Trust through the access decisions they support. An encrypted tunnel doesn’t automatically make its users trustworthy, and being inside the network shouldn’t grant unlimited roaming privileges.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20265586" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d995c9ff-0adf-4d2c-bced-511212a8f61d/stream.mp3"/>
                
                <guid isPermaLink="false">8eff9cc3-e3d7-4b01-b1ef-d08fb0504225</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:39:27 &#43;0000</pubDate>
                <itunes:duration>1266</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 2 - Networking, But Now Everyone Is Suspicious</itunes:title>
                <title>Cybersecurity - Episode 2 - Networking, But Now Everyone Is Suspicious</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>IP addresses, ports, DNS, routing: familiar networking concepts look different when we ask who can reach what. We follow how systems communicate, what common protocols do, and where attackers find opportunities. The goal is to understand the traffic—not memorize a list of numbers and hope for the best.</p>]]></description>
                <content:encoded>&lt;p&gt;IP addresses, ports, DNS, routing: familiar networking concepts look different when we ask who can reach what. We follow how systems communicate, what common protocols do, and where attackers find opportunities. The goal is to understand the traffic—not memorize a list of numbers and hope for the best.&lt;/p&gt;</content:encoded>
                
                <enclosure length="25948160" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8ad0d738-f7c8-43e8-ae8b-aa8a0603c463/stream.mp3"/>
                
                <guid isPermaLink="false">1296fa74-eb65-45a0-bc86-062158c5d292</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:37:24 &#43;0000</pubDate>
                <itunes:duration>1621</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Cybersecurity - Episode 1 - What Are We Actually Protecting?</itunes:title>
                <title>Cybersecurity - Episode 1 - What Are We Actually Protecting?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>8</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Before the acronyms arrive, what is cybersecurity trying to accomplish? We connect confidentiality, integrity, availability, threats, vulnerabilities, and risk to everyday development decisions. Security isn’t a promise that nothing bad will happen. It’s understanding what matters, what could go wrong, and how to reduce the damage.</p>]]></description>
                <content:encoded>&lt;p&gt;Before the acronyms arrive, what is cybersecurity trying to accomplish? We connect confidentiality, integrity, availability, threats, vulnerabilities, and risk to everyday development decisions. Security isn’t a promise that nothing bad will happen. It’s understanding what matters, what could go wrong, and how to reduce the damage.&lt;/p&gt;</content:encoded>
                
                <enclosure length="18368052" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/857221cb-4d84-4705-8118-e5cc477dc746/stream.mp3"/>
                
                <guid isPermaLink="false">993ab9ce-6811-4370-9b18-8baff10986f6</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Wed, 16 Sep 2026 02:35:55 &#43;0000</pubDate>
                <itunes:duration>1148</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 10 - One Hundred Percent of What? — Coverage and the Limits of Tests</itunes:title>
                <title>JavaScript Testing - Episode 10 - One Hundred Percent of What? — Coverage and the Limits of Tests</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>One hundred percent coverage sounds reassuring. It doesn’t mean every important behavior was checked. We unpack coverage metrics, mutation testing, property-based testing, and the limits of automated confidence. A test suite can execute every line and still share the application’s misunderstanding of what it was supposed to do.</p>]]></description>
                <content:encoded>&lt;p&gt;One hundred percent coverage sounds reassuring. It doesn’t mean every important behavior was checked. We unpack coverage metrics, mutation testing, property-based testing, and the limits of automated confidence. A test suite can execute every line and still share the application’s misunderstanding of what it was supposed to do.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22808868" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/abd56cef-142f-41e4-a4c3-8528d254baa3/stream.mp3"/>
                
                <guid isPermaLink="false">4e889835-a3da-4608-927b-e6e2a26c8cee</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:11:33 &#43;0000</pubDate>
                <itunes:duration>1425</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 9 - Unit, Integration, End-to-End — Which Wires Are Connected?</itunes:title>
                <title>JavaScript Testing - Episode 9 - Unit, Integration, End-to-End — Which Wires Are Connected?</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The pieces work separately. Do they work together? We follow one application promise through unit, integration, API, and browser tests, looking at which dependencies are real and what each scope can prove. The best test plan balances confidence, diagnostic clarity, maintenance, and the cost of running it.</p>]]></description>
                <content:encoded>&lt;p&gt;The pieces work separately. Do they work together? We follow one application promise through unit, integration, API, and browser tests, looking at which dependencies are real and what each scope can prove. The best test plan balances confidence, diagnostic clarity, maintenance, and the cost of running it.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21899389" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/26ab095c-8eba-4bac-a1af-858ccaa06167/stream.mp3"/>
                
                <guid isPermaLink="false">17af76a7-91fb-416f-966b-c793f7a2695f</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:09:57 &#43;0000</pubDate>
                <itunes:duration>1368</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 8 - Async Tests — The Test Finished Before the Bug Arrived</itunes:title>
                <title>JavaScript Testing - Episode 8 - Async Tests — The Test Finished Before the Bug Arrived</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A green test means very little if it stopped before the interesting part happened. We work through promises, rejected requests, loading states, races, fake timers, and condition-based waiting. The recurring question: what tells this test that the behavior it cares about has actually finished?</p>]]></description>
                <content:encoded>&lt;p&gt;A green test means very little if it stopped before the interesting part happened. We work through promises, rejected requests, loading states, races, fake timers, and condition-based waiting. The recurring question: what tells this test that the behavior it cares about has actually finished?&lt;/p&gt;</content:encoded>
                
                <enclosure length="20604133" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/755cc967-ab7b-4c1d-946b-ecf2029c4c64/stream.mp3"/>
                
                <guid isPermaLink="false">499bba9a-2dea-46b8-9f58-920506bcb43c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:08:32 &#43;0000</pubDate>
                <itunes:duration>1287</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 7 - React Testing — Stop Interrogating the Furniture</itunes:title>
                <title>JavaScript Testing - Episode 7 - React Testing — Stop Interrogating the Furniture</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Did the component behave correctly, or did we merely confirm its internal furniture arrangement? We explore React tests through rendering, interaction, and observable results, including props, effects, providers, network boundaries, and snapshots. A useful test should survive a refactor that leaves the user’s experience unchanged.</p>]]></description>
                <content:encoded>&lt;p&gt;Did the component behave correctly, or did we merely confirm its internal furniture arrangement? We explore React tests through rendering, interaction, and observable results, including props, effects, providers, network boundaries, and snapshots. A useful test should survive a refactor that leaves the user’s experience unchanged.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22311497" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/711f7cb1-93c8-4fd1-829e-2c8700f7472b/stream.mp3"/>
                
                <guid isPermaLink="false">3fffe907-debe-4c44-8882-dfbc98561528</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:06:49 &#43;0000</pubDate>
                <itunes:duration>1394</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 6 - Testing the DOM Without a Browser — Mostly</itunes:title>
                <title>JavaScript Testing - Episode 6 - Testing the DOM Without a Browser — Mostly</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A simulated DOM can tell us plenty about an interface, but it doesn’t actually draw the page. We test a widget through roles, labels, keyboard interactions, and visible feedback, then examine where real-browser checks still matter. Finding a button and proving people can use it are related questions, not identical ones.</p>]]></description>
                <content:encoded>&lt;p&gt;A simulated DOM can tell us plenty about an interface, but it doesn’t actually draw the page. We test a widget through roles, labels, keyboard interactions, and visible feedback, then examine where real-browser checks still matter. Finding a button and proving people can use it are related questions, not identical ones.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20878733" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/3e0f773f-1402-4eae-96f6-12d2746a07ab/stream.mp3"/>
                
                <guid isPermaLink="false">6e36c659-fdaa-4e61-ba4b-201f15910f43</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:05:53 &#43;0000</pubDate>
                <itunes:duration>1304</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 5 - Mocks, Stubs, Spies, and Other Lies We Tell Our Code</itunes:title>
                <title>JavaScript Testing - Episode 5 - Mocks, Stubs, Spies, and Other Lies We Tell Our Code</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Testing shouldn’t require emailing real customers or charging actual credit cards. We explore test doubles, dependency boundaries, and the differences between supplying an answer and observing a call. A replacement can make a test safer and clearer—or so accommodating that reality never gets a vote.</p>]]></description>
                <content:encoded>&lt;p&gt;Testing shouldn’t require emailing real customers or charging actual credit cards. We explore test doubles, dependency boundaries, and the differences between supplying an answer and observing a call. A replacement can make a test safer and clearer—or so accommodating that reality never gets a vote.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21134524" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/1e2aa74f-47a9-43c2-9ee9-467ac0e00305/stream.mp3"/>
                
                <guid isPermaLink="false">0cf4a932-9c5a-4c61-9fc9-dd4734c29c38</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:04:25 &#43;0000</pubDate>
                <itunes:duration>1320</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 4 - Jest, Vitest, and Who Actually Runs This Stuff?</itunes:title>
                <title>JavaScript Testing - Episode 4 - Jest, Vitest, and Who Actually Runs This Stuff?</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The test file exists. What finds it, runs it, and decides whether it failed? We separate runners, assertions, environments, transforms, and watch mode while exploring Jest, Vitest, and Node’s testing support. Configuration starts making more sense when every moving part has an identifiable job.</p>]]></description>
                <content:encoded>&lt;p&gt;The test file exists. What finds it, runs it, and decides whether it failed? We separate runners, assertions, environments, transforms, and watch mode while exploring Jest, Vitest, and Node’s testing support. Configuration starts making more sense when every moving part has an identifiable job.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22271791" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/ce4fbf34-c384-4831-b7d0-90075281d9fb/stream.mp3"/>
                
                <guid isPermaLink="false">cf52621e-8c74-494a-ab82-3e90c9384dae</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:03:14 &#43;0000</pubDate>
                <itunes:duration>1391</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 3 - Arrange, Act, Assert — The Testing Sandwich</itunes:title>
                <title>JavaScript Testing - Episode 3 - Arrange, Act, Assert — The Testing Sandwich</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A test should make its question easy to see. We use Arrange, Act, Assert to separate the situation, the action, and the expected result, then tackle fixtures, hooks, names, and parameterized cases. Three comments aren’t enough if the test still passes for the wrong reason.</p>]]></description>
                <content:encoded>&lt;p&gt;A test should make its question easy to see. We use Arrange, Act, Assert to separate the situation, the action, and the expected result, then tackle fixtures, hooks, names, and parameterized cases. Three comments aren’t enough if the test still passes for the wrong reason.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21302961" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/b446f3aa-0145-4242-99e0-a4f464170e87/stream.mp3"/>
                
                <guid isPermaLink="false">e06ba06c-305e-4244-b721-fad96207dd9d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 15:01:33 &#43;0000</pubDate>
                <itunes:duration>1331</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 2 - Unit Tests — How Tiny Is Tiny?</itunes:title>
                <title>JavaScript Testing - Episode 2 - Unit Tests — How Tiny Is Tiny?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Is a unit a function, a file, or whatever fits comfortably in your brain? We test small behavioral promises through inputs, outputs, errors, and mutation. Along the way, we examine useful assertions, edge cases, and why a collection of passing unit tests doesn’t prove the whole application works.</p>]]></description>
                <content:encoded>&lt;p&gt;Is a unit a function, a file, or whatever fits comfortably in your brain? We test small behavioral promises through inputs, outputs, errors, and mutation. Along the way, we examine useful assertions, edge cases, and why a collection of passing unit tests doesn’t prove the whole application works.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21795317" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/85550109-ad23-49d1-8674-9705f886cd7e/stream.mp3"/>
                
                <guid isPermaLink="false">e708925b-e1e3-4ff3-a0ae-7482c61ba844</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 04:12:02 &#43;0000</pubDate>
                <itunes:duration>1362</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>JavaScript Testing - Episode 1 - Why Are We Testing Code That Already Works?</itunes:title>
                <title>JavaScript Testing - Episode 1 - Why Are We Testing Code That Already Works?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>7</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>“I clicked it and it worked” is evidence. It’s just evidence with a short memory. We explore what automated tests preserve, how regressions happen, and what a passing test actually proves. Before choosing a testing framework, we need a useful question and a reason to trust the answer.</p>]]></description>
                <content:encoded>&lt;p&gt;“I clicked it and it worked” is evidence. It’s just evidence with a short memory. We explore what automated tests preserve, how regressions happen, and what a passing test actually proves. Before choosing a testing framework, we need a useful question and a reason to trust the answer.&lt;/p&gt;</content:encoded>
                
                <enclosure length="20761704" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/bd06cf0c-5542-4ece-8cfc-e53c6db6c33a/stream.mp3"/>
                
                <guid isPermaLink="false">0d692f25-3aba-4850-af70-bf581e37a996</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 04:10:13 &#43;0000</pubDate>
                <itunes:duration>1297</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 14 - Build an Architecture in Your Head — Reasons Before Rectangles</itunes:title>
                <title>Web Architecture - Episode 14 - Build an Architecture in Your Head — Reasons Before Rectangles</title>

                <itunes:episode>14</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Time to design a system without beginning with a shopping list of technologies. We take Nervous Robot Pizza Delivery from requirements through data ownership, failure paths, accessibility, growth, and recovery. The series wraps with a practical way to explain not just what you’d build, but why.</p>]]></description>
                <content:encoded>&lt;p&gt;Time to design a system without beginning with a shopping list of technologies. We take Nervous Robot Pizza Delivery from requirements through data ownership, failure paths, accessibility, growth, and recovery. The series wraps with a practical way to explain not just what you’d build, but why.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23101857" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/be6dae6f-6b03-4476-8dbc-35796de21dd9/stream.mp3"/>
                
                <guid isPermaLink="false">04304615-4a13-489d-8f32-204ae9aca8d9</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:41:09 &#43;0000</pubDate>
                <itunes:duration>1443</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 13 - SSR, CSR, SSG, and Hydration — When Does the HTML Happen?</itunes:title>
                <title>Web Architecture - Episode 13 - SSR, CSR, SSG, and Hydration — When Does the HTML Happen?</title>

                <itunes:episode>13</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Where is the page built, when is it built, and when does it become interactive? We connect server rendering, client rendering, static generation, hydration, and streaming through concrete page journeys. The acronyms become much less mysterious once we follow the HTML instead of ranking frameworks.</p>]]></description>
                <content:encoded>&lt;p&gt;Where is the page built, when is it built, and when does it become interactive? We connect server rendering, client rendering, static generation, hydration, and streaming through concrete page journeys. The acronyms become much less mysterious once we follow the HTML instead of ranking frameworks.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22199484" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5877b602-6146-4d60-8488-f425c73d0832/stream.mp3"/>
                
                <guid isPermaLink="false">b25024db-5fa7-4cfa-ad33-36fc30ccc26f</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:40:18 &#43;0000</pubDate>
                <itunes:duration>1387</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 12 - Scaling — More Pizza, Not Automatically More Services</itunes:title>
                <title>Web Architecture - Episode 12 - Scaling — More Pizza, Not Automatically More Services</title>

                <itunes:episode>12</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The pizza site went viral. Does that mean we need microservices now? We explore bottlenecks, vertical and horizontal scaling, queues, database pressure, load testing, and graceful degradation. Scaling starts with measuring what’s struggling, then adding capacity where it will actually help.</p>]]></description>
                <content:encoded>&lt;p&gt;The pizza site went viral. Does that mean we need microservices now? We explore bottlenecks, vertical and horizontal scaling, queues, database pressure, load testing, and graceful degradation. Scaling starts with measuring what’s struggling, then adding capacity where it will actually help.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22960587" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/5f8ca791-b38a-4ea9-95c4-ad5aa2ea2cc1/stream.mp3"/>
                
                <guid isPermaLink="false">551003af-d96b-4afa-a66a-dd03fe0bd912</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:39:25 &#43;0000</pubDate>
                <itunes:duration>1435</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 11 - Caching and CDNs — Yesterday&#39;s Pizza, Today&#39;s Problem</itunes:title>
                <title>Web Architecture - Episode 11 - Caching and CDNs — Yesterday&#39;s Pizza, Today&#39;s Problem</title>

                <itunes:episode>11</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Keeping a copy can make a website faster. Keeping the wrong copy can show someone yesterday’s menu—or another customer’s order. We unpack browser caches, CDNs, freshness, validation, cache keys, and invalidation. The useful question isn’t just “Can we cache this?” It’s “Under what conditions?”</p>]]></description>
                <content:encoded>&lt;p&gt;Keeping a copy can make a website faster. Keeping the wrong copy can show someone yesterday’s menu—or another customer’s order. We unpack browser caches, CDNs, freshness, validation, cache keys, and invalidation. The useful question isn’t just “Can we cache this?” It’s “Under what conditions?”&lt;/p&gt;</content:encoded>
                
                <enclosure length="22627892" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/48a03e0a-f2e7-4b33-9f97-4989d9640fc0/stream.mp3"/>
                
                <guid isPermaLink="false">094d17bb-f064-415d-874a-19d99a13fdf2</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:38:35 &#43;0000</pubDate>
                <itunes:duration>1414</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 10 - Microservices — Congratulations, Your Function Call Has Weather</itunes:title>
                <title>Web Architecture - Episode 10 - Microservices — Congratulations, Your Function Call Has Weather</title>

                <itunes:episode>10</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Separate services can give teams independence, but the network introduces new ways for dinner to go wrong. We examine service boundaries, data ownership, messages, retries, compensation, and observability. Microservices solve particular problems—and bring operational responsibilities that don’t fit neatly inside the architecture diagram.</p>]]></description>
                <content:encoded>&lt;p&gt;Separate services can give teams independence, but the network introduces new ways for dinner to go wrong. We examine service boundaries, data ownership, messages, retries, compensation, and observability. Microservices solve particular problems—and bring operational responsibilities that don’t fit neatly inside the architecture diagram.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22581080" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/3ec42336-79f3-4a42-ad73-fa68ae37dfa7/stream.mp3"/>
                
                <guid isPermaLink="false">f45e6bbc-c022-4dad-aebe-d9c6001d467b</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:37:41 &#43;0000</pubDate>
                <itunes:duration>1411</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 9 - Monoliths — One Application, Several Responsibilities</itunes:title>
                <title>Web Architecture - Episode 9 - Monoliths — One Application, Several Responsibilities</title>

                <itunes:episode>9</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A monolith isn’t automatically a tangled disaster. We explore how one deployable application can still have clear modules, deliberate data ownership, and useful boundaries. When does keeping things together simplify development, and what evidence would justify splitting a responsibility into a separate service?</p>]]></description>
                <content:encoded>&lt;p&gt;A monolith isn’t automatically a tangled disaster. We explore how one deployable application can still have clear modules, deliberate data ownership, and useful boundaries. When does keeping things together simplify development, and what evidence would justify splitting a responsibility into a separate service?&lt;/p&gt;</content:encoded>
                
                <enclosure length="22403866" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/dc7fcdac-b732-4c60-875b-1fdbc6caa6ad/stream.mp3"/>
                
                <guid isPermaLink="false">cb535b2c-0e4a-484f-8f13-e30812c5a6f2</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:36:47 &#43;0000</pubDate>
                <itunes:duration>1400</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 8 - Databases and Application State — Where Does the Truth Live?</itunes:title>
                <title>Web Architecture - Episode 8 - Databases and Application State — Where Does the Truth Live?</title>

                <itunes:episode>8</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>An order stored in a variable is having a dangerously temporary existence. We explore persistence, transactions, concurrency, indexes, migrations, and recovery—and why a database does more than save things. Two customers want the last dough ball. Somewhere, the system needs a trustworthy answer.</p>]]></description>
                <content:encoded>&lt;p&gt;An order stored in a variable is having a dangerously temporary existence. We explore persistence, transactions, concurrency, indexes, migrations, and recovery—and why a database does more than save things. Two customers want the last dough ball. Somewhere, the system needs a trustworthy answer.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22076604" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/b7591bb7-d16a-4983-a439-b4f1e02d6369/stream.mp3"/>
                
                <guid isPermaLink="false">6fdcff0f-a8c9-4ec3-be8f-7a04a6e3c677</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:35:56 &#43;0000</pubDate>
                <itunes:duration>1379</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 7 - Authentication, Sessions, Cookies, and Tokens — Do You Know Me?</itunes:title>
                <title>Web Architecture - Episode 7 - Authentication, Sessions, Cookies, and Tokens — Do You Know Me?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Recognizing someone and allowing them to do something are different jobs. We follow sessions, cookies, tokens, login redirects, and expiry, then examine CSRF and access to individual orders. “I’m logged in” is useful information. It is not permission to inspect everybody else’s pizza.</p>]]></description>
                <content:encoded>&lt;p&gt;Recognizing someone and allowing them to do something are different jobs. We follow sessions, cookies, tokens, login redirects, and expiry, then examine CSRF and access to individual orders. “I’m logged in” is useful information. It is not permission to inspect everybody else’s pizza.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23141146" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d873367c-8926-411d-92e9-b7fb4f797f12/stream.mp3"/>
                
                <guid isPermaLink="false">38ebd98e-cc30-4f3f-8ef4-110277b77699</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:34:31 &#43;0000</pubDate>
                <itunes:duration>1446</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 6 - APIs — A Boundary With a Job Description</itunes:title>
                <title>Web Architecture - Episode 6 - APIs — A Boundary With a Job Description</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>An API is more than a URL that returns JSON. We explore contracts, methods, validation, errors, pagination, compatibility, and retries through a pizza-ordering system. What does one part of the application promise another, and how do we keep a retry from accidentally ordering dinner twice?</p>]]></description>
                <content:encoded>&lt;p&gt;An API is more than a URL that returns JSON. We explore contracts, methods, validation, errors, pagination, compatibility, and retries through a pizza-ordering system. What does one part of the application promise another, and how do we keep a retry from accidentally ordering dinner twice?&lt;/p&gt;</content:encoded>
                
                <enclosure length="22185691" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/01ff0dc2-fbb5-43a0-9477-f175461c2a97/stream.mp3"/>
                
                <guid isPermaLink="false">afe0db84-14b2-482e-a8d3-19fb65d2a34a</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:33:37 &#43;0000</pubDate>
                <itunes:duration>1386</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 5 - How We Got SPAs — The Page Refuses to Leave</itunes:title>
                <title>Web Architecture - Episode 5 - How We Got SPAs — The Page Refuses to Leave</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Why reload an entire page when only one part needs to change? We explore the problems single-page applications solve—and the browser responsibilities they take over. Routing, loading states, accessibility, stale requests, and the Back button all enter the conversation. Smooth navigation comes with work attached.</p>]]></description>
                <content:encoded>&lt;p&gt;Why reload an entire page when only one part needs to change? We explore the problems single-page applications solve—and the browser responsibilities they take over. Routing, loading states, accessibility, stale requests, and the Back button all enter the conversation. Smooth navigation comes with work attached.&lt;/p&gt;</content:encoded>
                
                <enclosure length="22134282" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/7c07aaee-f816-4e34-9dd7-e084a87d0e43/stream.mp3"/>
                
                <guid isPermaLink="false">8873dd6c-35ea-4856-ac21-874263f0e674</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:32:27 &#43;0000</pubDate>
                <itunes:duration>1383</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 4 - Static Sites, Server Rendering, and the Allegedly Dead Web</itunes:title>
                <title>Web Architecture - Episode 4 - Static Sites, Server Rendering, and the Allegedly Dead Web</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Static doesn’t mean lifeless, and server-rendered doesn’t mean obsolete. We compare preparing HTML ahead of time with building it for each request, then follow forms, sessions, and progressive enhancement. What can the browser already do, and when does adding JavaScript actually improve the experience?</p>]]></description>
                <content:encoded>&lt;p&gt;Static doesn’t mean lifeless, and server-rendered doesn’t mean obsolete. We compare preparing HTML ahead of time with building it for each request, then follow forms, sessions, and progressive enhancement. What can the browser already do, and when does adding JavaScript actually improve the experience?&lt;/p&gt;</content:encoded>
                
                <enclosure length="22606158" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/d8af03e2-4733-4ba1-ac76-1e9d955d1f5e/stream.mp3"/>
                
                <guid isPermaLink="false">886b0267-41a7-4c3e-8b1a-1ec7a110985d</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:31:35 &#43;0000</pubDate>
                <itunes:duration>1412</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 3 - The Request/Response Cycle — I Pressed Enter, Now What?</itunes:title>
                <title>Web Architecture - Episode 3 - The Request/Response Cycle — I Pressed Enter, Now What?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>A URL goes in, a page comes out, and an unreasonable amount happens in between. We follow DNS, connections, HTTP requests, headers, responses, and redirects, then investigate slow requests and missing answers. That loading spinner has a story—and sometimes the story includes an order that already went through.</p>]]></description>
                <content:encoded>&lt;p&gt;A URL goes in, a page comes out, and an unreasonable amount happens in between. We follow DNS, connections, HTTP requests, headers, responses, and redirects, then investigate slow requests and missing answers. That loading spinner has a story—and sometimes the story includes an order that already went through.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21695843" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/deb30ccc-cdb1-474c-ac84-7b04aeb3925f/stream.mp3"/>
                
                <guid isPermaLink="false">89914a8a-f9ad-4402-88fc-876beaba222c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:30:40 &#43;0000</pubDate>
                <itunes:duration>1355</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 2 - Client vs Server — Whose Computer Is This?</itunes:title>
                <title>Web Architecture - Episode 2 - Client vs Server — Whose Computer Is This?</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>The browser says the pizza costs twelve cents. Should the server believe it? We explore what belongs on the client, what belongs on the server, and why the boundary matters for security, performance, and user experience. Running JavaScript on both sides doesn’t make them the same place.</p>]]></description>
                <content:encoded>&lt;p&gt;The browser says the pizza costs twelve cents. Should the server believe it? We explore what belongs on the client, what belongs on the server, and why the boundary matters for security, performance, and user experience. Running JavaScript on both sides doesn’t make them the same place.&lt;/p&gt;</content:encoded>
                
                <enclosure length="21632731" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/21871c22-858c-4c81-b814-eee45f4bb76b/stream.mp3"/>
                
                <guid isPermaLink="false">6eae8fb1-31ff-4ae9-8dbc-367fc5d9b0fe</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:29:54 &#43;0000</pubDate>
                <itunes:duration>1352</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Web Architecture - Episode 1 - What Even Is Web Architecture?</itunes:title>
                <title>Web Architecture - Episode 1 - What Even Is Web Architecture?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>6</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Architecture diagrams have boxes, arrows, and occasionally weather. But what are they explaining? Using Nervous Robot Pizza Delivery, we follow an order through a system and explore responsibilities, boundaries, failure, and tradeoffs. The architecture starts with what people need to do, not which framework looks impressive.</p>]]></description>
                <content:encoded>&lt;p&gt;Architecture diagrams have boxes, arrows, and occasionally weather. But what are they explaining? Using Nervous Robot Pizza Delivery, we follow an order through a system and explore responsibilities, boundaries, failure, and tradeoffs. The architecture starts with what people need to do, not which framework looks impressive.&lt;/p&gt;</content:encoded>
                
                <enclosure length="23086811" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/84e223f5-7dd3-429b-b4b2-95bb4e24db20/stream.mp3"/>
                
                <guid isPermaLink="false">ba661641-e4e8-4af5-9d40-34c747c1c6cf</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:28:23 &#43;0000</pubDate>
                <itunes:duration>1442</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 7 - Okay, But How Do People Write JavaScript Now?</itunes:title>
                <title>Modern JavaScript - Episode 7 - Okay, But How Do People Write JavaScript Now?</title>

                <itunes:episode>7</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Do we really need to replace every loop with a chain of array methods? We compare <code>map</code>, <code>filter</code>, <code>find</code>, <code>reduce</code>, modern loops, and object helpers through the work they actually perform. The goal is readable transformations—not proving you know the most fashionable punctuation.</p>]]></description>
                <content:encoded>&lt;p&gt;Do we really need to replace every loop with a chain of array methods? We compare &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, modern loops, and object helpers through the work they actually perform. The goal is readable transformations—not proving you know the most fashionable punctuation.&lt;/p&gt;</content:encoded>
                
                <enclosure length="4459624" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/cf723053-6ea0-4a5d-bae3-c0107a93880f/stream.mp3"/>
                
                <guid isPermaLink="false">91dbdcc8-bb9f-469d-8f2f-13c642557a45</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:25:16 &#43;0000</pubDate>
                <itunes:duration>278</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 6 - Import This, Export That</itunes:title>
                <title>Modern JavaScript - Episode 6 - Import This, Export That</title>

                <itunes:episode>6</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Before modules, sharing JavaScript often involved globals and hoping your script tags were in the right order. We explore imports, exports, module scope, CommonJS, and dynamic imports—and explain why browsers, Node, and build tools don’t always agree about how a module should be loaded.</p>]]></description>
                <content:encoded>&lt;p&gt;Before modules, sharing JavaScript often involved globals and hoping your script tags were in the right order. We explore imports, exports, module scope, CommonJS, and dynamic imports—and explain why browsers, Node, and build tools don’t always agree about how a module should be loaded.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3911680" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/4b3cf7ea-3754-4d00-b873-0a31ed6a64b9/stream.mp3"/>
                
                <guid isPermaLink="false">71c0791d-fb59-4233-859a-ee6b079a9321</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:24:34 &#43;0000</pubDate>
                <itunes:duration>244</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 5 - JavaScript Finally Learned How to Wait</itunes:title>
                <title>Modern JavaScript - Episode 5 - JavaScript Finally Learned How to Wait</title>

                <itunes:episode>5</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>How does JavaScript wait for something without freezing everything else? We connect callbacks, promises, and <code>async</code>/<code>await</code>, explain the event loop without requiring a PhD, and examine errors, parallel requests, and forgotten promises. Making asynchronous code look straightforward doesn’t make timing disappear.</p>]]></description>
                <content:encoded>&lt;p&gt;How does JavaScript wait for something without freezing everything else? We connect callbacks, promises, and &lt;code&gt;async&lt;/code&gt;/&lt;code&gt;await&lt;/code&gt;, explain the event loop without requiring a PhD, and examine errors, parallel requests, and forgotten promises. Making asynchronous code look straightforward doesn’t make timing disappear.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3982733" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/c2954c0c-6a7f-4259-9f6d-ebd6a13bc999/stream.mp3"/>
                
                <guid isPermaLink="false">f924aea8-3de9-4b61-ac87-82ab18f0fc6c</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:23:52 &#43;0000</pubDate>
                <itunes:duration>248</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 4 - Wait, That&#39;s Just JavaScript</itunes:title>
                <title>Modern JavaScript - Episode 4 - Wait, That&#39;s Just JavaScript</title>

                <itunes:episode>4</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Destructuring, spread, rest, template literals, optional chaining: modern JavaScript can look like somebody spilled punctuation into your editor. We work through what these features actually do, which problems they simplify, and when “clever” syntax makes perfectly reasonable code harder to understand.</p>]]></description>
                <content:encoded>&lt;p&gt;Destructuring, spread, rest, template literals, optional chaining: modern JavaScript can look like somebody spilled punctuation into your editor. We work through what these features actually do, which problems they simplify, and when “clever” syntax makes perfectly reasonable code harder to understand.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3602390" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/eb8d6335-099d-4838-bdd0-4ee7b55cc9a0/stream.mp3"/>
                
                <guid isPermaLink="false">40323f56-191c-46af-9e12-ee29d00860c0</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:23:13 &#43;0000</pubDate>
                <itunes:duration>225</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 3 - Why Does Everything Have an Arrow Now?</itunes:title>
                <title>Modern JavaScript - Episode 3 - Why Does Everything Have an Arrow Now?</title>

                <itunes:episode>3</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>Arrow functions aren’t just regular functions with less punctuation. We explore callbacks, implicit returns, and the surprisingly important difference in how arrows handle <code>this</code>. Plus: when a traditional function is exactly what you want, and why returning an object occasionally requires punctuation restitution.</p>]]></description>
                <content:encoded>&lt;p&gt;Arrow functions aren’t just regular functions with less punctuation. We explore callbacks, implicit returns, and the surprisingly important difference in how arrows handle &lt;code&gt;this&lt;/code&gt;. Plus: when a traditional function is exactly what you want, and why returning an object occasionally requires punctuation restitution.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3169384" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8e4338f9-06f1-439f-9851-e25445c25f76/stream.mp3"/>
                
                <guid isPermaLink="false">cc357997-669d-4a9c-b4e6-852d4445bb39</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:22:30 &#43;0000</pubDate>
                <itunes:duration>198</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 2 - var Has Left the Building</itunes:title>
                <title>Modern JavaScript - Episode 2 - var Has Left the Building</title>

                <itunes:episode>2</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>What did <code>var</code> do wrong, and why do we now have <code>let</code> and <code>const</code>? We untangle scope, hoisting, reassignment, and mutation, including why a constant object can still change. Grandpa Var gets a fair hearing, but the loop bugs remain on the record.</p>]]></description>
                <content:encoded>&lt;p&gt;What did &lt;code&gt;var&lt;/code&gt; do wrong, and why do we now have &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt;? We untangle scope, hoisting, reassignment, and mutation, including why a constant object can still change. Grandpa Var gets a fair hearing, but the loop bugs remain on the record.&lt;/p&gt;</content:encoded>
                
                <enclosure length="3672189" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/376d7880-b882-4ebe-ab70-ba74384e5ee2/stream.mp3"/>
                
                <guid isPermaLink="false">29233883-b6ae-417e-abfe-75eac60edbbd</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:21:29 &#43;0000</pubDate>
                <itunes:duration>229</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <item>
                <itunes:episodeType>full</itunes:episodeType>
                <itunes:title>Modern JavaScript - Episode 1 - Wait, JavaScript Changed?</itunes:title>
                <title>Modern JavaScript - Episode 1 - Wait, JavaScript Changed?</title>

                <itunes:episode>1</itunes:episode>
                <itunes:season>1</itunes:season>
                <itunes:author>Lori Dunford</itunes:author>
                
                <description><![CDATA[<p>JavaScript apparently changed clothes while Parisa wasn’t looking. We unpack ES6, ECMAScript, browser support, and transpilers—and separate actual JavaScript features from TypeScript, React, and tooling. Why did the language change, and which problems were those changes supposed to solve?</p>]]></description>
                <content:encoded>&lt;p&gt;JavaScript apparently changed clothes while Parisa wasn’t looking. We unpack ES6, ECMAScript, browser support, and transpilers—and separate actual JavaScript features from TypeScript, React, and tooling. Why did the language change, and which problems were those changes supposed to solve?&lt;/p&gt;</content:encoded>
                
                <enclosure length="6918896" type="audio/mpeg" url="https://audio3.redcircle.com/episodes/8df76e2f-3238-4da7-a66a-aecd5589ef2a/stream.mp3"/>
                
                <guid isPermaLink="false">3bd28fd5-c443-4b90-8d73-c1824dca8a94</guid>
                <link>https://loridunford.com/okay-but-why</link>
                <pubDate>Mon, 14 Sep 2026 02:07:50 &#43;0000</pubDate>
                <itunes:duration>432</itunes:duration>
                
                
                <itunes:explicit>false</itunes:explicit>
                
            </item>
        
            <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>5</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>5</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>5</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>5</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>5</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>5</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>5</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>5</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>4</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>3</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>4</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="24012591" 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>1500</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>3</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>3</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>2</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>2</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>2</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>2</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>2</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>2</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>2</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>2</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>2</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>
