<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Nerd Nook]]></title><description><![CDATA[Master Python Faster Than You Thought Possible—Actionable Tutorials, Step-by-Step Guides & Expert Insights Delivered Weekly. No Fluff. Just Results.]]></description><link>https://www.thenerdnook.io</link><image><url>https://substackcdn.com/image/fetch/$s_!zL-o!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe7c1bd85-29f2-4cb8-a122-b8303574c3ee_750x750.png</url><title>The Nerd Nook</title><link>https://www.thenerdnook.io</link></image><generator>Substack</generator><lastBuildDate>Fri, 24 Apr 2026 11:52:55 GMT</lastBuildDate><atom:link href="https://www.thenerdnook.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[The Nerd Nook]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[zerotoknowing@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[zerotoknowing@gmail.com]]></itunes:email><itunes:name><![CDATA[Josh Wenner]]></itunes:name></itunes:owner><itunes:author><![CDATA[Josh Wenner]]></itunes:author><googleplay:owner><![CDATA[zerotoknowing@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[zerotoknowing@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Josh Wenner]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Using Uvicorn: Granian Is the Fastest Python ASGI Server Right Now]]></title><description><![CDATA[Boost Python API performance instantly with Granian. Learn how to run FastAPI and Flask faster with this high-performance ASGI server and simple setup guide.]]></description><link>https://www.thenerdnook.io/p/stop-using-uvicorn</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-using-uvicorn</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 08 Apr 2026 14:03:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Abzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Speed really matters when you&#8217;re building Python backends, and that&#8217;s where Granian starts to stand out.</p><p>Granian is a fast ASGI server written in Rust that&#8217;s built to run Python web apps with less overhead and better performance. </p><p>If you&#8217;ve used Uvicorn or Gunicorn before, you can think of Granian as a step up. It feels familiar, but once you run it, you can tell it&#8217;s doing things more efficiently.</p><p>The easiest way to think about it is as a performance upgrade you can drop right into your stack. You don&#8217;t have to change your app. </p><p>You just swap the server, and your app can handle requests and concurrency in a much smoother way. It makes better use of your hardware without touching your Python code.</p><p>Welcome to <code>Granian</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Abzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Abzx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:362756,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/193231861?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Abzx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Granian fits really well with how modern Python apps are built. Whether you&#8217;re using FastAPI, working with async code, or building APIs that need to scale, it gives you a more efficient engine underneath everything. </p><p>It handles connections cleanly, manages workers well, and helps avoid slowdowns that usually show up as your app grows.</p><p>You don&#8217;t need to rewrite anything. You don&#8217;t need to learn a new system. If you already understand ASGI, you&#8217;re already in a good spot.</p><p><strong>In this article</strong>, I&#8217;ll walk you through a few useful things you can do with Granian that can improve how your backend runs. We&#8217;ll start a server, adjust workers for better performance, and look at how it handles async workloads.</p><p>What makes Granian stand out is that it stays focused on one thing. Running your Python app as fast and efficiently as possible. No extra layers. No complicated setup. Just solid performance with a clean developer experience.</p><p>Let&#8217;s start by installing Granian:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;69d344c4-0fd0-46c9-9bf9-5f6ba688125f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">pip3 install granian</code></pre></div><p>From there, you can spin up your server and let Granian do the work.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Granian Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-using-uvicorn">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python AI Repos You Should Know Before Building Anything in 2026]]></title><description><![CDATA[Discover 7 Python AI tools built for real systems, from agent frameworks to efficient models. Learn what&#8217;s shaping production AI and how to build smarter today]]></description><link>https://www.thenerdnook.io/p/python-weekly-6</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-6</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 07 Apr 2026 14:01:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SB2_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week feels like one more step in a bigger change we&#8217;ve been watching for a while now.</p><p>Python AI tools are starting to feel a lot more serious.</p><p>Not just better. Not just quicker. More organized.</p><p>We&#8217;re seeing more frameworks built with clear agent roles, better state handling, safer execution, typed outputs, and infrastructure that feels like it was built for real use, not just quick demos.</p><p>At the same time, there&#8217;s still a big push toward efficiency. More tools are helping people do more with less, whether that means cheaper hardware, smaller models, or avoiding the huge cost of retraining.</p><p>There&#8217;s a clear change happening right now.</p><p>Less, &#8220;look what this model can do.&#8221;<br>More, &#8220;here&#8217;s how you can actually build with it.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SB2_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SB2_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SB2_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f731f617-287d-4923-81fb-1772a2062b41_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:407021,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/192474061?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SB2_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!SB2_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff731f617-287d-4923-81fb-1772a2062b41_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Instead of a bunch of random one-off repos, we&#8217;re starting to see more complete systems come together. </p><p>You&#8217;ve got agent frameworks with graph-style workflows, open source tools that can run code safely in sandboxed environments, and libraries that bring type safety and validation into AI pipelines.</p><p>There are even research projects finding ways to get more performance out of existing models without having to fully retrain them.</p><p>If you&#8217;re building AI systems in Python right now, these repos aren&#8217;t just interesting to look at. They&#8217;re actually useful. </p><p>They give you a pretty clear idea of where things are going and what kinds of tools are starting to matter when you&#8217;re building real products.</p><p><strong>Thank you guys </strong>for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work by joining as a premium reader today.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>My Python Masterclass now includes <strong>1:1 Live Coaching</strong> - <strong><a href="https://www.zerotoknowing.com/interactive-python">Join Here</a></strong>.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h2>My Top 7 Repo Finds This Week</h2><h3><strong>1. open-swe</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong></p><p><strong>What it does:</strong> open-swe is an open-source asynchronous software engineering agent built on LangGraph by the LangChain team. It picks up GitHub issues labeled for automation, executes coding tasks in isolated cloud sandboxes, and pushes results back&#8212;all without human-in-the-loop intervention. </p><p>It supports multiple sandbox providers including Modal, Daytona, and Runloop.</p><p><strong>Why it matters:</strong> For Python developers building or using AI coding automation, this is a production-ready, MIT-licensed reference architecture for end-to-end autonomous engineering workflows. </p><p>The sandbox isolation model solves a real safety and reproducibility problem that plagues DIY agent setups, and LangGraph&#8217;s stateful graph backbone makes it far easier to extend or debug than bespoke agent scripts.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h3><strong>2. TradingAgents</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/TauricResearch/TradingAgents">https://github.com/TauricResearch/TradingAgents</a></p><p><strong>What it does:</strong> TradingAgents is a multi-agent LLM framework that simulates a full trading desk, with specialized agents for fundamental analysis, sentiment, news, technical analysis, research, trade execution, and risk management. </p><p>The v0.2.1 release adds support for GPT-5.4 and Gemini 3.1. Each agent role communicates structured signals to downstream agents, mimicking how real quant teams operate.</p><p><strong>Why it matters:</strong> This framework is one of the most concrete demonstrations of multi-agent role decomposition applied to a high-stakes real-world domain. </p><p>For Python ML developers interested in finance or agent architecture, it provides a well-structured template for building LLM pipelines where different agents own different reasoning subtasks&#8212;a pattern directly transferable to other domains like healthcare or legal analysis.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h3><strong>3. KittenTTS</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/KittenML/KittenTTS">https://github.com/KittenML/KittenTTS</a></p><p><strong>What it does:</strong> KittenTTS is an open-source text-to-speech library featuring ultra-lightweight models ranging from 15M to 80M parameters, optimized for CPU and edge deployment with no GPU requirement. </p><p>It ships with built-in voices, adjustable speech speed, and text preprocessing pipelines, and includes three model tiers: kitten-tts-mini, micro, and nano.</p><p><strong>Why it matters:</strong> Most open TTS solutions demand GPU resources that are unavailable in edge, mobile, or cost-sensitive production environments&#8212;KittenTTS directly addresses that gap. </p><p>For Python developers building voice interfaces, accessibility tools, or IoT applications, having a pip-installable TTS library that runs fast on CPU dramatically lowers the deployment barrier and cost.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h3><strong>4. llm-circuit-finder</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/alainnothere/llm-circuit-finder">https://github.com/alainnothere/llm-circuit-finder</a></p><p><strong>What it does:</strong> llm-circuit-finder is a toolkit for improving LLM reasoning by surgically duplicating specific transformer layers&#8212;a technique inspired by the RYS (Repeat Yourself) method&#8212;with no fine-tuning or retraining required. </p><p>Experiments show that duplicating layers 12&#8211;14 in Devstral-24B and layers 7&#8211;9 in Qwen2.5-32B produces meaningful gains on logical deduction benchmarks. The tool helps identify which layers are worth duplicating for a given model.</p><p><strong>Why it matters:</strong> This is a rare example of a no-cost, no-training capability boost that any practitioner can apply to an existing model checkpoint in minutes. </p><p>For Python developers running open-weight LLMs in production, it opens a new axis of optimization&#8212;architectural surgery&#8212;that sits between prompt engineering and the much more expensive option of full fine-tuning.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h3><strong>5. pydantic-ai</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/pydantic/pydantic-ai">https://github.com/pydantic/pydantic-ai</a></p><p><strong>What it does:</strong> pydantic-ai is an agent framework from the Pydantic team that brings strict type safety and Pydantic validation to GenAI application development. </p><p>It is model-agnostic, supports graph-based workflows for complex multi-step reasoning, and includes built-in evaluation and testing utilities designed for production use. The project has seen 136 PRs merged in just 15 days, reflecting very active development.</p><p><strong>Why it matters:</strong> Pydantic is already a cornerstone of the Python ecosystem, so a first-party agent framework built on those same validation idioms dramatically reduces the friction of building reliable, testable AI pipelines. </p><p>For developers who have struggled with untyped, hard-to-debug agent outputs, pydantic-ai brings the kind of structured guarantees that professional Python codebases already rely on.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h3><strong>6. GraphZero</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/KrishSingaria/graphzero">https://github.com/KrishSingaria/graphzero</a></p><p><strong>What it does:</strong> GraphZero is a zero-copy graph engine for training Graph Neural Networks on datasets exceeding 50GB without running into out-of-memory errors. It compiles graphs to disk in CSR format with feature blobs and memory-maps them as zero-copy NumPy and PyTorch tensors via a C++ and nanobind backend. </p><p>This lets GNN training proceed on consumer hardware that would otherwise be completely unable to load the dataset.</p><p><strong>Why it matters:</strong> Large-scale GNN training has historically been gated behind expensive high-RAM server hardware, creating a significant barrier for researchers and practitioners working on graph-structured data like social networks, molecular biology, or knowledge graphs. </p><p>GraphZero&#8217;s memory-mapping approach is a practical engineering solution that could unlock this entire class of problems for developers who only have a gaming GPU or a MacBook.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h3><strong>7. MiroFish</strong></h3><p><strong>Repo - <a href="https://github.com/langchain-ai/open-swe">Here</a></strong><br><a href="https://github.com/666ghj/MiroFish">https://github.com/666ghj/MiroFish</a></p><p><strong>What it does:</strong> MiroFish is an AI prediction engine that uses large-scale multi-agent simulation to model complex scenarios&#8212;users upload seed materials, describe what they want to predict, and the system spins up thousands of autonomous agents in parallel digital worlds to generate detailed analytical reports. </p><p>It was built by a 20-year-old student in 10 days and raised $4.1M in crowdfunding within 24 hours.</p><p><strong>Why it matters:</strong> Whether or not the approach is scientifically rigorous, the viral traction of MiroFish signals genuine demand for simulation-based foresight tools that go beyond simple LLM Q&amp;A. </p><p>For Python AI developers, it is a compelling case study in how multi-agent architectures can be packaged into a compelling product narrative&#8212;and a reminder to watch the space of agent-driven simulation as it matures.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h2>Key Patterns Noted</h2><p><strong>Agents Are Getting Structured and Specialized:</strong> This week surfaced multiple frameworks for building autonomous coding and trading agents&#8212;open-swe, TradingAgents, and pydantic-ai all tackle the problem of giving LLMs durable, structured agency over complex multi-step tasks. </p><p>The common thread is moving beyond simple prompt-response loops toward stateful, role-specialized agent graphs with real-world tool access.<br><br><strong>No-Training Performance Gains Through Architectural Tricks:</strong> llm-circuit-finder and GraphZero both demonstrate a growing appetite for squeezing more capability out of existing hardware and model weights without expensive retraining. </p><p>Whether it&#8217;s duplicating transformer layers to boost reasoning or zero-copy memory mapping for GNN training, the community is finding clever systems-level tricks to push boundaries on consumer hardware.<br><br><strong>Edge and CPU-First AI Is Gaining Serious Traction:</strong> KittenTTS (15M&#8211;80M params, CPU-only) and GraphZero (consumer-hardware GNN training) reflect a clear trend toward making AI workloads viable outside the cloud. </p><p>Practitioners are increasingly building tools that run on edge devices or laptops, broadening who can deploy AI in production.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h2><strong>&#128073; My Python Learning Resources</strong></h2><p>Here are the best resources I have to offer to get you started with Python no matter your background! Check these out as they&#8217;re bound to maximize your growth in the field.</p><p><strong><a href="https://www.zerotoknowing.com/">Zero to Knowing</a></strong>: Over <strong>1,500+ students</strong> have already used this exact system to learn faster, stay motivated, and actually finish what they start.</p><p>P.S - Save 20% off your first month. Use code: save20now at checkout!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.zerotoknowing.com/join-now&quot;,&quot;text&quot;:&quot;Try it out now!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.zerotoknowing.com/join-now"><span>Try it out now!</span></a></p><p><strong><a href="https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw?sub_confirmation=1">Code with Josh</a></strong>: This is <strong>my YouTube channel</strong> where I post videos every week designed to help break things down and help you grow.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw&quot;,&quot;text&quot;:&quot;Subscribe on YouTube&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw"><span>Subscribe on YouTube</span></a></p><p><strong><a href="https://www.zerotoknowing.com/ebooks">My Books</a></strong>: Maybe you&#8217;re looking to get a bit more advanced in Python. <strong>I&#8217;ve written 3 books</strong> to help with that, from Data Analytics, to SQL all the way to Machine Learning.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.zerotoknowing.com/ebooks&quot;,&quot;text&quot;:&quot;View my eBooks&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.zerotoknowing.com/ebooks"><span>View my eBooks</span></a></p><h3><strong>My Favorite Books on Amazon:</strong></h3><ul><li><p>Python Crash Course - <strong><a href="https://amzn.to/3vGDXqH">Here</a></strong></p></li><li><p>Automate the Boring Stuff - <strong><a href="https://amzn.to/428yoO0">Here</a></strong></p></li><li><p>Data Structures and Algorithms in Python -<strong> <a href="https://amzn.to/3SkzYZL">Here</a></strong></p></li><li><p>Python Pocket Reference - <strong><a href="https://amzn.to/3SlK0tA">Here</a></strong></p></li></ul><p>Hope you all have an amazing week nerds ~ Josh (Chief Nerd Officer &#129299;)</p><p>&#128073; If you&#8217;ve been enjoying these lessons, consider subscribing to the premium version. You&#8217;ll get full access to all my past and future articles, all the code examples, extra Python projects, and more.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This is my full-time job so I hope you will support my work as we grow and build together!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[REST APIs vs Webhooks Explained: Why Modern Systems Need Event-Driven Architecture]]></title><description><![CDATA[Learn the real difference between REST APIs and webhooks, why polling fails at scale, and how event-driven integrations power real-time modern applications.]]></description><link>https://www.thenerdnook.io/p/rest-apis-vs-webhooks</link><guid isPermaLink="false">https://www.thenerdnook.io/p/rest-apis-vs-webhooks</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 03 Apr 2026 14:03:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OVLJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Modern software systems depend heavily on APIs to move information between different services.</p><p>Over the past decade, REST APIs have become the most common way developers build distributed systems. </p><p>They are simple to understand, stateless by design, and follow a clear request and response pattern. Because of that, they work well for a wide range of applications.</p><p>In a typical REST setup, the client has to ask the server for information. The client sends a request, and the server responds with data. When the client wants to know if something has changed, it has to ask again. </p><p>This pattern is called polling. An application keeps sending requests at regular intervals just to check if new data is available.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OVLJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OVLJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OVLJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114244,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/189865926?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OVLJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!OVLJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e2c922-3048-4ded-9fe8-8329026a68f9_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Polling works fine in many situations, but it starts to break down when systems need to react to events right away.</p><p>As systems grow and more services begin talking to each other, this limitation becomes more obvious. REST works best when the client knows exactly when it needs information. </p><p>It does not work as well when the server needs to notify the client that something has happened. That is where webhooks come in.</p><p><strong>In this article</strong>, I&#8217;ll look at why REST by itself is often not enough for modern integrations, how webhooks solve a completely different kind of problem, and when they should be used in real systems.</p><p>Along the way, I&#8217;ll walk through practical Python examples and real world scenarios that make the difference between these two approaches much easier to understand.</p><p>Learning this distinction is an important step toward understanding event driven architecture.</p><p>If a project feels heavy in Python, it is usually because it really is heavy.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p><h2><strong>The Concept of Event-Driven Integration</strong></h2>
      <p>
          <a href="https://www.thenerdnook.io/p/rest-apis-vs-webhooks">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Future of AI Agents Is Here: 7 Python Repos You Need to See]]></title><description><![CDATA[Explore the top Python AI tools this week&#8212;multi-agent frameworks, memory systems, and cost-efficient LLMs built for production-ready applications.]]></description><link>https://www.thenerdnook.io/p/python-weekly-5</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-5</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 31 Mar 2026 14:03:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!o5bG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week feels like a continuation of something we&#8217;ve been watching build for a while &#8212; but now it&#8217;s accelerating.</p><p>Agent systems aren&#8217;t just getting smarter. They&#8217;re getting structured. Memory is no longer an afterthought. Context is becoming an architecture problem. And efficiency is starting to matter just as much as capability.</p><p>There&#8217;s a clear shift happening:</p><p>Less experimentation. More systems you could actually deploy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o5bG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o5bG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o5bG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png" width="652" height="366.75" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:652,&quot;bytes&quot;:465173,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/191005186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o5bG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!o5bG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc2ce482-33fa-4260-aa36-0364c1ef688b_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Instead of isolated tools, we&#8217;re seeing full stacks emerge &#8212; orchestration layers, memory systems, context engines, and even new ways to train and run models cheaply.</p><p>If you&#8217;re building AI systems in Python right now, these aren&#8217;t just interesting repos. They&#8217;re signals.</p><p>Let&#8217;s get into the 7 most important ones this week.</p><p><strong>Thank you guys </strong>for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work by joining as a premium reader today.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>My Python Masterclass now includes 1:1 Live Coaching - <strong><a href="https://www.zerotoknowing.com/interactive-python">Join the Masterclass Here</a></strong>.</p><p>&#128073; <em>I genuinely hope you get value from these articles, if you do, please help me out, leave it a &#10084;&#65039;, and share it with others who would enjoy this. Thank you so much!</em></p><h2>This Week&#8217;s Trending Repo&#8217;s and Tools</h2><h3>1. deer-flow </h3><p><strong>Repo - <a href="https://github.com/bytedance/deer-flow">Here</a></strong></p><p><strong>What it does:</strong> DeerFlow is an open-source super-agent harness from ByteDance that coordinates sub-agents, long-term memory, sandboxed code execution, and extensible skills to handle tasks ranging from deep research to multi-step coding.</p><p>Version 2.0 is a full rewrite introducing standardized skill structures and context engineering. It integrates with Slack and Telegram for conversational access.</p><p><em><strong>Why it matters:</strong> </em>For Python AI/ML developers building production agent systems, DeerFlow provides a battle-tested, open blueprint from ByteDance that goes far beyond simple LangChain pipelines. </p><p>Its modular skill and memory architecture is directly reusable, and its sandbox execution model is critical for safe agentic code running. With 5,200+ stars gained in one week, it&#8217;s quickly becoming a reference implementation for serious multi-agent work.</p><h3><strong>2. OpenViking</strong> </h3><p><strong>Repo - <a href="https://github.com/volcengine/OpenViking">Here</a></strong></p><p><strong>What it does:</strong> OpenViking is an open-source context database from Volcengine (ByteDance&#8217;s cloud arm) that solves fragmented agent memory by treating all context&#8212;memories, resources, and skills&#8212;as a unified filesystem. </p><p>It supports tiered context loading to minimize token consumption, recursive directory retrieval, and automatic session management for self-iterating agents. Visualized retrieval trajectories make it uniquely observable.</p><p><em><strong>Why it matters:</strong> </em>Context management is one of the hardest unsolved problems in production agent development, and OpenViking offers a principled, filesystem-inspired architecture that&#8217;s far more structured than ad-hoc vector store approaches. </p><p>Python developers building multi-session agents will find its tiered loading and auto-session management directly applicable. At nearly 10k stars with 4,500+ gained this week, it&#8217;s attracting serious attention.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h3><strong>3. nanochat</strong></h3><p><strong>Repo - <a href="https://github.com/karpathy/nanochat">Here</a></strong></p><p><strong>What it does:</strong> nanochat by Andrej Karpathy is a minimal, single-file harness covering the full LLM lifecycle&#8212;tokenization, pretraining, finetuning, evaluation, inference, and a chat UI&#8212;optimized to run on a single GPU node. </p><p>A GPT-2-equivalent model can be trained for roughly $48. Users specify only model depth; all other hyperparameters are auto-tuned.</p><p><em><strong>Why it matters:</strong> </em>Karpathy&#8217;s projects consistently become canonical learning resources and practical baselines for the Python ML community. </p><p>nanochat&#8217;s radical simplicity and cost efficiency make it the definitive starting point for anyone wanting to understand or experiment with LLM training without a cloud budget. </p><p>Its hackable codebase is also ideal for researchers who want a clean substrate to test new ideas.</p><div><hr></div><h2><strong>Learn Python With Confidence &#8212; With Personal 1:1 Coaching</strong></h2><p>Stop jumping between tutorials. This is a mentorship-based Python program built to help you actually understand what you&#8217;re doing and make steady progress.</p><p>I&#8217;m teaching you the exact system I&#8217;ve refined with 1,500+ students over the last 4+ years &#8212; <strong>now paired with exclusive 1:1 coaching</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9wpm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9wpm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 424w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 848w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 1272w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9wpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png" width="1280" height="627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/def8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:627,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308785,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/187282220?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f02caf3-ffb2-4782-b156-b2dcd19af00c_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9wpm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 424w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 848w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 1272w, https://substackcdn.com/image/fetch/$s_!9wpm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdef8c46d-9893-4c18-98ec-bd5a3166a4b0_1280x627.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A complete learning path with lifetime access, real-world projects, and six private 1:1 coaching sessions focused on your goals and your code.</p><p>One Payment. Lifetime Access. No Rigid Schedule.</p><p><strong>&#128073; Ready to get started?</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.zerotoknowing.com/interactive-python&quot;,&quot;text&quot;:&quot;Get Started Today&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.zerotoknowing.com/interactive-python"><span>Get Started Today</span></a></p><div><hr></div><h3><strong>4. BitNet</strong></h3><p><strong>Repo - <a href="https://github.com/microsoft/BitNet">Here</a></strong></p><p><strong>What it does:</strong> BitNet is Microsoft&#8217;s official inference framework for 1-bit large language models, featuring optimized CPU and GPU kernels that enable lossless inference at dramatically reduced compute cost. </p><p>It achieves up to 6.17x speedup and 82.2% energy reduction on x86 CPUs. Recent updates add concurrent kernel implementations and embedding quantization support.</p><p><em><strong>Why it matters:</strong> </em>Running capable LLMs on commodity CPUs without GPUs is a game-changer for edge deployment, cost-sensitive applications, and on-device AI&#8212;all areas where Python developers are increasingly being asked to deliver. </p><p>BitNet&#8217;s sustained momentum (4,700+ stars this week, 34k total) signals that 1-bit inference is crossing from research curiosity to production-viable technology that Python ML engineers need in their toolkit.</p><h3><strong>5. notebooklm-py</strong> </h3><p><strong>Repo - <a href="https://github.com/teng-lin/notebooklm-py">Here</a></strong></p><p><strong>What it does:</strong> notebooklm-py is an unofficial Python library and CLI that exposes the full Google NotebookLM API programmatically, including features unavailable in the web interface such as batch downloads and advanced content generation. </p><p>It integrates directly as an agentic skill for Claude Code, Codex, and other AI agents. Users can create notebooks, add sources, and trigger generation of audio, video, or quizzes from Python scripts.</p><p><strong>Why it matters:</strong> NotebookLM has quietly become a powerful research and content generation backend, but its walled web UI limits automation. </p><p>This library unlocks it for Python developers building research pipelines, RAG preprocessing, or agentic workflows that need document understanding at scale.</p><p>Gaining 2,292 stars in one week for a relatively niche tool signals strong unmet demand.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h3><strong>6. hindsight</strong></h3><p><strong>Repo - <a href="https://github.com/vectorize-io/hindsight">Here</a></strong></p><p><strong>What it does:</strong> Hindsight is an agent memory system from Vectorize that goes beyond simple retrieval&#8212;it enables agents to learn and reflect on past interactions rather than just recall them verbatim. </p><p>It claims state-of-the-art performance on LongMemEval benchmarks and integrates via a simple Python API compatible with existing LLM clients. It can be deployed via Docker for both standalone and server configurations.</p><p><strong>Why it matters:</strong> Most production agent memory implementations are brittle vector store lookups that don&#8217;t improve over time; Hindsight&#8217;s &#8216;learning&#8217; architecture is a meaningful step toward agents that actually get better with use. </p><p>Python developers building personalized AI assistants or long-running agent systems will find the LLM Wrapper integration path extremely low-friction. Its benchmark-backed claims give it credibility in a space full of vague memory solutions.</p><h3><strong>7. Understudy</strong> </h3><p><strong>Repo - <a href="https://github.com/understudy-ai/understudy">Here</a></strong></p><p><strong>What it does:</strong> Understudy is a desktop automation agent that records a single human demonstration of a task and then learns to reproduce it autonomously going forward.</p><p>It requires no scripting or explicit workflow definition&#8212;the agent infers the automation from observation. This brings one-shot imitation learning to everyday desktop workflows.</p><p><strong>Why it matters:</strong> One-shot task learning for desktop automation is a practical leap beyond brittle RPA scripts and closes the gap between LLM reasoning and real-world computer use. </p><p>For Python AI/ML developers building or evaluating computer-use agents, Understudy is a concrete, working reference point. Its 114-point HN score on a Show HN reflects strong practitioner interest in agent-driven desktop automation.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><h2>Key Patterns Noted</h2><p><strong>Agent Memory &amp; Context Management Goes Mainstream:</strong> Multiple high-traction projects this week&#8212;MiroFish, OpenViking, Hindsight, and deer-flow&#8212;center on giving agents structured, self-evolving memory and context management. The shift is from stateless LLM calls to agents that retain, retrieve, and reason over past interactions at scale.</p><p><strong>Multi-Agent Orchestration Frameworks Proliferating:</strong> deer-flow (ByteDance), MiroFish, and BettaFish all demonstrate multi-agent orchestration pushing beyond single-agent pipelines into hierarchical, sandboxed, or swarm-based coordination. Developers are building full &#8216;agent harnesses&#8217; rather than simple prompt chains.</p><p><strong>Extreme Efficiency: 1-bit LLMs and Sub-$100 Training:</strong> Microsoft&#8217;s BitNet continues gaining momentum, and projects like nanochat push toward maximally efficient, minimal-cost LLM training and inference. The trend is democratizing serious LLM work&#8212;training GPT-2-class models for ~$48 and running 1-bit LLMs on CPUs&#8212;making AI accessible without enterprise hardware.</p><h2><strong>&#128073; My Python Learning Resources</strong></h2><p>Here are the best resources I have to offer to get you started with Python no matter your background! Check these out as they&#8217;re bound to maximize your growth in the field.</p><p><strong><a href="https://www.zerotoknowing.com/">Zero to Knowing</a></strong>: Over <strong>1,500+ students</strong> have already used this exact system to learn faster, stay motivated, and actually finish what they start.</p><p>P.S - Save 20% off your first month. Use code: save20now at checkout!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.zerotoknowing.com/join-now&quot;,&quot;text&quot;:&quot;Try it out now!&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.zerotoknowing.com/join-now"><span>Try it out now!</span></a></p><p><strong><a href="https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw?sub_confirmation=1">Code with Josh</a></strong>: This is <strong>my YouTube channel</strong> where I post videos every week designed to help break things down and help you grow.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw&quot;,&quot;text&quot;:&quot;Subscribe on YouTube&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.youtube.com/channel/UCwcXQMYphMbpuw8ok9HQguw"><span>Subscribe on YouTube</span></a></p><p><strong><a href="https://www.zerotoknowing.com/ebooks">My Books</a></strong>: Maybe you&#8217;re looking to get a bit more advanced in Python. <strong>I&#8217;ve written 3 books</strong> to help with that, from Data Analytics, to SQL all the way to Machine Learning.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.zerotoknowing.com/ebooks&quot;,&quot;text&quot;:&quot;View my eBooks&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.zerotoknowing.com/ebooks"><span>View my eBooks</span></a></p><h3><strong>My Favorite Books on Amazon:</strong></h3><ul><li><p>Python Crash Course - <strong><a href="https://amzn.to/3vGDXqH">Here</a></strong></p></li><li><p>Automate the Boring Stuff - <strong><a href="https://amzn.to/428yoO0">Here</a></strong></p></li><li><p>Data Structures and Algorithms in Python -<strong> <a href="https://amzn.to/3SkzYZL">Here</a></strong></p></li><li><p>Python Pocket Reference - <strong><a href="https://amzn.to/3SlK0tA">Here</a></strong></p></li></ul><p>Hope you all have an amazing week nerds ~ Josh (Chief Nerd Officer &#129299;)</p><p>&#128073; If you&#8217;ve been enjoying these lessons, consider subscribing to the premium version. You&#8217;ll get full access to all my past and future articles, all the code examples, extra Python projects, and more.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This is my full-time job so I hope you will support my work as we grow and build together!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What Makes an API Stateless? The Complete Guide to REST, Scalability, and Modern Backend Architecture]]></title><description><![CDATA[What makes an API stateless, how REST handles state, and why stateless architecture improves scalability, performance, security, and cloud deployment.]]></description><link>https://www.thenerdnook.io/p/what-makes-an-api-stateless</link><guid isPermaLink="false">https://www.thenerdnook.io/p/what-makes-an-api-stateless</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 06 Mar 2026 14:03:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Am6w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you have been working with APIs for a while, you have probably heard someone say, &#8220;Our API is stateless.&#8221; It gets thrown around like it is a badge of honor. It sounds clean. It sounds modern. </p><p>But if you stop and ask what that really means, most people struggle to explain it clearly.</p><p>To understand what makes an API stateless, we first need to understand what state actually is. </p><p>Basically state is memory. It is information the server keeps about a client between requests. Once you see it that way, the idea of statelessness becomes much clearer. A stateless API does not remember you. Every request stands on its own.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Am6w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Am6w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Am6w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png" width="660" height="371.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:660,&quot;bytes&quot;:246694,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/189528933?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Am6w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Am6w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd19813f3-96ce-487b-8526-0abd854ddc3e_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>That one design decision changes a lot. It affects how you structure your backend. It changes how you handle authentication. It shapes how you scale your system when traffic grows. It even impacts how you think about security and reliability.</p><p>Modern systems are expected to handle thousands or even millions of requests without slowing down or falling apart. To do that, they need to be simple to scale and easy to recover when something fails. </p><p>Stateless APIs play a huge role in making that possible. When we design APIs without relying on server-side memory, we make it easier to add more servers, recover from crashes, and keep performance steady under load.</p><p>This is not about syntax or which framework you prefer. It is not about trendy tools. This is about architecture. The deeper structure that determines whether your system will hold up when it grows.</p><p>So let&#8217;s walk through it step by step and make it clear.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p><h2><strong>What Statelessness in APIs Actually Means</strong></h2>
      <p>
          <a href="https://www.thenerdnook.io/p/what-makes-an-api-stateless">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Use Marshmallow in Python: Step-by-Step Guide to Clean, Validated API Data]]></title><description><![CDATA[Learn how to use Marshmallow in Python for data validation, serialization, nested schemas, and clean API design with practical real-world code examples.]]></description><link>https://www.thenerdnook.io/p/how-to-use-marshmallow</link><guid isPermaLink="false">https://www.thenerdnook.io/p/how-to-use-marshmallow</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 04 Mar 2026 14:03:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DxcT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Data validation should not feel like you are patching holes in your project right before launch. It should be built in from the start. That is where Marshmallow comes in. </p><p>It is a Python library focused on one clear job. It takes messy input data and turns it into structured, reliable data you can actually trust. And it does this without forcing you to write a bunch of messy if statements all over your code.</p><p>Data flows in from APIs, forms, databases, or direct user input. Marshmallow checks that data, cleans it up, makes sure it follows the rules you set, and shapes it exactly how you want it. </p><p>It also handles turning Python objects into JSON and JSON back into Python objects in a way that feels clean and organized instead of chaotic.</p><p>Welcome to <code>Marshmellow</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DxcT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DxcT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DxcT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png" width="626" height="352.125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:626,&quot;bytes&quot;:211216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/189522241?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DxcT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!DxcT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90e4c077-59bb-4f69-9b32-955d1741db10_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>It gives you a simple way to define schemas that describe what your data should look like. You can define fields, mark them as required, validate formats like emails or URLs, clean up inputs, and even customize the error messages your app returns.</p><p>Whether you are building a Flask API, working with FastAPI, loading configuration files, or cleaning data before storing it, Marshmallow helps keep everything consistent and predictable.</p><p>The first time you see schemas and nested fields, you might wonder if it is overkill. I had that thought too. But once your project grows past a few routes or a few data models, you start to see why it matters. It becomes the layer that keeps your app stable as it scales.</p><p>And it is not limited to simple data. It handles nested objects, lists of complex data, custom validation rules, pre-processing steps, and post-processing transformations. It works just as well in a small script as it does in a production API.</p><p>Today, I am going to walk you through three practical features in Marshmallow that can seriously improve how you handle data. You will see how to define schemas, validate input cleanly, and serialize data properly without repeating yourself.</p><p>If you do not have it installed yet, open your terminal and run:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2fdbedbe-a1f8-4986-b0e2-f21c20ac022c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">pip3 install marshmallow</code></pre></div><p>That is it. Let&#8217;s tighten up your data layer and make your application feel solid from the inside.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Marshmellow Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/how-to-use-marshmallow">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python AI Is Evolving Fast: Agent Memory, Time-Series Foundation Models & Context Windows]]></title><description><![CDATA[Explore the top new Python AI tools for context engineering, multi-agent systems, time-series foundation models, memory, and LLM evaluation in 2026.]]></description><link>https://www.thenerdnook.io/p/python-weekly-4</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-4</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 03 Mar 2026 14:03:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OPwh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fb9a876-26cd-4f2d-b86d-0dd396507769_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week&#8217;s picks are really focused on context engineering, foundation models that go beyond just text, and agent systems that feel way more like real products than research experiments.</p><p>You can tell&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-4">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[API Security Guide 2026: 5 Real API Vulnerabilities Hackers Exploit and How to Prevent Them]]></title><description><![CDATA[Learn how hackers exploit API vulnerabilities like IDOR, JWT bypass, injection, mass assignment, and missing rate limits, plus proven API security best practices to stop them.]]></description><link>https://www.thenerdnook.io/p/api-security-guide-2026</link><guid isPermaLink="false">https://www.thenerdnook.io/p/api-security-guide-2026</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 27 Feb 2026 14:02:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!E9cy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Modern apps run on APIs. Every mobile app, SaaS tool, fintech dashboard, AI assistant, and online checkout depends on them. </p><p>APIs move data between services, check who you are, process payments, and expose the core logic of a product to the outside world. </p><p>Since APIs are built for machines to talk to each other, they have also become one of the biggest targets in modern software.</p><p>When APIs are not locked down properly, attackers do not need some advanced zero day exploit. They go after the basics. They look for simple, predictable weaknesses. </p><p>So today I wanted to take some time to actually look at and talk about how certain people can exploit these API&#8217;s and some ways you can actually make them better.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E9cy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E9cy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E9cy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png" width="652" height="366.75" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:652,&quot;bytes&quot;:64481,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/189351697?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!E9cy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!E9cy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a11982d-c84e-4795-8f81-333735c1b8f6_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>They automate requests. They test different IDs. They watch how the system responds. Then they push further.</p><p>In this article, we are going to break down five real ways hackers take advantage of poorly secured APIs. We will also walk through practical steps your engineering team can use right away to tighten things up.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>Join the Memory Genesis Competition 2026<strong> </strong>to <strong>win up to $80,000+</strong> in prize pool</p><p>This isn&#8217;t a hackathon. This is production-level engineering with real impact.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FtpF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FtpF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FtpF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg" width="382" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:382,&quot;bytes&quot;:35962,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/189351697?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FtpF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FtpF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6ba6c6e-6346-4e98-86e2-ae1919913f43_2048x2048.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p><h2>5 Tips to Strengthen your API&#8217;s</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/api-security-guide-2026">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Structlog in Python: How Structured Logging Actually Fixes Debugging]]></title><description><![CDATA[Learn how to replace print statements with structured logging in Python using structlog to debug faster, track performance, and keep logs clean as apps grow.]]></description><link>https://www.thenerdnook.io/p/structlog-in-python</link><guid isPermaLink="false">https://www.thenerdnook.io/p/structlog-in-python</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 25 Feb 2026 14:02:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XTkG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Logging is one of those things everyone knows they should do, but almost no one enjoys doing properly. Most Python projects start with a few print statements. Then maybe you switch to the built in logging module. </p><p>Before long, the logs turn into a mess. They are inconsistent, hard to read, and not very helpful when something actually breaks.</p><p>Structlog is a Python library built around a simple idea. Logs should be data, not just text. Instead of writing long log messages and hoping they make sense later, structlog has you log clear key value information that both people and machines can understand. </p><p>Welcome to <code>structlog</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XTkG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XTkG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XTkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:249576,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/186464032?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XTkG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XTkG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5a946be-f7dc-4b0f-b2d9-914b3927994d_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>The result is cleaner logs, easier debugging, and systems that are much easier to work with as they grow.</p><p>At first, structlog can feel a bit unfamiliar. It does not look or behave exactly like the logging setup most people are used to. I will be honest, it took me some time before it really clicked. </p><p>But once it does, it is hard to go back. Your logs become consistent, searchable, and actually useful instead of something you scroll past and ignore.</p><p><strong>In this article</strong>, we are keeping things simple. I will introduce structlog, explain how structured logging works in plain terms, and walk through three useful patterns that make structlog a solid upgrade over traditional logging. </p><p>If your logs have ever let you down right when you needed them most, this is for you.</p><p>Let&#8217;s get you set up with a quick terminal run:</p><pre><code><code>pip3 install firefly</code></code></pre><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Structlog Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/structlog-in-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[7 New Python AI Tools You Need in 2026 (Agents, RAG, Memory & MCP Frameworks)]]></title><description><![CDATA[This Week's trending Python AI agent frameworks, RAG evaluation tools, memory systems, and synthetic data libraries shaping production AI in 2026.]]></description><link>https://www.thenerdnook.io/p/python-weekly-3</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-3</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 24 Feb 2026 14:00:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NLrq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b815e3-c3db-40a8-9765-17d5162edef4_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week keeps building on what we&#8217;ve been seeing lately &#8212; more serious agent frameworks, better memory systems, and RAG tools that are actually ready for production.</p><p>There are fewer &#8220;cool demo&#8221; proj&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-3">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Why Your Data Code Feels Slow (And What Actually Speeds It Up)]]></title><description><![CDATA[When people say their data code feels slow, they usually mean something a little different.]]></description><link>https://www.thenerdnook.io/p/why-your-data-code-feels-slow</link><guid isPermaLink="false">https://www.thenerdnook.io/p/why-your-data-code-feels-slow</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 20 Feb 2026 14:02:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_qAT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When people say their data code feels slow, they usually mean something a little different. It feels heavy.</p><p>Every small change takes too long to try out. Running the script feels like a whole event instead of a quick test.</p><p>You pause before hitting run because you already know you are going to be waiting. The computer seems to be struggling with something that looks simple on the surface.</p><p>Most of the time, people blame Python. Or pandas. Or the size of the dataset.</p><p>That reaction makes sense. But it is usually not the real issue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_qAT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_qAT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_qAT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:692685,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/187819539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_qAT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!_qAT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F750608fe-55f6-4c07-8463-211b87b4ac10_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Early on, performance problems in data work are not really about raw CPU speed. They are about friction. They come from making the computer do work it does not need to do.</p><p>They come from moving too much data around. They come from how the code is structured.</p><p>The biggest improvements usually do not come from fancy tricks or new tools. They come from thinking about the problem differently.</p><p>Most slow data code is not wrong. It is just shaped the wrong way.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p>
      <p>
          <a href="https://www.thenerdnook.io/p/why-your-data-code-feels-slow">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[ujson Explained: How to Make Python JSON Parsing Much Faster]]></title><description><![CDATA[Learn how ujson speeds up JSON parsing in Python for APIs, logging, and data pipelines, with simple examples you can drop into real projects today.]]></description><link>https://www.thenerdnook.io/p/stop-using-python-json</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-using-python-json</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 18 Feb 2026 14:02:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UBEE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>JSON is one of those things we use all the time without really thinking about it. APIs return it. Config files are written in it. Logs, payloads, scraped data, cached responses, all JSON. Most of the time, we just use Python&#8217;s built in json module and keep moving.</p><p>And honestly, that&#8217;s fine. Until it&#8217;s not. That&#8217;s where ujson comes in.</p><p><code>Ujson</code>, short for UltraJSON, is a fast JSON library written in C and built for performance. It does the same job as Python&#8217;s standard json module, but it runs noticeably faster, especially when you are working with large chunks of data or parsing JSON over and over again in a loop.</p><p>Welcome to <code>ujson</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UBEE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UBEE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UBEE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147550,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/186464091?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UBEE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!UBEE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F209d96bf-8440-4bba-b292-eda66adb580a_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>The easiest way to think about <code>ujson</code> is as a drop in upgrade. The concepts are the same. The usage feels the same. You just spend less time waiting on JSON to finish its work.</p><p>What I like most about ujson is how little it asks from you. There is no new way of thinking about JSON. No complicated setup. You still load, dump, serialize, and deserialize data the same way you always have. </p><p>The real difference is that <code>ujson</code> is tuned for speed, which makes it a great fit for data pipelines, web services, scraping jobs, and any script where performance actually matters.</p><p><strong>In this article</strong>, we are going to look at ujson and then walk through three practical functions that show where it&#8217;s good and how you can start using it right away. </p><p>If you work with APIs, scrape data, or move a lot of structured data around, this is one tool you will be glad you know about.</p><p>Let&#8217;s get you set up with a quick terminal run:</p><pre><code><code>pip3 install ujson</code></code></pre><p>If you spend most of your day in the terminal like I do, this one is going to be fun.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Ujson Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-using-python-json">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Error Monitoring Made Simple: Catch Bugs Fast with sentry-sdk]]></title><description><![CDATA[Catch Python errors in production, monitor performance, and debug faster using sentry-sdk with real-world examples for error tracking, tracing, and visibility.]]></description><link>https://www.thenerdnook.io/p/python-error-monitoring-made-simple</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-error-monitoring-made-simple</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 11 Feb 2026 14:02:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Iyf1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Bugs are just part of writing software. No matter how careful you are, something will break, and it usually happens at the worst time. That is where sentry-sdk helps.</p><p>It is a Python library that helps you understand what is actually going wrong in your app, not just that something failed.</p><p>At a basic level, sentry-sdk gives you real time error tracking and performance tracking. Instead of digging through logs or trying to recreate a bug on your laptop, Sentry shows you what happened, where it happened, and what led up to it.</p><p>Welcome to <code>sentry-sdk</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Iyf1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Iyf1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Iyf1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png" width="650" height="365.625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:650,&quot;bytes&quot;:258413,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/186463728?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Iyf1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Iyf1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3205d145-f36e-4d19-ba40-a6bb38881c97_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>You can see stack traces, variable values, what the app was doing right before the error, and even which parts of your code are running slowly, all in one place.</p><p>I think of sentry-sdk as having eyes inside your production app. It sits quietly in the background while your code runs and lets you know the moment something feels off.</p><p>If an error happens, you see it right away. If a request suddenly slows down, you can tell exactly where the time is going. When you check later, the context is already there waiting for you.</p><p>The best part is how easy it is to set up. With just a few lines of code, Sentry starts catching errors automatically.</p><p>From there, you can add performance tracking, custom events, and extra details only where you need them. It works well for web apps, APIs, background jobs, and even small scripts where you just want to know what is happening.</p><p>In this article, we look at three practical features you can use right away to get better visibility, spend less time debugging, and catch problems before users start noticing them.</p><p>Let&#8217;s get you set up with a quick terminal run:</p><pre><code><code>pip3 install sentry-sdk</code></code></pre><p>If you spend most of your day in the terminal like I do, this one is going to be fun.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Sentry-SDK Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/python-error-monitoring-made-simple">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Weekly: Knowledge Bases, MCP's, Vision-Agents, and More]]></title><description><![CDATA[Week of February 8th, 2026]]></description><link>https://www.thenerdnook.io/p/python-weekly-2</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-2</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 10 Feb 2026 14:32:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8KlR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e523e-8e38-4ec1-9ea6-1b1b5ac40126_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week brings a shift in Python tooling: Rust-powered type checkers that make mypy look glacial, the rise of Model Context Protocol frameworks turning &#8220;LLM tool integration&#8221; into solved infrastruc&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-2">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Hidden Mistakes Making Your Python Projects So Hard ]]></title><description><![CDATA[Python projects feel harder than they should because of hidden design mistakes. Learn how to simplify scope, reduce cognitive load, and write cleaner, easier Python code.]]></description><link>https://www.thenerdnook.io/p/the-hidden-mistakes-making-your-python</link><guid isPermaLink="false">https://www.thenerdnook.io/p/the-hidden-mistakes-making-your-python</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 06 Feb 2026 14:02:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YVex!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most developers do not struggle with Python because it is hard. Python is easy to read, flexible, and forgiving.</p><p>Still, a lot of people hit the same wall and start asking the same question. Why do my Python projects feel harder than they should?</p><p>The frustration usually sneaks in. A script that should take one afternoon turns into a full week. You open your editor and feel stuck instead of excited. Nothing is broken, but nothing feels clear either.</p><p>This is very common, especially for self taught developers or people moving from tutorials into real projects. The problem is almost never about being smart enough or not trying hard enough. Most of the time, it is mental overload.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YVex!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YVex!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!YVex!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!YVex!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!YVex!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YVex!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:254743,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/186463214?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YVex!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!YVex!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!YVex!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!YVex!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7afa3314-d9a1-4654-8522-5136945f4a1f_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>When a Python project feels draining before it feels useful, the issue is not ability. The project is simply asking your brain to hold too much at once. </p><p>You are juggling assumptions, abstractions, future ideas, and things you might need later, all at the same time. Your brain pushes back against that kind of pressure.</p><p>Python makes this tension obvious. Its simplicity does not hide messy structure. In more verbose languages, complexity can get buried under extra syntax and patterns. Python puts it right in your face. </p><p>If a project feels heavy in Python, it is usually because it really is heavy.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p>
      <p>
          <a href="https://www.thenerdnook.io/p/the-hidden-mistakes-making-your-python">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Weekly: Type Safety, MCP Mania, and the Developer Experience Revolution]]></title><description><![CDATA[Week of February 3rd, 2026]]></description><link>https://www.thenerdnook.io/p/python-weekly-1</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-1</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 03 Feb 2026 14:03:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ddvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1d48e5-3b76-4292-81a4-4e8823e86717_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We&#8217;re trying something new this week, I wanted to just go through some of the latest trends with Python and how it meshes up with AI. This article will be a little different going forward.</p><p>These are n&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-1">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Firefly Python: Build Beautiful Terminal Dashboards and Charts in Minutes]]></title><description><![CDATA[Build beautiful real-time dashboards and charts directly in your Python terminal using Firefly. Monitor tasks, visualize data, and debug faster without leaving the CLI.]]></description><link>https://www.thenerdnook.io/p/firefly-python-build</link><guid isPermaLink="false">https://www.thenerdnook.io/p/firefly-python-build</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 28 Jan 2026 14:02:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!13uA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working in the terminal does not have to mean staring at plain text and guessing what is happening. That is where Firefly comes in.</p><p>Firefly is a Python library that lets you build clean, interactive dashboards and charts right inside your terminal. No browser. No web app. Just clear visuals, live updates, and a surprisingly polished experience in the place you already work every day.</p><p> It turns boring terminal output into something you can understand at a glance. Charts update in real time. Tables feel responsive. Dashboards finally look like dashboards.</p><p>Welcome to <code>firefly</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!13uA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!13uA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!13uA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:218523,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/185033025?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!13uA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!13uA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>The easiest way to think about Firefly is this. It gives your terminal eyes. Instead of dumping numbers and hoping your brain connects the dots, you can see trends, progress, and system state right where your code runs. That alone changes how you debug, monitor, and explore data.</p><p>I did not expect to like it as much as I do. Most terminal tools get the job done but look rough. Firefly breaks that pattern. It feels thoughtful, well designed, and genuinely useful. Once you try it, going back to plain print statements feels old.</p><p><strong>In this article</strong>, we are digging into Firefly and walking through three features that show how powerful terminal dashboards can be. No filler. Just practical examples you can drop straight into your workflow.</p><p>Let&#8217;s get you set up with a quick terminal run:</p><pre><code>pip3 install firefly</code></pre><p>If you spend most of your day in the terminal like I do, this one is going to be fun.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Firefly Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/firefly-python-build">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Testing Explained: pytest vs unittest and When to Use Each]]></title><description><![CDATA[Learn Python testing the right way with a clear, practical breakdown of pytest vs unittest, when to use each, and how to build a testing workflow that actually works.]]></description><link>https://www.thenerdnook.io/p/python-testing-explained</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-testing-explained</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 27 Jan 2026 14:02:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NdGy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47e0428b-6d76-4a18-a3ee-2c4ad04ccf2f_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You changed it, shipped it, and went about your day. You wake up the next day to new problems you didn&#8217;t have the day prior&#8230;</p><p>You stare at the diff and think there is no way that tiny change caused thi&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-testing-explained">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What Python Is Really Good At (And Where It Falls Short)]]></title><description><![CDATA[A clear, honest breakdown of Python&#8217;s real strengths, limits, and tradeoffs so you know when Python is the right choice and when another tool makes more sense.]]></description><link>https://www.thenerdnook.io/p/what-python-is-really-good-at</link><guid isPermaLink="false">https://www.thenerdnook.io/p/what-python-is-really-good-at</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Sat, 24 Jan 2026 02:55:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pdAV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Python has a bit of an image problem. People often talk about it like it can do everything. From web apps, data science, and automation. All the way to Machine learning, games, desktop apps, APIs and DevOps. The list goes on and one.</p><p>This is why people just talk about it as &#8220;the everything language&#8221;. </p><p>On the surface, that sounds amazing. In real life, it usually just creates confusion.</p><p>When beginners hear that Python can do everything, they expect it to be the right tool for every job. When experienced devs hear the same thing, they sometimes push Python into places where it does not really belong. </p><p>That is when you start seeing slow systems, rubbish designs, and a lot mistakes. Most of the time, those mistakes are not Python&#8217;s fault.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pdAV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pdAV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pdAV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png" width="615" height="345.9375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:615,&quot;bytes&quot;:129232,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/185404797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pdAV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!pdAV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009bd65c-fbb8-4f1f-8bc1-e162c9a18cd1_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Every week</strong> you&#8217;ll be introduced to a new topic in Python, think of this as a mini starter course to get you going and allow you to have a structured roadmap that actually builds to create you a solid foundation in Python. Join us today!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Python is a great language. But it does have a point of view, even if it is not loud about it. It cares more about code being easy to read than being clever. </p><p><strong>This article</strong> is about setting boundaries. Not to box Python in, but to respect what it is built for. When you know what Python is truly good at, your projects feel simpler and cleaner. When you know what it is not good at, your system designs get smarter.</p><p>&#128073; Premium readers can <strong>access all the content and videos.</strong></p><p>&#128073; Access <strong>Monthly Python Projects</strong>.</p><p>&#128073; Gain access to my <strong>full article archive</strong>.</p><p><em>&#128073; and <strong>Recommend projects</strong> at the bottom.</em></p><p>If you haven&#8217;t subscribed to my premium content yet, you need to check it out. You unlock exclusive access<strong> </strong>to all of these articles and all the code that comes with them, so you can follow along!</p><p>Plus, you&#8217;ll get access to so much more, like monthly Python projects, in-depth weekly articles, the &#8216;3 Randoms&#8217; series, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to do work that I find meaningful. This is my full-time job so I hope you will support my work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>If you get value from my work, consider joining premium. It really helps me keep going and lets me know you&#8217;re getting something out of my work!</p><p>If you&#8217;re already a premium reader, thank you from the bottom of my heart! You can leave feedback and recommend topics and projects at the bottom of all my articles.</p><p>&#128073; <em>If you get value from my work, please help me out, leave it a &#10084;&#65039;, and share it with others who would benefit from this. Thank you so much!</em></p><p><strong>P.S </strong>- Will you learn Python to level up your career? <strong>- <a href="https://www.zerotoknowing.com/join-now">If yes, click me</a>.</strong></p>
      <p>
          <a href="https://www.thenerdnook.io/p/what-python-is-really-good-at">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[JAX Explained: NumPy on GPUs with Automatic Differentiation]]></title><description><![CDATA[Learn how JAX brings NumPy to GPUs and TPUs with automatic differentiation and JIT compilation so your Python math runs faster without rewriting your code.]]></description><link>https://www.thenerdnook.io/p/jax-explained</link><guid isPermaLink="false">https://www.thenerdnook.io/p/jax-explained</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 21 Jan 2026 14:01:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zdNb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Numerical computing in Python should feel fast, simple, and easy to scale. That is exactly what JAX is built for.</p><p>JAX is a Python library that feels a lot like NumPy. You write the same kind of array code you already know. The difference is what happens behind the scenes. JAX is designed to run well on modern hardware like GPUs and TPUs. It also supports automatic differentiation and just in time compilation, without forcing you to rewrite your code from scratch.</p><p>If you have ever used NumPy and thought, this works great but I wish it were faster or easier to scale, JAX feels like the obvious next step. You keep writing familiar array based code, and JAX handles the heavy lifting. It moves work to accelerators and optimizes performance for you.</p><p>Welcome to <code>Jax</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zdNb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zdNb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" width="639" height="359.4375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:639,&quot;bytes&quot;:416389,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/185033183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zdNb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>What really makes JAX stand out is how cleanly it brings a few powerful ideas together. You get NumPy style APIs that feel natural. You get automatic differentiation, which makes working with gradients simple. And you get compilation through XLA, which can make your code much faster with very little extra work.</p><p><strong>In this article</strong>, we are diving into JAX and looking at three practical features that show why so many people are moving past plain NumPy. No heavy theory. No vague explanations. Just clear examples that show how JAX works and when it makes sense to use it.</p><p>If you like clean math, fast code, and tools that can grow with you, this is worth checking out.</p><p>Let&#8217;s get it install via your terminal with pip:</p><pre><code><code>pip3 install jax</code></code></pre><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Jax Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/jax-explained">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>