<?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>Mon, 08 Jun 2026 17:55:08 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[Python Developers Are Sleeping on This… Use Blessings for Your Terminal]]></title><description><![CDATA[Make your Python terminal output clean, colorful, and professional with Blessings. Learn 5 practical tricks to improve readability, logs, and CLI experience fast.]]></description><link>https://www.thenerdnook.io/p/python-developers-are-sleeping</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-developers-are-sleeping</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 13 May 2026 14:01:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LcsZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At some point, you start to notice something. You can have solid tools, clean code, and everything set up the right way, but your output still feels messy and hard to read.</p><p>That&#8217;s where Blessings comes in.</p><p>Blessings is a small Python library that gives you control over your terminal. You can add color, format your text, and position things on the screen in a way that actually makes sense. </p><p>It takes plain, boring output and turns it into something clear and easy to follow.</p><p>Welcome to <code>Blessings</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_!LcsZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LcsZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LcsZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png" width="640" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ae171f7-b840-497c-a724-22c46afb0542_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;:640,&quot;bytes&quot;:139948,&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/196207536?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_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_!LcsZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!LcsZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ae171f7-b840-497c-a724-22c46afb0542_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&#8217;s a simple way to improve how your programs communicate with you. Instead of dumping plain text into the terminal, you can highlight what matters, organize your output, and make everything easier to scan. </p><p>It&#8217;s one of those tools you don&#8217;t think about at first, but once you try it, you don&#8217;t want to go back.</p><p>I&#8217;ve written plenty of scripts where the output gets out of control. Logs everywhere, prints stacked on top of each other, no structure at all. </p><p>Blessings fixes that without adding complexity. It just gives you straightforward control over how things look.</p><p>What I like most is how lightweight it is. You&#8217;re not pulling in a big framework just to style your output. You import it, use a few simple methods, and you&#8217;re done.</p><p><strong>In this article</strong>, I&#8217;ll walk you through a few practical things you can do with Blessings. We&#8217;ll keep it simple and focused on real examples you can use right away.</p><p>Start by installing it:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;12f8e9e2-25e8-47a1-bc2b-3db1eff3fbb0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">pip3 install blessings</code></pre></div><p>Then run your code and finally enjoy looking at your terminal output.</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>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 Blessing Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/python-developers-are-sleeping">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The 5 Best Open Source Projects I’ve Found to Replace Paid Tools (and Save You a Lot of Money)]]></title><description><![CDATA[5 powerful open source tools replacing Notion, Airtable, Slack and more to cut SaaS costs, protect your data, and build a fully self hosted developer stack]]></description><link>https://www.thenerdnook.io/p/the-5-best-open-source-projects</link><guid isPermaLink="false">https://www.thenerdnook.io/p/the-5-best-open-source-projects</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Fri, 08 May 2026 14:02:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yhbt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At some point, every developer runs into the same problem.</p><p>You kick things off with a simple setup. Maybe a couple free tools, a database, and your code. Everything feels clean and easy to manage. </p><p>But over time, without really paying attention, your monthly costs start to climb.</p><p>It usually starts small. A note-taking app. Then a database tool. Then something for project management. Then maybe an AI tool or something for collaboration. </p><p>Before long, you are paying for a bunch of subscriptions, all handling small pieces of the same workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yhbt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yhbt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yhbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png" width="617" height="347.0625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d276ab4-e4bf-4897-978f-c066dd927580_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;:617,&quot;bytes&quot;:280689,&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/196209153?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_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_!yhbt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!yhbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d276ab4-e4bf-4897-978f-c066dd927580_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>The frustrating part is not just the money. It is where your data ends up. It lives inside all those tools. Your workflow depends on them. And when you think about switching, it feels like a headache.</p><p>That is when open source stops feeling like a side option and starts looking like a real upgrade.</p><p>Over the past year, I have been slowly replacing the paid tools in my own setup with open source options. Not the kind that feel unfinished or clunky, but tools that are solid, fast, and actually enjoyable to use.</p><p><strong>In this article</strong>, I am going to walk you through five of the best ones I have come across. These are tools that can replace real subscriptions, cut down your monthly costs, and give you control over your own data again.</p><p><strong>We are going to look at</strong> SiYuan, NocoDB, Makeplane, Chatterbox, and AFFiNE.</p><p>Each one handles a different part of your workflow. Together, they can replace a big chunk of the typical stack most developers end up paying for.</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>- I built an API to solve a simple, yet real problem - <strong><a href="https://www.mailkitapi.com">Check out my API Here</a>.</strong></p>
      <p>
          <a href="https://www.thenerdnook.io/p/the-5-best-open-source-projects">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Redis Slow? Fix It Fast with hiredis (Boost Speed Instantly)]]></title><description><![CDATA[Speed up Python Redis instantly with hiredis&#8212;a simple drop-in upgrade for faster response parsing, lower latency, and better performance at scale]]></description><link>https://www.thenerdnook.io/p/python-redis-slow-fix</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-redis-slow-fix</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 06 May 2026 14:02:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8UUI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working with Redis feels great at first. Everything is quick and easy. </p><p>You connect, set a few keys, pull values back, and move on. It all works exactly how you expect. But once your app starts growing, you begin to notice small slowdowns. Nothing major at first, just a bit of lag here and there. </p><p>Then it builds up. More requests, more data, more pressure on performance. That is usually when you realize the default Python setup is not the fastest option anymore.</p><p>That is where hiredis comes in.</p><p>hiredis is a simple but powerful tool that focuses on one thing. It parses Redis responses faster. </p><p>It is written in C, so it runs closer to the system compared to pure Python code. Instead of your app spending time decoding responses, hiredis takes care of that part quickly in the background.</p><p>Welcome to <code>Hiredis</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_!8UUI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8UUI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8UUI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png" width="643" height="361.6875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76f4040a-62b2-457b-b86a-09103ff1f35b_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;:643,&quot;bytes&quot;:198332,&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/196208086?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_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_!8UUI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!8UUI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76f4040a-62b2-457b-b86a-09103ff1f35b_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>This is one of those tools you do not really think about at first. But once you start using it, you notice the difference right away. Reads feel faster. Things run smoother. There is less overhead when your app is constantly talking to Redis.</p><p>What stands out the most is how easy it is to add. You do not need to rewrite your code or change your setup. </p><p>In most cases, you install it and your existing Redis client starts using it automatically. It is a small change that makes a real difference.</p><p>If you are building anything that depends heavily on Redis, like caching, real time features, or background jobs, this is worth adding. It helps your app stay fast as things scale.</p><p>In this article, I will show you how to get started with hiredis and walk through a few simple ways to use it in your own projects. Nothing complicated. Just real examples you can plug into your code.</p><p>Start by installing it:</p><pre><code><code>pip3 install hiredis</code></code></pre><p>After that, you are set. Your Redis responses will start coming back faster without changing how you write your code.</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>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 Hiredis Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/python-redis-slow-fix">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[This Week in AI: The Shift From Tools to Full Systems Has Begun]]></title><description><![CDATA[AI is shifting from tools to full systems. Discover 7 breakthrough projects shaping the future of Python, agents, voice AI, and self hosted platforms.]]></description><link>https://www.thenerdnook.io/p/python-weekly-7</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-weekly-7</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Tue, 05 May 2026 14:02:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fqhR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This week feels different.</p><p>It doesn&#8217;t feel like people are just experimenting anymore. It feels like things are starting to settle into place.</p><p>Over the past few months, we&#8217;ve watched agents get better across the board. They&#8217;re smarter, more capable, and more independent.</p><p>But something has shifted.</p><p>Now it&#8217;s less about raw capability and more about how everything fits together.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fqhR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fqhR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fqhR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png" width="651" height="366.1875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/247297a6-f646-453e-ad92-a4d6ba8fcdca_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;:651,&quot;bytes&quot;:201820,&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/194680714?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_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_!fqhR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!fqhR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F247297a6-f646-453e-ad92-a4d6ba8fcdca_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>Systems are being built in a way where pieces can connect cleanly. Memory isn&#8217;t an afterthought anymore, it&#8217;s part of the core design. And instead of one-off tools, we&#8217;re starting to see full stacks come together.</p><p>Last week, we talked about this move toward more structured systems.</p><p>Multi-agent setups are becoming normal. Memory is moving past simple vector search and starting to actually learn and evolve. And efficiency is making it possible to do serious work without massive resources.</p><p>This week takes that even further.</p><p>We&#8217;re seeing more models built for specific domains. Voice systems are starting to feel natural and usable. Full AI platforms are showing up that you can actually run yourself. And agents are moving right into the tools developers already use.</p><p>If you&#8217;re building in Python right now, these aren&#8217;t just cool repos to look at.</p><p>They&#8217;re a pretty clear signal of where things are headed.</p><p>Let&#8217;s get into the seven that matter most 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 <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>This Week&#8217;s Top Finds</h2><h3>1. DeepTutor</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/HKUDS/DeepTutor">DeepTutor</a></strong></p><p><strong>What it does:</strong><br>DeepTutor is a personalized learning system powered by autonomous TutorBots that actively guide a student over time. Instead of just answering questions, it builds structured learning paths, tracks knowledge state, and adapts instruction dynamically as the student progresses.</p><p>It supports multiple LLM and embedding providers and includes an agent-native CLI for building and running custom tutoring workflows.</p><p><strong>Why it matters:</strong><br>This isn&#8217;t just &#8220;ChatGPT for learning.&#8221;</p><p>This is <strong>agentic education infrastructure</strong>.</p><p>With 26K+ stars in a single week, it&#8217;s one of the fastest-growing AI repos we&#8217;ve seen&#8212;and for good reason. It shows what happens when you combine:</p><ul><li><p>persistent memory</p></li><li><p>adaptive reasoning</p></li><li><p>structured learning systems</p></li></ul><p>If you&#8217;re building anything in edtech, this is a blueprint.</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>2. VoxCPM</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/OpenBMB/VoxCPM">VoxCPM</a></strong></p><p><strong>What it does:</strong><br>VoxCPM is a tokenizer-free text-to-speech model trained on over <strong>2 million hours of audio</strong>, supporting 30+ languages.</p><p>It includes:</p><ul><li><p>voice cloning</p></li><li><p>voice design via natural language prompts</p></li><li><p>a 2B-parameter architecture</p></li></ul><p><strong>Why it matters:</strong><br>The big shift here is <strong>removing the tokenizer bottleneck</strong>.</p><p>That&#8217;s a core limitation in most TTS systems.</p><p>By eliminating it, VoxCPM enables:</p><ul><li><p>smoother speech generation</p></li><li><p>better multilingual performance</p></li><li><p>more natural voice synthesis</p></li></ul><p>And the bigger signal:</p><p>This is <strong>open-source</strong>, but competing with proprietary systems.</p><p>That gap is closing fast.</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>3. NVIDIA PersonaPlex</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/NVIDIA/personaplex">NVIDIA PersonaPlex</a></strong></p><p><strong>What it does:</strong><br>PersonaPlex is a <strong>full-duplex conversational system</strong>, meaning it can speak and listen at the same time&#8212;just like humans.</p><p>It includes:</p><ul><li><p>controllable personas</p></li><li><p>voice embeddings</p></li><li><p>real-time low-latency responses</p></li></ul><p>It&#8217;s trained on both synthetic and real conversation data and ships with predefined voice configurations.</p><p><strong>Why it matters:</strong><br>This is where voice AI starts to feel real.</p><p>Not:</p><ul><li><p>push-to-talk</p></li><li><p>delayed responses</p></li><li><p>robotic pacing</p></li></ul><p>But:</p><ul><li><p><strong>fluid conversation</strong></p></li><li><p><strong>persistent personality</strong></p></li><li><p><strong>real-time interaction</strong></p></li></ul><p>For anyone building voice agents, this is a reference implementation worth studying closely.</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>4. Kronos</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/shiyu-coder/Kronos">Kronos</a></strong></p><p><strong>What it does:</strong><br>Kronos is a foundation model built specifically for <strong>financial candlestick data</strong>, covering 45+ global exchanges.</p><p>It uses:</p><ul><li><p>specialized tokenization for price data</p></li><li><p>an autoregressive Transformer</p></li><li><p>a two-stage modeling framework</p></li></ul><p>It&#8217;s also been accepted to <strong>AAAI 2026</strong>, which adds real academic weight.</p><p><strong>Why it matters:</strong><br>This is part of a bigger trend:</p><blockquote><p>General-purpose models are no longer enough.</p></blockquote><p>We&#8217;re moving toward <strong>domain-native models</strong> trained specifically for:</p><ul><li><p>finance</p></li><li><p>science</p></li><li><p>biology</p></li><li><p>engineering</p></li></ul><p>Kronos is one of the clearest examples of that shift.</p><h3>5. Onyx</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/onyx-dot-app/onyx">Onyx</a></strong></p><p><strong>What it does:</strong><br>Onyx is a fully self-hostable AI platform that combines:</p><ul><li><p>Agentic RAG</p></li><li><p>deep research workflows</p></li><li><p>custom AI agents</p></li><li><p>web browsing</p></li><li><p>document generation</p></li><li><p>sandboxed code execution</p></li><li><p>voice interaction</p></li></ul><p>It can be deployed with Docker or Kubernetes.</p><p><strong>Why it matters:</strong><br>This is basically:</p><blockquote><p>&#8220;What if you built your own Notion AI or Glean&#8230; but kept full control?&#8221;</p></blockquote><p>That matters a lot for:</p><ul><li><p>enterprises</p></li><li><p>privacy-sensitive teams</p></li><li><p>internal tooling</p></li></ul><p>We&#8217;re seeing a clear shift toward <strong>self-hosted AI stacks</strong>, and Onyx is one of the most complete examples yet.</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>6. reverse-SynthID</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/aloshdenny/reverse-SynthID">reverse SynthID</a></strong></p><p><strong>What it does:</strong><br>This project reverse-engineers <strong>SynthID</strong>, Google&#8217;s audio watermarking system.</p><p>It achieves:</p><ul><li><p>~90% detection accuracy</p></li><li><p>practical watermark removal</p></li><li><p>multi-resolution spectral bypass techniques</p></li></ul><p><strong>Why it matters:</strong><br>This is one of the most important (and uncomfortable) signals this week.</p><p>As AI regulation pushes toward:</p><ul><li><p>watermarking</p></li><li><p>content provenance</p></li><li><p>authenticity tracking</p></li></ul><p>This repo shows:</p><blockquote><p>Those systems are not as robust as we think.</p></blockquote><p>If you&#8217;re working in:</p><ul><li><p>AI safety</p></li><li><p>compliance</p></li><li><p>content verification</p></li></ul><p>You need to understand this.</p><p>Because attackers already do.</p><h3>7. marimo-pair</h3><p><strong>Repo</strong>: <strong><a href="https://github.com/marimo-team/marimo-pair">marimo pair</a></strong></p><p><strong>What it does:</strong><br>marimo-pair turns reactive Python notebooks into <strong>live environments for AI agents</strong>.</p><p>Agents can:</p><ul><li><p>read notebook cells</p></li><li><p>write code</p></li><li><p>execute workflows</p></li><li><p>interact programmatically</p></li></ul><p>All within a structured plugin system.</p><p><strong>Why it matters:</strong><br>This is a subtle but powerful shift.</p><p>Instead of agents operating in:</p><ul><li><p>black-box tools</p></li><li><p>hidden pipelines</p></li></ul><p>They now operate in:</p><ul><li><p><strong>observable environments</strong></p></li><li><p><strong>reproducible workflows</strong></p></li><li><p><strong>real data science contexts</strong></p></li></ul><p>This bridges the gap between:</p><blockquote><p>experimentation &#8594; production</p></blockquote><p>And that&#8217;s a big deal.</p><h2>Key Patterns This Week</h2><h3>1. Domain-Specific Foundation Models Are Rising Fast</h3><p>We&#8217;re moving beyond general LLMs into models built for:</p><ul><li><p>finance (Kronos)</p></li><li><p>education (DeepTutor)</p></li><li><p>research workflows</p></li></ul><p>This is where real competitive advantage will live.</p><h3>2. Voice AI Is Finally Becoming Usable</h3><p>Between:</p><ul><li><p>tokenizer-free TTS (VoxCPM)</p></li><li><p>full-duplex conversation (PersonaPlex)</p></li></ul><p>We&#8217;re getting closer to:</p><blockquote><p>natural, real-time human interaction</p></blockquote><p>Not demos. Actual products.</p><h3>3. Full-Stack AI Platforms Are Becoming the Default</h3><p>Tools like Onyx show a clear direction:</p><blockquote><p>Everything in one place<br>Fully deployable<br>Fully controlled</p></blockquote><p>RAG + agents + browsing + execution + voice<br>&#8594; all bundled into one system</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><h2>Wrapping it Up</h2><p>A few months ago, building AI systems meant stitching together:</p><ul><li><p>APIs</p></li><li><p>vector databases</p></li><li><p>prompt chains</p></li></ul><p>Now?</p><p>You&#8217;re assembling <strong>architectures</strong>.</p><ul><li><p>Memory systems</p></li><li><p>orchestration layers</p></li><li><p>domain-specific models</p></li><li><p>full-stack platforms</p></li></ul><p>And the gap between:</p><blockquote><p>&#8220;cool demo&#8221; &#8594; &#8220;production system&#8221;</p></blockquote><p>is closing fast.</p><p>If you&#8217;re a Python developer, this is the moment to pay attention.</p><p>Because the people who understand these systems now&#8230;</p><p>are the ones who will be building the next layer of tools everyone else uses.</p><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[I Got Tired of This Problem So I Built My Own Fix]]></title><description><![CDATA[Bad email data quietly breaks apps. Here&#8217;s why it happens, why most devs ignore it, and how I ended up building a simple fix for it.]]></description><link>https://www.thenerdnook.io/p/i-got-tired-of-this-problem</link><guid isPermaLink="false">https://www.thenerdnook.io/p/i-got-tired-of-this-problem</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Sat, 02 May 2026 14:02:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0D8J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Email Is the Quiet Part of Your App</p><p>Most apps have one piece nobody really thinks about. Not until it starts causing problems.</p><p>It&#8217;s email&#8230;</p><p>You collect it. You store it. You use it for signups, password resets, notifications, onboarding. It&#8217;s pretty much everywhere in your app. And most days, it just sits there doing its job. Until it stops.</p><h3><strong>Something Feels Off</strong></h3><p>At some point you start seeing weird stuff.</p><p>Users sign up but never activate. Emails bounce and you can&#8217;t figure out why. Numbers in your dashboard look a little strange, but nothing is clearly broken.</p><p>You stare at it. You poke around. Nothing screams.</p><p>That&#8217;s usually the moment it hits you. The problem isn&#8217;t your code. It&#8217;s your data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0D8J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0D8J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0D8J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png" width="618" height="347.625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb7a7efd-a8cf-4cea-9585-deac57b0177c_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;:618,&quot;bytes&quot;:279437,&quot;alt&quot;:null,&quot;title&quot;:null,&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/194692088?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_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_!0D8J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!0D8J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7a7efd-a8cf-4cea-9585-deac57b0177c_1280x720.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>Bad Emails Get In Easier Than You&#8217;d Think</p><p>People mistype their address. Bots fill out your forms. Disposable emails sneak past your checks. Some domains look totally real but aren&#8217;t actually valid.</p><p>And once that junk is in your database, it stays there. It bleeds into your analytics, your campaigns, your user flow charts. Quiet. Slow. But it adds up.</p><p>Pretty soon you&#8217;re making decisions based on numbers that aren&#8217;t real.</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><em>Most &#8220;Fixes&#8221; Don&#8217;t Actually Fix It</em></h3><p>Here&#8217;s the thing. Most developers don&#8217;t really solve this. They work around it.</p><p>A regex check. Maybe a confirmation email. Done.</p><p>But none of that tells you if the email is real. It only tells you it looks like one. Big difference.</p><p>I learned this the hard way on a few different projects. Different stacks. Different teams. Same problem every time.</p><p>At first I ignored it. It didn&#8217;t feel important. Felt like one of those things you&#8217;d circle back to later.</p><p>But it kept coming back on its own.</p><p>And every time, it ate up hours. Debugging why people weren&#8217;t getting emails. Cleaning out garbage from lists. Trying to figure out which signups I could actually trust.</p><p>It&#8217;s one of those problems that doesn&#8217;t crash anything. It just makes everything quietly worse.</p><h3><strong>I Looked At What Was Out There</strong></h3><p>There are a lot of email tools. Some are powerful but heavy. Some are accurate but slow. Some feel half-finished.</p><p>Most of them are clearly built for marketing teams. Big dashboards, lots of dials, plans tiered by contact count.</p><p>I didn&#8217;t want any of that. I just wanted to ask one question and get an answer.</p><p>Is this email actually usable?</p><p>That&#8217;s it. Nothing else.</p><h3><strong>So I Built My Own</strong></h3><p>I put together a small internal tool. Send a request, get back a clean answer. Valid. Invalid. Risky. Done.</p><p>No dashboards. No setup ceremony. No fluff.</p><p>It started as a thing for my own projects. But the more I used it, the more I noticed how often this problem shows up everywhere else.</p><p>SaaS apps. Marketplaces. Newsletters. Internal tools. Anything that takes an email at signup. The problem is everywhere, and most people are either ignoring it or making it way more complicated than it needs to be.</p><p>That gap stuck with me. It&#8217;s here if you want to <a href="https://www.mailkitapi.com">check it out</a>.</p><h3><strong>Why This Matters More Than It Sounds</strong></h3><p>It&#8217;s not a flashy problem. But when you fix it, a lot of things quietly get better.</p><p>Your data gets more honest. Your delivery rates climb. Your analytics actually mean something again. You stop second-guessing your numbers and get back to building the thing you wanted to build in the first place.</p><p>That&#8217;s when I decided to turn it into a real product.</p><p>Not a platform. Not a bloated suite of tools. Just a simple API that does one job well.</p><p>You send it an email. It tells you if you should trust it.</p><p>That&#8217;s the whole idea. You can drop it into a signup flow in a few minutes and basically forget about it.</p><h3><strong>The Boring Tools Are Usually the Best Ones</strong></h3><p>Something I&#8217;ve come to believe after working on this. The best tools aren&#8217;t the ones packed with features. They&#8217;re the ones that take something annoying and make it go away.</p><p>Email validation is one of those things. You don&#8217;t notice it when it&#8217;s working. But when it isn&#8217;t, it touches everything.</p><p>If you&#8217;re building anything that depends on user data, it&#8217;s worth taking ten minutes to plug in something that handles this for you.</p><p>Not because it&#8217;s exciting. Because it&#8217;s the kind of small fix that quietly pays off for as long as your app exists.</p><p>And those are usually the ones worth doing.</p><p><strong>One endpoint. One question. One clean answer.</strong></p><p>Grab a key, paste the cURL, ship it before your coffee gets cold.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.mailkitapi.com&quot;,&quot;text&quot;:&quot;Try the API for Free&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.mailkitapi.com"><span>Try the API for Free</span></a></p>]]></content:encoded></item><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;&#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-6">
              Read more
          </a>
      </p>
   ]]></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 &#8230;</p>
      <p>
          <a href="https://www.thenerdnook.io/p/python-weekly-5">
              Read more
          </a>
      </p>
   ]]></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></channel></rss>