<?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: 3 Randoms]]></title><description><![CDATA[Imagine you're subscribed to a cool newsletter called 3 Randoms. 

Each week, it introduces you to three lesser-known Python tools that can make your coding better. 

It's like expanding your toolbox and discovering new tricks. 

Welcome to 3 Randoms.]]></description><link>https://www.thenerdnook.io/s/3-randoms</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: 3 Randoms</title><link>https://www.thenerdnook.io/s/3-randoms</link></image><generator>Substack</generator><lastBuildDate>Thu, 30 Apr 2026 13:13:41 GMT</lastBuildDate><atom:link href="https://www.thenerdnook.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[The Nerd Nook]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[zerotoknowing@gmail.com]]></webMaster><itunes:owner><itunes:email><![CDATA[zerotoknowing@gmail.com]]></itunes:email><itunes:name><![CDATA[Josh Wenner]]></itunes:name></itunes:owner><itunes:author><![CDATA[Josh Wenner]]></itunes:author><googleplay:owner><![CDATA[zerotoknowing@gmail.com]]></googleplay:owner><googleplay:email><![CDATA[zerotoknowing@gmail.com]]></googleplay:email><googleplay:author><![CDATA[Josh Wenner]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Stop Using Uvicorn: Granian Is the Fastest Python ASGI Server Right Now]]></title><description><![CDATA[Boost Python API performance instantly with Granian. Learn how to run FastAPI and Flask faster with this high-performance ASGI server and simple setup guide.]]></description><link>https://www.thenerdnook.io/p/stop-using-uvicorn</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-using-uvicorn</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 08 Apr 2026 14:03:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Abzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Speed really matters when you&#8217;re building Python backends, and that&#8217;s where Granian starts to stand out.</p><p>Granian is a fast ASGI server written in Rust that&#8217;s built to run Python web apps with less overhead and better performance. </p><p>If you&#8217;ve used Uvicorn or Gunicorn before, you can think of Granian as a step up. It feels familiar, but once you run it, you can tell it&#8217;s doing things more efficiently.</p><p>The easiest way to think about it is as a performance upgrade you can drop right into your stack. You don&#8217;t have to change your app. </p><p>You just swap the server, and your app can handle requests and concurrency in a much smoother way. It makes better use of your hardware without touching your Python code.</p><p>Welcome to <code>Granian</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Abzx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Abzx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:362756,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/193231861?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Abzx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Abzx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f9c544-adfd-4042-8ea8-827ffce8b4dd_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>Granian fits really well with how modern Python apps are built. Whether you&#8217;re using FastAPI, working with async code, or building APIs that need to scale, it gives you a more efficient engine underneath everything. </p><p>It handles connections cleanly, manages workers well, and helps avoid slowdowns that usually show up as your app grows.</p><p>You don&#8217;t need to rewrite anything. You don&#8217;t need to learn a new system. If you already understand ASGI, you&#8217;re already in a good spot.</p><p><strong>In this article</strong>, I&#8217;ll walk you through a few useful things you can do with Granian that can improve how your backend runs. We&#8217;ll start a server, adjust workers for better performance, and look at how it handles async workloads.</p><p>What makes Granian stand out is that it stays focused on one thing. Running your Python app as fast and efficiently as possible. No extra layers. No complicated setup. Just solid performance with a clean developer experience.</p><p>Let&#8217;s start by installing Granian:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;69d344c4-0fd0-46c9-9bf9-5f6ba688125f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">pip3 install granian</code></pre></div><p>From there, you can spin up your server and let Granian do the work.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Granian Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-using-uvicorn">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[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[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[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[Firefly Python: Build Beautiful Terminal Dashboards and Charts in Minutes]]></title><description><![CDATA[Build beautiful real-time dashboards and charts directly in your Python terminal using Firefly. Monitor tasks, visualize data, and debug faster without leaving the CLI.]]></description><link>https://www.thenerdnook.io/p/firefly-python-build</link><guid isPermaLink="false">https://www.thenerdnook.io/p/firefly-python-build</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 28 Jan 2026 14:02:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!13uA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working in the terminal does not have to mean staring at plain text and guessing what is happening. That is where Firefly comes in.</p><p>Firefly is a Python library that lets you build clean, interactive dashboards and charts right inside your terminal. No browser. No web app. Just clear visuals, live updates, and a surprisingly polished experience in the place you already work every day.</p><p> It turns boring terminal output into something you can understand at a glance. Charts update in real time. Tables feel responsive. Dashboards finally look like dashboards.</p><p>Welcome to <code>firefly</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!13uA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!13uA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!13uA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:218523,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/185033025?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!13uA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!13uA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!13uA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26d3429a-6b97-4388-bf9f-9cc86464ba79_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>The easiest way to think about Firefly is this. It gives your terminal eyes. Instead of dumping numbers and hoping your brain connects the dots, you can see trends, progress, and system state right where your code runs. That alone changes how you debug, monitor, and explore data.</p><p>I did not expect to like it as much as I do. Most terminal tools get the job done but look rough. Firefly breaks that pattern. It feels thoughtful, well designed, and genuinely useful. Once you try it, going back to plain print statements feels old.</p><p><strong>In this article</strong>, we are digging into Firefly and walking through three features that show how powerful terminal dashboards can be. No filler. Just practical examples you can drop straight into your workflow.</p><p>Let&#8217;s get you set up with a quick terminal run:</p><pre><code>pip3 install firefly</code></pre><p>If you spend most of your day in the terminal like I do, this one is going to be fun.</p><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Firefly Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/firefly-python-build">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[JAX Explained: NumPy on GPUs with Automatic Differentiation]]></title><description><![CDATA[Learn how JAX brings NumPy to GPUs and TPUs with automatic differentiation and JIT compilation so your Python math runs faster without rewriting your code.]]></description><link>https://www.thenerdnook.io/p/jax-explained</link><guid isPermaLink="false">https://www.thenerdnook.io/p/jax-explained</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 21 Jan 2026 14:01:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zdNb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Numerical computing in Python should feel fast, simple, and easy to scale. That is exactly what JAX is built for.</p><p>JAX is a Python library that feels a lot like NumPy. You write the same kind of array code you already know. The difference is what happens behind the scenes. JAX is designed to run well on modern hardware like GPUs and TPUs. It also supports automatic differentiation and just in time compilation, without forcing you to rewrite your code from scratch.</p><p>If you have ever used NumPy and thought, this works great but I wish it were faster or easier to scale, JAX feels like the obvious next step. You keep writing familiar array based code, and JAX handles the heavy lifting. It moves work to accelerators and optimizes performance for you.</p><p>Welcome to <code>Jax</code>. Check out other <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Random Articles</a></strong> here.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zdNb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zdNb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png" width="639" height="359.4375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:639,&quot;bytes&quot;:416389,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.thenerdnook.io/i/185033183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zdNb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!zdNb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3a91dbb-7967-4b1f-9b3d-bb3125b2765e_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>What really makes JAX stand out is how cleanly it brings a few powerful ideas together. You get NumPy style APIs that feel natural. You get automatic differentiation, which makes working with gradients simple. And you get compilation through XLA, which can make your code much faster with very little extra work.</p><p><strong>In this article</strong>, we are diving into JAX and looking at three practical features that show why so many people are moving past plain NumPy. No heavy theory. No vague explanations. Just clear examples that show how JAX works and when it makes sense to use it.</p><p>If you like clean math, fast code, and tools that can grow with you, this is worth checking out.</p><p>Let&#8217;s get it install via your terminal with pip:</p><pre><code><code>pip3 install jax</code></code></pre><p><strong>Thank you</strong> <strong>guys</strong> for allowing me to continue to do work that I find meaningful. This is my full time job so I hope you will support my work. You can now subscribe on the substack app!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>My premium readers get access to so much more, like <a href="https://thenerdnook.substack.com/s/project-x">monthly Python projects</a>, in-depth weekly articles, this here <a href="https://thenerdnook.substack.com/s/3-randoms">&#8216;3 Randoms&#8217; series</a>, and my <a href="https://thenerdnook.substack.com/archive">complete archive</a>!</p><p>&#128073; <em>If you get value from my work, please leave it a &#10084;&#65039; and share it. This helps more people discover this newsletter, which helps me out immensely!</em></p><h2>This Week&#8217;s Jax Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/jax-explained">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Handle JSON in Python the Clean Way with dataclasses-json]]></title><description><![CDATA[Learn how dataclasses-json turns messy API JSON into clean Python objects, removes boilerplate, and makes working with JSON safer, clearer, and easier.]]></description><link>https://www.thenerdnook.io/p/json-with-dataclasses</link><guid isPermaLink="false">https://www.thenerdnook.io/p/json-with-dataclasses</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 14 Jan 2026 14:03:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ak3r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working with data in Python usually starts out feeling easy, then slowly turns into a mess. </p><p>You grab some JSON from an API, pass it around as dictionaries, add a few keys here and there, and before long the code is hard to read and even harder to trust. </p><p>One small change in the data and things start breaking in places you did not expect. That is exactly the kind of problem dataclasses-json is meant to fix.</p><p>dataclasses-json sits in a really comfortable spot between clean Python code and real world data. If you already like using Python dataclasses, this library feels like it belongs there. </p><p>Welcome to <code>Dataclasses-JSON</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_!ak3r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ak3r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ak3r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/248743e4-a374-434c-86a6-940ea11c38d8_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;:212262,&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/184271545?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_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_!ak3r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!ak3r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F248743e4-a374-434c-86a6-940ea11c38d8_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 lets you take structured data like JSON from an API or a config file and turn it straight into proper Python objects without writing a bunch of extra glue code. </p><p>One of the best parts about this library is how little effort it takes to use. You do not have to learn a whole new system or way of thinking. </p><p>You write normal Python dataclasses, add a decorator, and suddenly you can turn JSON into objects and objects back into JSON with a single call. It handles nested data, optional fields, default values, and even custom behavior when you need it.</p><p><strong>In this article</strong>, we are digging into dataclasses-json and looking at three practical features you can start using right away. These are the kinds of tools that quietly make your code better without making it more complicated. </p><p>If you work with APIs, config files, or any kind of structured data, this is a library that earns its place in your toolbox.</p><p>Let&#8217;s get it install via your terminal with pip:</p><pre><code>pip3 install dataclasses-json</code></pre><p>Let&#8217;s jump in and clean up how we work with JSON in Python.</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 Dataclass-JSON Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/json-with-dataclasses">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Audio Made Simple: Detect Beats, Tempo, and Sound Events with Aubio]]></title><description><![CDATA[Learn practical Python audio analysis with Aubio. Detect beats, tempo, pitch, and onsets using simple real-world examples without heavy math or audio theory.]]></description><link>https://www.thenerdnook.io/p/python-audio-made-simple</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-audio-made-simple</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 07 Jan 2026 14:03:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4H9K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Audio is one of those things that feels confusing until you finally use the right tool. You usually know exactly what you want. Find the beat. Measure the tempo. Track pitch. Break audio into something useful. The problem is that most audio libraries either feel too low level or like they were written for a college textbook.</p><p>Aubio is a Python-friendly audio library that focuses on what people actually want to do. Detect tempo. Find onsets. Track pitch. Things you can use right away in real projects. It does not try to turn you into an audio engineer. It gives you useful building blocks and stays out of the way.</p><p>Welcome to <code>Aubio</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_!4H9K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4H9K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4H9K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9789c0cb-8271-43e9-8b52-a022dc6c0bef_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;:158023,&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/183303357?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_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_!4H9K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!4H9K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9789c0cb-8271-43e9-8b52-a022dc6c0bef_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><br><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 Aubio is as an audio toolbox for getting answers, not theory. You give it sound and it tells you what is going on. Where the beats are. How fast the music is. What pitch is being played. </p><p>That alone opens the door to a lot of practical ideas like music analysis, audio tagging, smart editing tools, or even small experiments like a beat detector or a tuner.</p><p><strong>In this article</strong>, we are going to dig into Aubio and look at three genuinely useful functions you can start using right away. No fluff. No academic side trips. Just practical audio analysis that actually works. </p><p>By the end, you will have a clear idea of what Aubio is good at and how it can fit into your own projects.</p><p>If you have ever wanted to work with audio but did not know where to begin, this is a solid place to start. Let&#8217;s get into Aubio and make audio feel approachable.</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 Aubio Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/python-audio-made-simple">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Python Fire Explained: The Fastest Way to Create Command Line Tools]]></title><description><![CDATA[Learn how Python Fire turns functions and classes into powerful command line tools with zero boilerplate, no argparse, and real world examples you can use today.]]></description><link>https://www.thenerdnook.io/p/python-fire-explained</link><guid isPermaLink="false">https://www.thenerdnook.io/p/python-fire-explained</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 24 Dec 2025 14:02:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sJMD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Writing command line tools should not feel annoying or heavy. It should feel simple, like you are taking Python code you already wrote and making it usable from the terminal. That is where Fire fits in.</p><p>Fire is a small Python library that turns your code into a command line tool with almost no effort. There is no boilerplate to write. No long argument parsing setup. No time wasted reading docs just to add flags. </p><p>Think of it as a direct connection between your Python code and the terminal. Instead of spending time wiring up argparse or click, you stay focused on the actual logic. </p><p>Welcome to <code>Fire</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_!sJMD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sJMD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sJMD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85e73627-b777-4f9a-a537-55a94978773e_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;:200569,&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/182218630?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_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_!sJMD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!sJMD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85e73627-b777-4f9a-a537-55a94978773e_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>If the function works in Python, it works from the command line too. That idea alone is what makes Fire feel so nice to use.</p><p>Fire keeps everything Python first. Function arguments become command line arguments. Methods turn into subcommands. Classes become full tools without extra work. If you already understand Python, you already understand how Fire behaves.</p><p>Whether you are writing small utilities, internal tools, automation scripts, or full command line apps, Fire keeps the code clean and easy to read. It is especially useful when you want power and flexibility without pulling in a big framework.</p><p><strong>In this article</strong>, we are going to look at Fire the same way we always do. We will introduce the library, then walk through three genuinely useful things you can do with it right away. </p><p>Fire works so well because it stays out of your way. It lets Python stay Python and turns the terminal into a natural extension of your code. Once you see how fast you can go from idea to a working CLI, it all makes sense.</p><p>Let&#8217;s start by installing Fire and turning plain Python into something you can run, share, and actually enjoy using from the command line.</p><pre><code>pip3 install fire</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 Fire Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/python-fire-explained">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[SQLModel Explained: The Easiest Way to Use Databases in Python]]></title><description><![CDATA[Learn SQLModel step by step and see how to build Python database models, run queries, and validate data using one clean, modern ORM built for real apps.]]></description><link>https://www.thenerdnook.io/p/sqlmodel-explained-the-easiest-way</link><guid isPermaLink="false">https://www.thenerdnook.io/p/sqlmodel-explained-the-easiest-way</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 17 Dec 2025 14:02:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BJ2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working with databases should not feel like you have to choose between clean Python code and real SQL power, and that is where SQLModel fits in. </p><p>SQLModel is a modern Python library built by the same person who created FastAPI, and it sits right between SQLAlchemy and Pydantic. </p><p>If you have ever thought that SQLAlchemy feels a bit heavy, or that Pydantic is great but does not actually talk to a database, SQLModel was made to solve that exact problem.</p><p>You define a class once and that class becomes your database table, your Python object, and your validation model all at the same time. There is no duplication and no separate files that slowly drift out of sync. </p><p>You describe your data once and then use it everywhere, whether you are saving to a database, validating input, or passing data around your app.</p><p>Welcome to <code>SQLModel</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_!BJ2E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BJ2E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BJ2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37a37870-d398-44a0-a045-1cc748d22ae3_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;:209471,&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/181573919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_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_!BJ2E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!BJ2E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a37870-d398-44a0-a045-1cc748d22ae3_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>What really sold me on it is how natural it feels to write. You use normal Python type hints, and suddenly those hints actually matter. They turn into database columns, they validate data, and they make your editor more helpful. </p><p>If you already use FastAPI, SQLModel feels like it was always meant to be there. If you come from SQLAlchemy, it feels familiar but simpler. If you come from writing raw SQL, it gives you structure without hiding what is really going on.</p><p><strong>In this article,</strong> we are diving into SQLModel and three practical pieces of it that you can use right away. You will see how models, sessions, and queries work together in a way that feels practical and grounded, not theoretical. </p><p>These examples are not meant to cover everything. They are meant to give you a solid base so the next time you need to store, query, or validate data in Python, SQLModel feels like an easy choice.</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 SQLModel Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/sqlmodel-explained-the-easiest-way">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[The Fastest Way to Create Python Command Line Tools With Fire]]></title><description><![CDATA[See how to turn any Python script into a fast, practical command line tool using Fire, with simple examples that show you how to automate tasks and speed up your workflow.]]></description><link>https://www.thenerdnook.io/p/the-fastest-cli-tool</link><guid isPermaLink="false">https://www.thenerdnook.io/p/the-fastest-cli-tool</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 10 Dec 2025 14:02:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MF7K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Turning a Python script into something you can run from the command line should feel simple, and that&#8217;s exactly what Fire gives you.</p><p>You write a normal Python file with regular functions, classes, or even just variables, and Fire turns it into a command-line tool right away. There&#8217;s no extra setup and nothing complicated to wire together.</p><p> If you&#8217;ve ever written a script and wished you could run it the same way you run any other command, Fire does that for you. </p><p>You point it at your code, and suddenly you have a tool that understands arguments, handles types, and even shows help text without you having to write anything extra.</p><p>Welcome to <code>fire</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_!MF7K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MF7K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MF7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0265de0b-f777-4087-841b-35a57a50bbcf_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;:181564,&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/180999131?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_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_!MF7K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!MF7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0265de0b-f777-4087-841b-35a57a50bbcf_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>I&#8217;ve tried different ways of building command-line tools, and most of them felt heavier than they needed to be. Some made you write long configuration files, others relied on decorators everywhere, and a few needed so much setup that you&#8217;d forget what you were trying to do in the first place. </p><p>Fire skips all of that. You add one line, <code>fire.Fire()</code>, and your script is ready to use from the command line.</p><p><strong>Today I&#8217;ll show you</strong> how Fire works, how it handles arguments, and how you can build simple or more advanced command-line tools without changing the structure of your program. </p><p>Once you see it in action, you&#8217;ll start noticing all the small scripts in your projects that would be far more helpful if they were command-line tools. To get started, install Fire:</p><pre><code>pip3 install fire</code></pre><p>Take a moment and get comfortable. Your Python files are about to turn into real command-line tools.</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 Fire Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/the-fastest-cli-tool">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Stop Pushing Broken Code: The Simple Pre-Commit Setup Every Python Developer Needs]]></title><description><![CDATA[Discover how Pre-Commit can automatically format, lint, and secure your Python code. Learn to set it up, prevent errors, and keep your projects clean and consistent.]]></description><link>https://www.thenerdnook.io/p/stop-pushing-broken-code</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-pushing-broken-code</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 03 Dec 2025 14:03:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yMf4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Good code isn&#8217;t just about making something that runs&#8212;it&#8217;s about keeping it clean and easy to work with as your project gets bigger. That&#8217;s where <strong>pre-commit</strong> comes in. Think of it like a security guard for your code. </p><p>Before any changes get committed, it checks everything to make sure you&#8217;re not adding sloppy formatting, forgotten print statements, or anything that breaks your team&#8217;s standards. </p><p>With pre-commit, you can automatically run tools like <strong>Black</strong>, <strong>Flake8</strong>, or <strong>isort</strong> before your code even hits the repository. It keeps your project clean without you having to remember to do it yourself.</p><p>I&#8217;ll be honest&#8212;I used to forget to lint or format my code all the time. I&#8217;d push changes and later realize half my files didn&#8217;t match our style rules. Once I started using pre-commit, that problem disappeared. </p><p>It quietly took care of everything each time I ran <code>git commit</code>. It&#8217;s one of those small tools that make a big difference, especially when you&#8217;re working with a team or managing a growing codebase.</p><p>Welcome to <code>Pre-Commit</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_!yMf4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yMf4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yMf4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af3f5edd-ace0-431d-ba00-bb6f49c5bc69_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;:182152,&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/176207840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_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_!yMf4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!yMf4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf3f5edd-ace0-431d-ba00-bb6f49c5bc69_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>In this issue, we&#8217;ll walk through how pre-commit works, how to set it up in your own project, and look at some of its most useful hooks. </p><p>By the end, you&#8217;ll see that pre-commit isn&#8217;t just about enforcing rules&#8212;it&#8217;s about saving time, catching problems early, and keeping your workflow smooth and professional.</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 Pre-Commit Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-pushing-broken-code">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Master DNS in Minutes: How to Simplify Networking with Python’s dnspython Library]]></title><description><![CDATA[Learn how to use Python&#8217;s dnspython library to simplify DNS lookups, reverse queries, and record checks. Master DNS automation and boost your network efficiency today.]]></description><link>https://www.thenerdnook.io/p/master-dns-in-minutes</link><guid isPermaLink="false">https://www.thenerdnook.io/p/master-dns-in-minutes</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 26 Nov 2025 14:03:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Q4jf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Networking can feel confusing when you&#8217;re first getting into it, but <code>dnspython</code> makes the whole process much easier. </p><p>It&#8217;s a solid Python library built for working with DNS, and it&#8217;s great for anyone who needs to look up domain names, check DNS records, or manage their own DNS data. </p><p>The easiest way to think about it is that it gives you one place to handle anything related to domain names. Whether you&#8217;re building tools, checking IP addresses, or automating parts of a server setup, dnspython handles the heavy lifting.</p><p>I used to think working with DNS meant you needed a deep networking background or a bunch of clunky tools. Once I tried dnspython, things started to make sense. </p><p>Welcome to <code>dnspython</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_!Q4jf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q4jf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q4jf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png" width="642" height="361.125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57152066-8423-4435-8a76-99f4179ed970_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;:642,&quot;bytes&quot;:111091,&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/176207985?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_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_!Q4jf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Q4jf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57152066-8423-4435-8a76-99f4179ed970_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 look up domains, check A, MX, or TXT records, and even run reverse lookups with just a few lines of code. It&#8217;s also much easier to read and work with compared to raw sockets or command line tools like nslookup.</p><p><strong>In this article</strong>, I&#8217;m going to walk you through how dnspython works, how to install it, and how to use its most helpful features. You&#8217;ll see how to run simple lookups, try more advanced queries, and understand how DNS fits together behind the scenes. </p><p>By the time you&#8217;re done, you&#8217;ll have a clear picture of how dnspython helps you explore and automate one of the internet&#8217;s core systems.</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 DNSPython Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/master-dns-in-minutes">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Boost Python Speed Instantly: How Numba Makes Your Code Run Like C]]></title><description><![CDATA[Discover how Numba turns slow Python code into lightning-fast machine code. Learn to speed up loops, NumPy, and data analysis with one simple decorator.]]></description><link>https://www.thenerdnook.io/p/boost-python-speed-instantly</link><guid isPermaLink="false">https://www.thenerdnook.io/p/boost-python-speed-instantly</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 19 Nov 2025 14:02:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OtDx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Speed is everything when you&#8217;re trying to make Python run faster, cause let&#8217;s face it , it&#8217;s not the fastest language out there.</p><p>Numba is a just-in-time compiler that takes normal Python functions and turns them into machine code that runs at incredible speed. </p><p>Basically it makes your programs run faster without needing to rewrite them in C or C++. I&#8217;ve used it on data-heavy projects where loops were slowing everything down, and Numba made them run for their lives with almost no extra work.</p><p>So, why use Numba? Think of it as a performance upgrade for Python. You just add a simple <code>@njit</code> decorator to your functions, and suddenly your loops, array operations, and math-heavy tasks start performing like compiled code. </p><p>Welcome to <code>Numba</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_!OtDx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OtDx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OtDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png" width="678" height="381.375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1f26011-1e03-4063-9443-9d727cb37c8c_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;:678,&quot;bytes&quot;:265284,&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/176207797?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_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_!OtDx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!OtDx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1f26011-1e03-4063-9443-9d727cb37c8c_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>Numba is great for things like scientific computing, data analytics, and any project where speed matters. From NumPy arrays, running simulations to processing massive datasets, this will give you a huge performance boost. </p><p><strong>Today, I&#8217;ll walk you through</strong> how to use Numba to turn your Python code into something that moves fast. Get ready as things are about to speed up.</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 Numba Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/boost-python-speed-instantly">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Stop Using os.path — Learn How Pathlib Simplifies File Handling in Python]]></title><description><![CDATA[Discover how Python&#8217;s Pathlib makes file handling effortless. Learn to create, navigate, and manage files with clean, readable code that works across all systems.]]></description><link>https://www.thenerdnook.io/p/stop-using-ospath</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-using-ospath</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 12 Nov 2025 14:01:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!li39!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Working with files in Python doesn&#8217;t have to be awkward, that&#8217;s where Pathlib makes life easier. </p><p>It&#8217;s the modern way to handle files and folders in Python, and once you try it, you&#8217;ll never want to go back to using just <code>os</code> or plain string paths. Pathlib treats file paths like real objects instead of basic strings, which makes your code cleaner, safer, and easier to read. </p><p>Whether you&#8217;re checking if a file exists, creating folders, reading files, or joining paths, Pathlib handles all of it smoothly across different operating systems.</p><p>I used to write long, messy path code like <code>os.path.join(&#8221;folder&#8221;, &#8220;subfolder&#8221;, &#8220;file.txt&#8221;)</code> or <code>if not os.path.exists(...)</code>, but that&#8217;s in the past. </p><p>Welcome to <code>Pathlib</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_!li39!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!li39!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!li39!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!li39!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!li39!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!li39!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png" width="634" height="356.625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c316475-35a7-46d7-99b3-3e4e7b4771e4_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;:634,&quot;bytes&quot;:120527,&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/176207886?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_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_!li39!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!li39!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!li39!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!li39!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c316475-35a7-46d7-99b3-3e4e7b4771e4_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>Now, with Pathlib, I can just write <code>Path(&#8221;folder&#8221;) / &#8220;subfolder&#8221; / &#8220;file.txt&#8221;</code>&#8212;and it just works. It&#8217;s simple, clear, and built right into Python, so there&#8217;s nothing extra to install.</p><p>Think of Pathlib as your personal file system helper. It knows where your files are, tells you if they exist, creates folders when needed, and lets you open or write to files with very little effort. </p><p><strong>In this article</strong>, I&#8217;ll walk you through a few practical and genuinely useful Pathlib functions that can make your daily coding smoother. From reading and writing files to navigating folders, Pathlib takes what used to be clunky code and turns it into something clean and natural to write.</p><p>Let&#8217;s jump in, you&#8217;ll see how much better file handling in Python can feel once you start working with Paths instead of plain strings.</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 Pathlib Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-using-ospath">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Transformers by Hugging Face: The Ultimate Guide to Modern NLP with Python]]></title><description><![CDATA[Discover how to use Hugging Face Transformers in Python for NLP, text generation, translation, and AI automation. Learn to build powerful, human-like language tools fast.]]></description><link>https://www.thenerdnook.io/p/transformers-by-hugging-face</link><guid isPermaLink="false">https://www.thenerdnook.io/p/transformers-by-hugging-face</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 05 Nov 2025 14:02:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kz-8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Natural language processing has made huge progress over the last few years, and a big reason for that is Transformers by Hugging Face. </p><p>If you&#8217;ve ever wondered how computers can summarize text, translate languages, or even write code with such accuracy&#8212;this is the technology making it happen. </p><p>Transformers are basically the engine that powers today&#8217;s smartest AI language models. They help machines understand the meaning and context of words in a way that feels almost human.</p><p>Welcome to <code>Transformers</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_!kz-8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kz-8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kz-8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png" width="672" height="378" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83019dc6-013c-48f7-a046-703d3a8f77b7_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;:672,&quot;bytes&quot;:77053,&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/176207946?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_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_!kz-8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!kz-8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83019dc6-013c-48f7-a046-703d3a8f77b7_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Imagine you&#8217;re subscribed to a newsletter called <strong><a href="https://thenerdnook.substack.com/s/3-randoms">3 Randoms</a></strong>. Each week, it introduces you to three lesser-known Python tools that can make your coding better. It&#8217;s like expanding your toolbox and discovering new tricks.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.thenerdnook.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.thenerdnook.io/subscribe?"><span>Subscribe now</span></a></p><p>What makes Hugging Face stand out is how easy they make it to use these advanced models. You don&#8217;t need to be an expert in deep learning to work with models like BERT, GPT-3, or DistilBERT. </p><p>With just a few lines of Python, you can load a model, run predictions, and see powerful results right away. It takes something that used to be locked away in research labs and puts it right into the hands of everyday developers.</p><p><strong>In this article</strong>, I&#8217;ll show you how to get started with the Transformers library, go over a few of the key features that make it so effective, and walk you through running real NLP tasks in minutes. </p><p>Whether you&#8217;re building a chatbot, analyzing customer reviews, or generating text, this library gives you a clear window into what modern AI can really do. </p><p>Let&#8217;s get started with the basics by installing Transformers:</p><pre><code><code>pip3 install transformers</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 Transformer Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/transformers-by-hugging-face">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Build Smarter AI with LangChain: Turn Simple Prompts into Real Python Apps Fast]]></title><description><![CDATA[Discover how to use LangChain to build smart, real-world AI apps in Python. Learn to create chatbots, automate summaries, and connect GPT models with your own data easily.]]></description><link>https://www.thenerdnook.io/p/build-smarter-ai-with-langchain</link><guid isPermaLink="false">https://www.thenerdnook.io/p/build-smarter-ai-with-langchain</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 29 Oct 2025 14:02:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!27Ia!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Building AI apps sounds complex, but LangChain makes it surprisingly easy. this has been heavily requested so I&#8217;ll be sure to make some videos soon as well.</p><p>Basically it&#8217;s an open-source framework that helps devs connect LLM&#8217;s like GPT with real-world data, tools, and workflows all using Python. Ever hear the term, MCP?</p><p>Instead of manually wiring together APIs, prompts, and databases, LangChain gives you a clean, organized way to build smart applications that can think, remember, and interact with other systems.</p><p>Think of it as the bridge between language models and everything else. It lets you build chatbots that can pull in live data, summarize documents, run code, or even handle multi-step reasoning automatically. </p><p>Welcome to <code>LangChain</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_!27Ia!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!27Ia!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!27Ia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png" width="618" height="347.625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ee5f007-5bc7-4663-9916-c3058a2e53d0_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;:88468,&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/176207731?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_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_!27Ia!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!27Ia!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee5f007-5bc7-4663-9916-c3058a2e53d0_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>With LangChain, you&#8217;re not just sending one-off prompts&#8212;you&#8217;re creating AI agents that can plan, make decisions, and perform tasks dynamically. After spending some time exploring it, I can honestly say it&#8217;s one of the most exciting tools in the Python AI space right now.</p><p>Whether you want to connect a model to your own data, build AI assistants, or experiment with reasoning agents, this library makes it simple and flexible. </p><p><strong>In this article</strong>, I&#8217;ll walk you through how to build your first chain, link it with data, and run your own small AI workflows. </p><p>What makes LangChain really stand out is how smoothly it blends the power of large language models with the flexibility of Python. You&#8217;ll see just how quickly you can go from a simple prompt to a fully working AI pipeline with only a few lines of code.</p><p>Let&#8217;s get started with the basics by installing LangChain and setting up your first chain. </p><pre><code>pip3 install langchain-openai </code></pre><p>Once it&#8217;s up and running, you&#8217;ll see just how easy it is to make AI work for you.</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 Langchain Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/build-smarter-ai-with-langchain">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Stop Showing Ugly Numbers: Use Python’s Humanize to Make Data Easy to Read and Understand]]></title><description><![CDATA[Make your Python projects feel natural with the Humanize library. Learn how to turn raw data, timestamps, and numbers into clear, human-readable text in seconds.]]></description><link>https://www.thenerdnook.io/p/stop-showing-ugly-numbers</link><guid isPermaLink="false">https://www.thenerdnook.io/p/stop-showing-ugly-numbers</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 22 Oct 2025 14:02:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ibdc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Making data easy to read shouldn&#8217;t feel robotic, and that&#8217;s exactly what the Humanize library helps with. </p><p>It&#8217;s a lightweight Python tool that turns that rough data into something people can actually understand, by people I also mean me. Instead of showing hard-to-read numbers or timestamps, Humanize makes them sound natural more like something a person would actually say.</p><p>It could be file sizes, time differences, or large numbers, it helps your output feel friendly and familiar.</p><p>Seeing &#8220;uploaded 432000 seconds ago&#8221; or &#8220;file size: 108374182 bytes&#8221; doesn&#8217;t exactly make sense at first glance. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ibdc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ibdc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ibdc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png" width="644" height="362.25" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8f24091-8202-48d4-b7d5-cafb7490de33_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;:644,&quot;bytes&quot;:65483,&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/176208022?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_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_!Ibdc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!Ibdc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8f24091-8202-48d4-b7d5-cafb7490de33_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>Humanize fixes that in seconds. It automatically changes that kind of data into &#8220;uploaded 5 days ago&#8221; or &#8220;file size: 103 MB.&#8221; It&#8217;s the kind of small detail that makes dashboards, reports, and apps easier for people to read and trust.</p><p>What I love about Humanize is how simple it is to use. There&#8217;s no setup or complex configuration&#8212;you just import it, call a function, and your data instantly looks better. </p><p><strong>In this article</strong>, I&#8217;ll walk you through three useful functions from Humanize that can make your data look cleaner and your apps sound more natural.</p><p>To get started, just run:</p><pre><code>pip3 install humanize</code></pre><p>Now, let&#8217;s make your data sound like it&#8217;s speaking human.</p><h2>This Week&#8217;s Humanize tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/stop-showing-ugly-numbers">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Build Interactive Machine Learning Apps with Gradio (No Frontend Needed)]]></title><description><![CDATA[Learn how to use Gradio to turn your Python functions and machine learning models into interactive web apps&#8212;no frontend or deployment experience required.]]></description><link>https://www.thenerdnook.io/p/how-to-build-interactive-machine</link><guid isPermaLink="false">https://www.thenerdnook.io/p/how-to-build-interactive-machine</guid><dc:creator><![CDATA[Josh Wenner]]></dc:creator><pubDate>Wed, 15 Oct 2025 14:02:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xqAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Gradio makes building machine learning apps simple. You don&#8217;t have to worry about designing a fancy frontend, writing JavaScript, or setting up a web server. </p><p>With just a few lines, your model can go live on the web with an easy-to-use interface anyone can try. That&#8217;s all Gradio, it connects your model to real people without all the extra work.</p><p>If you&#8217;ve ever finished training a model and thought, &#8220;Okay, what now?&#8221;, Gradio solves that problem. </p><p>Welcome to <code>Gradio</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_!xqAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xqAv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xqAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png" width="655" height="368.4375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d447e8d-12c8-4fec-acf7-5378f6436691_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;:655,&quot;bytes&quot;:89748,&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/176132014?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_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_!xqAv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!xqAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d447e8d-12c8-4fec-acf7-5378f6436691_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 lets you build a clean, interactive page where users can test your model by typing text, uploading pictures, or recording audio all without writing a single line of HTML. </p><p>Think of it like a faster, simpler version of Streamlit that&#8217;s focused just on showing off models. I love Streamlit, I really do. Gardio is a nice tool because it&#8217;s simpler for an MVP.</p><p>Often I&#8217;d use Flask or Streamlit to share projects, it worked, but it was a hassle. Gradio completely changed that. Now, I can go from having a model ready to having a live demo faster. </p><p><strong>In this article</strong>, I&#8217;ll show you how to use Gradio to turn a simple Python function into an interactive web app. We&#8217;ll look at how it works, how to build your first interface, and a few tricks to make your app stand out. </p><p>Whether you&#8217;re showing a machine learning model, an image generator, or just a fun Python project, Gradio makes the process quick and enjoyable.</p><pre><code>pip3 install gradio</code></pre><p>Let&#8217;s jump in and see how a few lines of Python can turn into a real working web app right before your eyes.</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 Gradio Tips</h2>
      <p>
          <a href="https://www.thenerdnook.io/p/how-to-build-interactive-machine">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>