<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="https://rss.buzzsprout.com/styles.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:psc="http://podlove.org/simple-chapters" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://rss.buzzsprout.com/2327840.rss" rel="self" type="application/rss+xml" />
  <atom:link href="https://pubsubhubbub.appspot.com/" rel="hub" xmlns="http://www.w3.org/2005/Atom" />
  <title>OGUNTONADE &#39;s Podcast</title>

  <lastBuildDate>Wed, 13 May 2026 02:05:12 -0400</lastBuildDate>
    <language>en-us</language>
  <copyright>© 2026 OGUNTONADE &#39;s Podcast</copyright>
  <podcast:locked>yes</podcast:locked>
    <podcast:guid>613a5193-f480-5115-b0fe-d356daec0ea4</podcast:guid>
  <itunes:author>OGUNTONADE </itunes:author>
  <itunes:type>episodic</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <description><![CDATA[<p>My motive is reaching out to interchangeable ideologies to help with my 28 year old self</p>]]></description>
  <generator>Buzzsprout (https://www.buzzsprout.com)</generator>
  <itunes:owner>
    <itunes:name>OGUNTONADE </itunes:name>
  </itunes:owner>
  <item>
    <itunes:title>Frontend System Design</itunes:title>
    <title>Frontend System Design</title>
    <itunes:summary><![CDATA[The two-part series on scaling web applications provides a complete framework for handling frontend growth, covering both architectural design (how the application itself is structured) and code organization (how the repositories are managed). While Part 1 established that applications typically evolve from a Monolithic Architecture to a Modular Monolith, and ultimately to Micro-frontends as teams and complexity grow, Part 2 details how to actually store and manage the code for these complex ...]]></itunes:summary>
    <description><![CDATA[<p>The two-part series on scaling web applications provides a complete framework for handling frontend growth, covering both <b>architectural design</b> (how the application itself is structured) and <b>code organization</b> (how the repositories are managed).</p><p>While Part 1 established that applications typically evolve from a <b>Monolithic Architecture</b> to a <b>Modular Monolith</b>, and ultimately to <b>Micro-frontends</b> as teams and complexity grow, Part 2 details how to actually store and manage the code for these complex systems.</p><p><b>Code Organization: Monorepos vs. Polyrepos</b> Once an application is split into multiple modules or micro-frontends, you must decide how to store them.</p><p><b>Monorepositories:</b> A single repository that contains multiple projects or applications.<br/><b>The Benefits:</b> They provide <b>high visibility</b> across the entire codebase, making it much easier to trace bugs across different modules. They also drastically simplify <b>code sharing</b> (like shared UI libraries) and allow for <b>standardization</b> of linting and naming conventions across all teams.<br/><b>The Drawbacks:</b> They are prone to <b>merge conflicts</b>, can create &quot;fragile modules&quot; (where updating shared code breaks multiple applications simultaneously), and make it nearly impossible to restrict security access to specific teams.</p><p><b>Polyrepositories (Multiple Repositories):</b> Separate repositories for each individual project or component. These are generally the best choice for highly independent <b>micro-frontends</b>, as they offer teams maximum autonomy and prevent deployment bottlenecks.</p><p><b>The Full-Stack Monorepo Strategy</b> For small to medium-sized cross-functional teams, housing both the frontend and backend applications in a single monorepo is a highly effective strategy. If both the frontend and backend use TypeScript, you can leverage tools like <b>tRPC</b> (TypeScript RPC). This allows the frontend to call backend functions directly without worrying about HTTP verbs or REST URLs, seamlessly blending the development experience.</p><p><b>Managing Versions in a Monorepo</b> When housing multiple projects together, versioning becomes a challenge. Teams typically use one of three approaches:</p><p><b>Semantic Release:</b> Fully automated versioning and package publishing.</p><p><b>Manual Versioning:</b> Developers or maintainers manually decide the next version number.</p><p><b>Global Versioning:</b> All projects share the exact same version number. While simple, a change in one single package requires bumping the version for the entire repository, which becomes computationally expensive for massive projects.</p><p><b>The Decision Framework</b> The series concludes by emphasizing that there is no single &quot;perfect&quot; scaling strategy; choices should be dictated strictly by project and team size.</p><p>For a <b>small application</b> (like a simple to-do list) maintained by 2-3 developers, a <b>Monolith in a Monorepo</b> is the best choice. It allows for consistent UI, easy debugging, and rapid early-stage development. Over-engineering this with micro-frontends would waste valuable time and resources.</p><p>For a massive <b>enterprise application</b> (like a complex admin dashboard with separate domains for users, budgets, and metrics) managed by multiple independent teams, adopting <b>Micro-frontends in Polyrepositories</b> is ideal. This ensures each team can develop, test, and deploy their services without stepping on each other&apos;s toes</p>]]></description>
    <content:encoded><![CDATA[<p>The two-part series on scaling web applications provides a complete framework for handling frontend growth, covering both <b>architectural design</b> (how the application itself is structured) and <b>code organization</b> (how the repositories are managed).</p><p>While Part 1 established that applications typically evolve from a <b>Monolithic Architecture</b> to a <b>Modular Monolith</b>, and ultimately to <b>Micro-frontends</b> as teams and complexity grow, Part 2 details how to actually store and manage the code for these complex systems.</p><p><b>Code Organization: Monorepos vs. Polyrepos</b> Once an application is split into multiple modules or micro-frontends, you must decide how to store them.</p><p><b>Monorepositories:</b> A single repository that contains multiple projects or applications.<br/><b>The Benefits:</b> They provide <b>high visibility</b> across the entire codebase, making it much easier to trace bugs across different modules. They also drastically simplify <b>code sharing</b> (like shared UI libraries) and allow for <b>standardization</b> of linting and naming conventions across all teams.<br/><b>The Drawbacks:</b> They are prone to <b>merge conflicts</b>, can create &quot;fragile modules&quot; (where updating shared code breaks multiple applications simultaneously), and make it nearly impossible to restrict security access to specific teams.</p><p><b>Polyrepositories (Multiple Repositories):</b> Separate repositories for each individual project or component. These are generally the best choice for highly independent <b>micro-frontends</b>, as they offer teams maximum autonomy and prevent deployment bottlenecks.</p><p><b>The Full-Stack Monorepo Strategy</b> For small to medium-sized cross-functional teams, housing both the frontend and backend applications in a single monorepo is a highly effective strategy. If both the frontend and backend use TypeScript, you can leverage tools like <b>tRPC</b> (TypeScript RPC). This allows the frontend to call backend functions directly without worrying about HTTP verbs or REST URLs, seamlessly blending the development experience.</p><p><b>Managing Versions in a Monorepo</b> When housing multiple projects together, versioning becomes a challenge. Teams typically use one of three approaches:</p><p><b>Semantic Release:</b> Fully automated versioning and package publishing.</p><p><b>Manual Versioning:</b> Developers or maintainers manually decide the next version number.</p><p><b>Global Versioning:</b> All projects share the exact same version number. While simple, a change in one single package requires bumping the version for the entire repository, which becomes computationally expensive for massive projects.</p><p><b>The Decision Framework</b> The series concludes by emphasizing that there is no single &quot;perfect&quot; scaling strategy; choices should be dictated strictly by project and team size.</p><p>For a <b>small application</b> (like a simple to-do list) maintained by 2-3 developers, a <b>Monolith in a Monorepo</b> is the best choice. It allows for consistent UI, easy debugging, and rapid early-stage development. Over-engineering this with micro-frontends would waste valuable time and resources.</p><p>For a massive <b>enterprise application</b> (like a complex admin dashboard with separate domains for users, budgets, and metrics) managed by multiple independent teams, adopting <b>Micro-frontends in Polyrepositories</b> is ideal. This ensures each team can develop, test, and deploy their services without stepping on each other&apos;s toes</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2327840/episodes/19161505-frontend-system-design.mp3" length="40472803" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/gbrobadvpuie9cgn6tsfhl76br5p?.jpg" />
    <itunes:author>OGUNTONADE </itunes:author>
    <guid isPermaLink="false">Buzzsprout-19161505</guid>
    <pubDate>Wed, 13 May 2026 02:00:00 -0400</pubDate>
    <itunes:duration>3369</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Windows ETW Diagnostics and Port Exhaustion Troubleshooting</itunes:title>
    <title>Windows ETW Diagnostics and Port Exhaustion Troubleshooting</title>
    <itunes:summary><![CDATA[Dynamic ports, also known as ephemeral ports, are temporary ports automatically assigned by the Windows operating system whenever an application or service needs to initiate an outbound network connection. The netsh int ipv4 show dynamicport tcp command allows you to view the currently configured starting port and the total number of available dynamic ports specifically for the TCP protocol over IPv4. Here are the key details regarding this topic: Default Ranges: To comply with Internet Assig...]]></itunes:summary>
    <description><![CDATA[<p>Dynamic ports, also known as ephemeral ports, are temporary ports automatically assigned by the Windows operating system whenever an application or service needs to initiate an outbound network connection.</p><p>The <b>netsh int ipv4 show dynamicport tcp</b> command allows you to view the currently configured starting port and the total number of available dynamic ports specifically for the TCP protocol over IPv4.</p><p>Here are the key details regarding this topic:</p><p><b>Default Ranges:</b> To comply with Internet Assigned Numbers Authority (IANA) recommendations, modern versions of Windows default to a dynamic port range that <b>starts at 49152 and ends at 65535</b>. This is a significant increase from older versions of Windows (like Windows Server 2003), which defaulted to a much smaller range of 1025 through 5000.</p><p><b>Separation by Transport and Protocol:</b> The system maintains separate dynamic port range configurations for TCP and UDP, as well as for IPv4 and IPv6. You can view the others by changing the netsh command accordingly (e.g., netsh int ipv6 show dynamicport udp).</p><p><b>Modifying the Range:</b> Administrators can adjust this range using a corresponding set command, such as netsh int ipv4 set dynamicport tcp start=10000 num=1000. When customizing these settings, <b>the minimum starting port must be at least 1025, the range must include at least 255 ports, and the maximum ending port cannot exceed 65535</b>.</p><p><b>Relevance to Troubleshooting:</b> Knowing your dynamic port range is essential when diagnosing <b>port exhaustion</b>. If an application rapidly creates too many outbound connections, it can consume all the available ports in this dynamic range. Once the pool is exhausted, any new outbound connection attempts from your machine will completely fail until old ports are released back into the available pool</p>]]></description>
    <content:encoded><![CDATA[<p>Dynamic ports, also known as ephemeral ports, are temporary ports automatically assigned by the Windows operating system whenever an application or service needs to initiate an outbound network connection.</p><p>The <b>netsh int ipv4 show dynamicport tcp</b> command allows you to view the currently configured starting port and the total number of available dynamic ports specifically for the TCP protocol over IPv4.</p><p>Here are the key details regarding this topic:</p><p><b>Default Ranges:</b> To comply with Internet Assigned Numbers Authority (IANA) recommendations, modern versions of Windows default to a dynamic port range that <b>starts at 49152 and ends at 65535</b>. This is a significant increase from older versions of Windows (like Windows Server 2003), which defaulted to a much smaller range of 1025 through 5000.</p><p><b>Separation by Transport and Protocol:</b> The system maintains separate dynamic port range configurations for TCP and UDP, as well as for IPv4 and IPv6. You can view the others by changing the netsh command accordingly (e.g., netsh int ipv6 show dynamicport udp).</p><p><b>Modifying the Range:</b> Administrators can adjust this range using a corresponding set command, such as netsh int ipv4 set dynamicport tcp start=10000 num=1000. When customizing these settings, <b>the minimum starting port must be at least 1025, the range must include at least 255 ports, and the maximum ending port cannot exceed 65535</b>.</p><p><b>Relevance to Troubleshooting:</b> Knowing your dynamic port range is essential when diagnosing <b>port exhaustion</b>. If an application rapidly creates too many outbound connections, it can consume all the available ports in this dynamic range. Once the pool is exhausted, any new outbound connection attempts from your machine will completely fail until old ports are released back into the available pool</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/2327840/episodes/19161345-windows-etw-diagnostics-and-port-exhaustion-troubleshooting.mp3" length="3934571" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/wdnqr0nbcnsz263ad839at5fpuk5?.jpg" />
    <itunes:author>OGUNTONADE </itunes:author>
    <guid isPermaLink="false">Buzzsprout-19161345</guid>
    <pubDate>Mon, 11 May 2026 21:00:00 -0400</pubDate>
    <itunes:duration>324</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>true</itunes:explicit>
  </item>
</channel>
</rss>
