<?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[Vinnie’s Views]]></title><description><![CDATA[It’s about independence
built from code, steel, and stubbornness.]]></description><link>https://www.vinthewrench.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Vix4!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdba2dcc7-51bb-4fcd-ae79-72b2f75e08d0_1019x1019.png</url><title>Vinnie’s Views</title><link>https://www.vinthewrench.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 03 May 2026 16:50:44 GMT</lastBuildDate><atom:link href="https://www.vinthewrench.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Vinnie Moscaritolo]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[vinthewrench@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[vinthewrench@substack.com]]></itunes:email><itunes:name><![CDATA[Vinnie Moscaritolo]]></itunes:name></itunes:owner><itunes:author><![CDATA[Vinnie Moscaritolo]]></itunes:author><googleplay:owner><![CDATA[vinthewrench@substack.com]]></googleplay:owner><googleplay:email><![CDATA[vinthewrench@substack.com]]></googleplay:email><googleplay:author><![CDATA[Vinnie Moscaritolo]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Vinnie’s Farm Automation Projects]]></title><description><![CDATA[A guide to the systems and projects I&#8217;ve built on the farm]]></description><link>https://www.vinthewrench.com/p/vinnies-farm-automation-projects</link><guid isPermaLink="false">https://www.vinthewrench.com/p/vinnies-farm-automation-projects</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 27 Mar 2026 21:14:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aBvA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aBvA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aBvA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aBvA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg" width="700" height="381" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:381,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158057,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/192352081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aBvA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aBvA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c46e7f4-5553-4810-83a3-6a81c5ad863d_700x381.jpeg 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>This page brings together the full cornucopia of farm automation projects I have built and shared from our farmstead. Irrigation systems, environmental sensing, weather stations, power management, chicken coop automation, and everything in between. </p><p>If you are thinking of building this stuff yourself and want to avoid the usual LLM hallucinations, dig through these articles. You will find details on the hardware and software I have actually built, along with the good, the bad, and the ugly behind the design decisions that got me there.</p><h4>Setting up the Farm</h4><ul><li><p><a href="https://www.vinthewrench.com/p/this-is-my-dirt">This is My Dirt</a><br><em>20-May-24</em> &#8212; The Farmsteading Adventure Begins.</p></li><li><p><a href="https://www.vinthewrench.com/p/be-water-my-friend">Be Water, My Friend</a><br><em>01-May-24</em> &#8212; Our first irrigation project at Stella Porta.</p></li></ul><h4>Raspberry Pi Farm Irrigation System </h4><ol><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part">Farm automation made easy as Pi</a><br><em>01-May-25</em> &#8212; Setting up the foundation for real-world IoT on the farm.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-23c">Controlling the Irrigation Valves</a><br><em>01-May-25</em> &#8212; The basics of switching solenoids, safely and reliably.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-a4c">Reading from the 1-Wire Sensors</a><br><em>06-May-25</em> &#8212; Building the temperature sensing layer.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-688">Using the I2C Protocol to Communicate to Sensors</a><br><em>07-May-25</em> &#8212; How we wired it, read it, and filtered out the crap.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-a03">Reading Environmental Data with I2C</a><br><em>09-May-25</em> &#8212; Expanding the sensor net and interpreting the data.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-cfd">Raindrops Keep Falling On My Head</a><br><em>26-May-25</em> &#8212; Detecting precipitation (and making decisions from it).</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-61b">More I/O</a><br><em>30-May-25</em> &#8212; Handling expansion and GPIO overload.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-8e7">Getting the Data and Controlling the Devices from the REST API</a><br><em>01-Jun-25</em> &#8212; Talking to your Pi from across the network.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-9ef">Writing Your Own Device Plug-ins</a><br><em>03-Jun-25</em> &#8212; Custom code to extend your system&#8217;s reach.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-094">Using Software Devices to Build on the Hardware</a><br><em>06-Jun-25</em> &#8212; Simulated devices and logic layers.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-12f">How to Make Things Happen Automatically</a><br><em>07-Jun-25</em> &#8212; Trigger-based actions and logic chains.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-eb8">Time Has Come Today</a><br><em>12-Jun-25</em> &#8212; Scheduled tasks and automation routines.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-3aa">There Are Always Conditions to Evaluate</a><br><em>13-Jun-25</em> &#8212; Conditional logic for smarter systems.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-2a8">Rolling My Own I&#178;C and 1-Wire Interface Card</a><br><em>21-Jun-25</em> &#8212; A custom hardware solution for real-world reliability.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-a8b">Recording and Accessing Environmental Data Remotely</a><br><em>01-Jul-25</em> &#8212; Logging and remote access to your system&#8217;s mind.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-2c2">Preventing Injection Attacks to the Database</a><br><em>07-Jul-25</em> &#8212; Keeping bad guys out of your Pi.</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-0d5">PWM: A Better Way to Control Sprinkler Valves</a><br><em>21-Jul-25</em> &#8212; Fine-tuned voltage control for water flow.</p></li><li><p><a href="https://www.vinthewrench.com/p/not-another-sprinkler-valve-article">Not Another Sprinkler Valve Article; TLDR</a></p><p>2-Sep-25 &#8212; The elevator pitch</p></li><li><p><a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029">Smart Power Switch and Shutdown for Raspberry Pi</a><br>05-Oct-25 - Battery Backup and controlled shutdown.</p></li><li><p><a href="https://www.vinthewrench.com/p/why-the-raspberry-pi-gpio-api-is">Why the Raspberry Pi GPIO API is broken and how to fix it</a><br>11-Nov-25 - How a quiet change in Linux and libgpiod boned developers</p></li><li><p><a href="https://www.vinthewrench.com/p/chasing-raspberry-pi-power-management">Chasing Raspberry Pi Power Management</a><br><em>26-Jan-26</em> &#8212; Lessons Learned Building a Power Switch with Deep Sleep and Wake Control</p></li></ol><h4>General stuff</h4><ul><li><p><a href="https://www.vinthewrench.com/p/how-did-you-make-that">How did you make that?</a></p><p><em>23-Jan-26 </em>&#8212; What actually happens between an idea and a working circuit board</p></li></ul><ul><li><p><a href="https://www.youtube.com/watch?v=gbhPg_5XXlw">Interview with Raspberry Pint</a><br>30-Sep-25 - Building resilient systems that don&#8217;t need the cloud</p></li><li><p><a href="https://vinthewrench.substack.com/p/using-a-raspberry-pi-to-remotely">Using a Raspberry Pi to measure the cistern level</a></p><p>14-Nov-21  &#8212; A better way to calculate water level</p></li></ul><h4>Weather Station</h4><ul><li><p><a href="https://www.vinthewrench.com/p/building-a-dedicated-weather-station">Building a Dedicated Weather Station Display</a></p><p><em>18-Dec-25</em> &#8212; Built a rock-solid, minimalist Raspberry Pi kiosk weather display</p></li><li><p><a href="https://www.vinthewrench.com/p/build-your-own-off-grid-weather-station">Build Your Own Off-Grid Weather Station</a></p><p><em>11-Dec-25</em> &#8212; A Raspberry Pi and SDR system for collecting local weather data without relying on anyone&#8217;s cloud.</p></li></ul><ul><li><p><a href="https://www.vinthewrench.com/p/here-comes-the-sun">Here comes the Sun</a><br><em>06-Mar-26</em> &#8212; How My Chicken Coop Controller Calculates Sunrise and Sunset</p></li></ul><h4>Chicken Coop Automation</h4><ul><li><p><a href="https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door">A Better Automatic Chicken Coop Door</a><br><em>05-Mar-26</em> &#8212; From Backyard Chickens to 100-Bird Pasture Rotation</p></li><li><p><a href="https://www.vinthewrench.com/p/chicken-coop-door-installed-and-running">Chicken Coop Door, Installed and Running</a></p><p><em>26-Mar-26</em> &#8212; Video, installation photos, and command-line setup from the finished coop door controller</p></li><li><p><a href="https://www.vinthewrench.com/p/the-humble-actuator">The Humble Actuator</a></p><p><em>11-Oct-25</em> &#8212; I2C-Based Linear Actuator Driver with Current Monitor</p></li></ul><ul><li><p><a href="https://vinthewrench.substack.com/p/chicken-coop-automation-revisited">Chicken Coop with Raspberry Pi</a></p><p><em>27-Jan-22</em> &#8212; Version 2 of the coop controller</p></li></ul><ul><li><p><a href="https://vinthewrench.substack.com/p/chicken-coop-automation-using-the-arduino-platform-4c572d9a940a">Chicken Coop with Arduino platform</a></p><p><em>17-Dec-20</em> &#8212; My first coop controller</p><p></p></li></ul><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. It is not always electronics. Believe it or not, I have been known to jump from <a href="https://www.vinthewrench.com/p/strawberry-custard-pie">baking</a> to <a href="https://www.vinthewrench.com/p/i-can-smell-you">perfume</a> to <a href="https://www.vinthewrench.com/p/parts-that-dont-suck-part-4">motorcycles</a> without much warning.</p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Chicken Coop Door, Installed and Running.]]></title><description><![CDATA[Video, installation photos, and command-line setup from the finished coop door controller]]></description><link>https://www.vinthewrench.com/p/chicken-coop-door-installed-and-running</link><guid isPermaLink="false">https://www.vinthewrench.com/p/chicken-coop-door-installed-and-running</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Thu, 26 Mar 2026 23:22:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QxpR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In &#8220;<a href="https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door">A Better Automatic Chicken Coop Door</a>,&#8221; I explained why I scrapped two earlier controllers, walked through the design process, and showed how the new one works. Now it&#8217;s out of the shop, bolted to the coop, and doing real work.</p><p>I have since finished the prototyping in the shop and installed the controller in the mobile coop. What follows are a few photos of the finished installation, a short video of the door in operation, and some command-line setup and log output from the actual system.</p><h3>Installing the Assembly</h3><p>I built the whole assembly on a sheet of <a href="https://www.huberwood.com/advantech/subflooring">23/32-inch AdvanTech</a> so the aluminum guide rails would stay aligned. Once it was dialed in, mounting it to the coop wall was just a matter of driving a bunch of screws, and cutting a hole for the door.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QxpR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QxpR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QxpR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg" width="400" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115226,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/192254870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QxpR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QxpR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F12548444-60b0-4e6a-8e14-bfd9f1770e3f_400x549.jpeg 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><figcaption class="image-caption">Door controller and mechanism installed.</figcaption></figure></div><p>One other small detail: I used a short piece of chain between the actuator and the door, basically like a toilet flapper chain. That gives the linkage a little slack, which helps keep the door from driving hard against anything underneath it, including an unlucky chicken.</p><p>I also built a separate battery box for the power system. It houses the 12-volt battery, a solar charge controller, fuse protection, and the rest of the power wiring in one place. I mounted it outside the coop to make it easier to service and to avoid kneeling around in chicken droppings every time I needed to check or adjust something.</p><p>For the charge controller, I used a Renogy Voyager. It is a small PWM unit with a simple display and basic charge management. It is a bit of overkill for this job.  It is reliable, straightforward to wire, and stupid easy to set up.</p><p>The smaller Wanderer would probably have been a better fit, but I happened to have a few Voyagers sitting around the shop, so one of them went into the battery box.  </p><p>For the panel, I used an <a href="https://www.acopower.com/products/acopower-mono-solar-panel-5w-10w-20w-30w-50w?variant=46405865963772">ACOPOWER 30-watt monocrystalline solar panel</a>. The load is low enough that 30 watts is more than plenty for this system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tGVd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tGVd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tGVd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg" width="500" height="393" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:393,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87315,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/192254870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tGVd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tGVd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a836bc5-b466-4fd8-bb37-0a4344bca3b3_500x393.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Charge controller box and door button</figcaption></figure></div><p>I also mounted the coop door button and LED combo outside in a weatherproof box with a latching cover. That way, if some Wile E. Coyote type comes snooping around after hours, he has to solve at least one extra puzzle before getting access to the chicken banquet. I was prepared to go further with the predator defense plan, but I needed my anvil.</p><h3>The Door in Operation</h3><p>Here is a short video of the coop door in operation after installation. Note the locking solenoid engaging after the door closes.</p><div id="youtube2-R_6dtcWWSAk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;R_6dtcWWSAk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/R_6dtcWWSAk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>Programming the Coop</h3><p>In the earlier article, I mentioned that I added a socket for an optional SparkFun DEV-15096 USB-to-serial module. That gives the controller a simple setup console without needing a display, keypad, or any other nonsense bolted onto the box.</p><p>To configure it, I first made sure the CONFIG/RUN switch was set to CONFIG and hit reset. Then I plugged a USB cable from the module into my laptop and connected with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;f6f3f147-fca5-4c95-8028-705ad5de99fa&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">screen /dev/ttyUSB0 38400</code></pre></div><p>That dropped me straight into the console. On first reset, the controller came up with default settings and complained, correctly, that the time and configuration had not been saved yet: </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;f1f2f213-1b7b-4df2-bc23-9eaa27600c17&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">Chicken Coop Controller 2.9.0
WARNING: CONFIG INVALID, USING DEFAULTS
TIME: NOT SET
Use: set date YYYY-MM-DD
     set time HH:MM:SS AM|PM</code></pre></div><p>The first thing I did was set the clock. The easy way is to set the date first, then type in the next minute mark while watching a real clock and hit Return about a second before it rolls over. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;b64095b1-4a5a-4aea-a6aa-bde503c5a309&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">&gt; set date 2026-03-26
OK
&gt; set time 16:20:50
OK</code></pre></div><p>Then I verified that the RTC had taken the new time and was reporting sane values. In this case, it showed the clock as valid and confirmed that the time had been set just a few seconds earlier:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;707b5f15-82a2-4936-ba3c-09c476679a4c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">&gt; rtc
RTC      : VALID
utc      : 2026-03-26 21:21:12
local    : 2026-03-26 04:21:12 PM
epoch    : 1774560072
since_set: 22 sec (0 days 00:00:22)
</code></pre></div><p>After that, I set the rest of the configuration, including latitude, longitude, time zone, DST handling, and the door and lock timing values, then saved it to EEPROM:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;75a9149b-d78d-4137-a338-5f520e93301f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">&gt; save
OK
&gt;  config
CONFIG (SAVED)

lat  : 34.4653
lon  : -93.3628
tz   : -6
dst  : ON (US rules)
rtc_set_epoch : 1774560050
door_travel_ms : 10000
door_settle_ms : 2000
lock_pulse_ms  : 500
lock_settle_ms : 500
</code></pre></div><p>A quick way to verify that the location, time zone, and DST settings are correct is to check the calculated sunrise and sunset times:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;d4f235c8-915e-4741-958e-08324dce68ba&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">&gt; solar
           Rise        Set
Actual     07:09 AM    07:30 PM
Civil      06:44 AM    07:55 PM</code></pre></div><p>If you forget the commands, you can always prompt the system for help:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;a4aebd76-9a9d-41b2-8460-0facd5af5da0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">&gt; help
Commands:
  help      Show help
  version   Show firmware version
  time      Show current date/time
  schedule  Show schedule
  solar     Show sunrise/sunset times
  set       Configure settings
  config    Show configuration
  save      Commit settings
  device    Show or set device state
  door      Manually control door
  lock      Manually control lock
  event     Event commands
  led       Control door LED
  rtc       Show raw RTC state
  sleep     Sleep til next scheduled event   </code></pre></div><h3>Build Your Own</h3><p>Like all of my projects, this one is already up on GitHub, including the firmware, schematics, and PCB layout.</p><p>The firmware is released under the MIT License, and the hardware design files are published under the CERN-OHL-P v2 open hardware license, so anyone can study it, modify it, and build their own.</p><p>If you build one, drop a photo in the comments. I&#8217;d enjoy seeing how it ends up in somebody else&#8217;s coop.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>.  It is not always electronics. Believe it or not, I have been known to jump from <a href="https://www.vinthewrench.com/p/strawberry-custard-pie">baking</a> to <a href="https://www.vinthewrench.com/p/i-can-smell-you">perfume</a> to <a href="https://www.vinthewrench.com/p/parts-that-dont-suck-part-4">motorcycles</a> without much warning.</p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Parts that don't suck: part 4]]></title><description><![CDATA[Some cool motorcycle stuff that I really like.]]></description><link>https://www.vinthewrench.com/p/parts-that-dont-suck-part-4</link><guid isPermaLink="false">https://www.vinthewrench.com/p/parts-that-dont-suck-part-4</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Thu, 19 Mar 2026 22:50:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7u8R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this week&#8217;s installment of Parts That Don&#8217;t Suck, here are a few things that make it easier to focus on riding rather than screwing around with crappy gear. As I mentioned in <a href="https://www.vinthewrench.com/p/back-in-the-saddle-again">an earlier piece</a>, I ride a KLR650, which is technically an &#8220;adventure bike.&#8221; But then again, riding, especially in Arkansas, always seems to be an adventure.</p><h4>If you got a $10 head, buy a $10 helmet.</h4><p>One of the things about Arkansas is the lax&#8230; or rather, lack of helmet laws, and the people who insist on riding without them. I guess that&#8217;s their call. Me, I like my head, and I&#8217;ve done enough time in EMS to know that even a minor crash without a full-face helmet usually doesn&#8217;t end well.</p><p>But it&#8217;s more than just a safety thing. It&#8217;s about comfort, too. Even a speck of dirt, <em>or in my case a bird</em>, at 60+ mph will get your attention. Not to mention the hearing loss from wind noise.</p><p>This time around, I wanted a full-face helmet with an integrated sun visor, like you&#8217;d find on a fighter pilot&#8217;s helmet. I got tired of screwing around with sunglasses, especially riding into a low-angle sunset. Tinted visors are fine until it gets dark, which is exactly when you don&#8217;t want one on a country road.</p><p>That narrowed things down to just a handful of options. Only a few manufacturers make them that I trust to protect my brain housing group. It&#8217;s a short list.</p><p>I ended up with the <a href="https://shoei-helmets.com/models/gt-air-3/">Shoei GT-Air 3</a>. You get what you pay for with helmets. I&#8217;ve always leaned toward Shoei. They put serious effort into engineering their helmets, and I&#8217;ve seen firsthand how well they perform on the track.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Up8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Up8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Up8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg" width="600" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101103,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191514052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6Up8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6Up8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27467b8c-53fb-40eb-8258-907d2324a555_600x497.jpeg 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><figcaption class="image-caption">Shoei GT-Air 3 Helmet with Pinloc visor</figcaption></figure></div><p>Shoei got a lot of things right. Ventilation and the chinstrap are both done properly, and the helmet feels solid. At about 3.8 pounds, it doesn&#8217;t feel heavy at all. I also like that their <a href="https://shoei-helmets.com/products/helmet-parts/">website</a> offers plenty of accessories and replacement parts, so you can set the helmet up the way you want.</p><blockquote><p>Pro-Tip: You can spend a lot more on custom paint schemes. I&#8217;m not trying to look like I belong at Laguna Seca. I bought the basic model.</p></blockquote><p>One thing I didn&#8217;t expect, or even know about, was the Pinlock&#174; system. It&#8217;s a secondary inner lens that mounts inside the face shield and creates a sealed air gap, which keeps it from fogging up. If you&#8217;ve ever ridden in cold or wet conditions, you know how fast a visor can turn useless. This one doesn&#8217;t.</p><div id="youtube2-dMGagjpCits" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;dMGagjpCits&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/dMGagjpCits?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I&#8217;ve seen similar setups on snowmobile helmets for years, but never on motorcycles.</p><p>The helmet came with the insert. Easy-peasy to install, and once it&#8217;s in, it just works. No sprays, no wiping with your glove, no screwing around.</p><p>And that&#8217;s exactly the kind of thing that makes this helmet not suck.</p><h4>Back Road Equipment Slider Rear Rack</h4><p>One of the problems with riding motorcycles is that you need a way to carry stuff. In spite of what they say about the KLR650, &#8220;that you can fix most things with a rock,&#8221; you still need to carry tools, not to mention first aid gear and maybe a rain suit.</p><p>The stock rear plate was absolutely useless for attaching a bungee cargo net, and I wasn&#8217;t about to spend a lot on <a href="https://www.kawasaki.com/en-us/shop/vehicle-accessories/motorcycle/kl650hnfal/999941866/21-liter-side-case-set">Kawasaki&#8217;s side cases</a>. By the time you&#8217;re done, you&#8217;re into it for real money. So I looked for something simpler.</p><p>Luckily, the folks at <a href="https://www.backroadequipment.com/">Back Road Equipment</a> had a much better solution. They make a slider rear rack system that solves the problem without overcomplicating it. It&#8217;s a pretty cool design, if you ask me. You can secure a Pelican case to it, lock it in place, and still remove it easily when you need to.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7u8R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7u8R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7u8R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg" width="600" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145918,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191514052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7u8R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7u8R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9c78b2-df69-41eb-867a-38d93bb3f949_600x496.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Back Road Equipment rear slider rack</figcaption></figure></div><p>The best part is that it costs just a little over $150, and you don&#8217;t have to dish out big bucks for a Pelican box. A $40 <a href="https://www.harborfreight.com/3800-weatherproof-protective-case-large-orange-56766.html">Harbor Freight clone</a> works just fine, and you can always <a href="https://www.backroadequipment.com/how-to-choose-the-best-case-for-your-application/">step up to a larger one</a> if you need to.</p><p>One more thing about the Harbor Freight case. I don&#8217;t know who thought it was a good idea to plaster it with that many stickers and labels (<em><a href="https://www.thoughtco.com/dantes-9-circles-of-hell-741539">Dante</a></em><a href="https://www.thoughtco.com/dantes-9-circles-of-hell-741539"> </a><em><a href="https://www.thoughtco.com/dantes-9-circles-of-hell-741539">probably had a special circle set aside just for them</a></em>), but I spent over an hour with solvents getting them off.</p><p>Installation is straightforward. <a href="https://www.backroadequipment.com/wp-content/uploads/2024/07/puck_location_pdf-1.pdf">Drill four holes in the case</a>, install the slider pucks, and don&#8217;t forget a little silicone to keep it watertight.   </p><p>You might find that after removing the Kawasaki stock rear plate, a set of alignment drifts comes in handy for aligning the slider plate.</p><p>One more thing before I move on: Back Road Equipment&#8217;s customer service was great. The owner called me, helped straighten out my order, and shared a few installation and usage tips.</p><div id="youtube2-Fsl0k8YfYSE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Fsl0k8YfYSE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Fsl0k8YfYSE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>How about a Light Switch That Doesn&#8217;t Suck</h4><p>When I bought the bike, I got a great deal on Kawasaki&#8217;s LED auxiliary lights. The lights themselves are reasonable (did I say I got a good deal). The stock switch on the dash, however, is an unbelievably bad user experience.  They stuck it up on the cowling next to the gauges, where it&#8217;s awkward and flat-out unsafe to reach.</p><p>I don&#8217;t know what Kawasaki was thinking. This doesn&#8217;t feel like something the core engineers would sign off on. More likely some regulatory requirement turned it into a piss-poor design.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_tCo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_tCo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 424w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 848w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 1272w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_tCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png" width="430" height="157" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:157,&quot;width&quot;:430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14114,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191514052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.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_!_tCo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 424w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 848w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 1272w, https://substackcdn.com/image/fetch/$s_!_tCo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf4176fc-35df-4947-93a6-776101dfeb4c_430x157.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">possibly the dumbest place to put a switch</figcaption></figure></div><p>So I did what I always do. I got out my tools and modified it to make it work right.  </p><p>A much better place for the switch is right next to the light and horn controls on the left handlebar, where your thumb can hit it without taking your hand off the grip.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ODuc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ODuc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ODuc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg" width="600" height="377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:377,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99763,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191514052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ODuc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ODuc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff006fcef-4868-4bf6-9e2d-a4dd38b11e32_600x377.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After a few minutes of digging around online, I found exactly what I needed, <a href="https://www.amazon.com/dp/B09BYW417Y?th=1">a simple handlebar-mounted switch</a>. It was even illuminated.  </p><p>This would have been a five-minute job with some hand tools and a soldering iron, if it weren&#8217;t for the wonky way Kawasaki mounted their switch. I had to remove a good chunk of the cowling just to get to the screws they hid behind the switch assembly. But I persevered, and after a few knuckle scrapes, Kawi&#8217;s design was just a faded memory.  </p><h3>Make It Your Own</h3><p>Half the fun of owning a motorcycle is making it your own and setting it up the way you like. That&#8217;s how you end up with something that&#8217;s actually yours.</p><p>Mine just happens to have a <a href="https://www.vinthewrench.com/p/ai-maker-tools-and-a-rabbit-with">pissed-off bunny</a> sticker on it. But that&#8217;s me.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R6z4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R6z4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 424w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 848w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 1272w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R6z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png" width="200" height="232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:232,&quot;width&quot;:200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191514052?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.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_!R6z4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 424w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 848w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 1272w, https://substackcdn.com/image/fetch/$s_!R6z4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24166c2c-7c6b-429f-886f-7b0103cb7bfd_200x232.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p> As I say in each of these pieces, there are no sponsorships here. Don&#8217;t ask for one. No affiliate links. No favors. I&#8217;m pretty sure most of these companies have never heard of me, and that&#8217;s fine. I&#8217;m writing about these parts because they earned their place in my shop by working, not because anyone asked or paid for it.</p><div><hr></div><p>If you like building things, and sometime doing a better job than the manufacturer, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write</a>. Sharing it helps real people find the work. The algorithm can go take a hike.</p>]]></content:encoded></item><item><title><![CDATA[Strawberry Custard Pie]]></title><description><![CDATA[A Quick Dessert Project for a Guest Visit]]></description><link>https://www.vinthewrench.com/p/strawberry-custard-pie</link><guid isPermaLink="false">https://www.vinthewrench.com/p/strawberry-custard-pie</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Mon, 16 Mar 2026 23:35:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c-qb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c-qb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c-qb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c-qb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg" width="600" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138006,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191192249?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c-qb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c-qb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3021195e-2dbe-4276-b171-f59a9bf9356a_600x452.jpeg 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>I had a guest visit the other day, and I asked what their preference for dessert might be. They suggested strawberry rhubarb pie. Unfortunately, rhubarb was out of season, so that idea was off the table.</p><p>Instead, I went with what I had on hand and put together a <strong>Fresh Strawberry Custard Pie</strong>. It turned out to be a real hit and didn&#8217;t leave much in the way of leftovers.</p><p>The combination of a simple butter crust, vanilla custard, and fresh strawberries worked beautifully.  Most of my recipes are improvisation anyhow.</p><p>I&#8217;m sharing the recipe here partly because friends asked for it, and partly so I have it written down somewhere sensible. I&#8217;ve learned that if I don&#8217;t write it down, it&#8217;s lost forever.</p><p>So this is both a recipe and a small act of documentation for future me.</p><h4>Pie Crust Ingredients</h4><p>This is a derivative of the crust I used in my <a href="https://www.vinthewrench.com/p/a-different-kind-of-pi-project">Apple Pie</a> project.  </p><p>One thing I did change this time was the flour. For this batch I used flour made from <strong><a href="https://www.azurestandard.com/shop/product/food/grains/wheat/soft-white-wheat-berries/soft-white-wheat-organic/11650?package=GR120">Azure Market Organic Soft White Wheat Berries</a></strong>.</p><p>We picked up a <a href="https://www.amazon.com/dp/B08N16CT2Y">grain mill from Amazon</a> a while back and started grinding and sifting our own flour. Fresh-milled flour behaves and tastes a little different than store-bought flour. It has a slightly nutty flavor and a bit more character. After grinding, we sift the flour to remove some of the coarser bran so the crust stays light rather than heavy.</p><p>You can substitute <a href="https://www.bobsredmill.com/product/organic-all-purpose-unbleached-white-flour">Bob&#8217;s Red Mill Organic Unbleached White All Purpose Flour</a> if you don&#8217;t want to go through the process of grinding and sifting your own flour.</p><ul><li><p>2 1/2 cups, organic ground white flour</p></li><li><p>1 cup, <a href="https://www.azurestandard.com/shop/product/food/dairy/butter/sweet-cream/unsalted/butter-unsalted-organic/19626">Rumiano organic unsalted butter</a> </p></li><li><p>1/2 teaspoon, <a href="https://www.azurestandard.com/shop/product/food/baking-pantry/salt/sea/celtic-sea-salt-fine/7054?package=BP112">Sea Salt</a></p></li><li><p>1 tablespoon, Granulated sugar</p></li><li><p>5&#8211;6 tablespoons ice water</p></li></ul><p>Cut the butter into small &#8540;" cubes using a <a href="https://www.amazon.com/pastry-cutter/s?k=pastry+cutter">pastry cutter</a>.  Combine the flour, sugar, salt, and butter in a bowl and work it together with the pastry cutter until the butter is broken into small pieces.</p><p>Avoid the food processor if you can. It works, but using a pastry cutter is just as effective and a lot easier to clean up afterward.</p><p>Add the ice water a tablespoon at a time, mixing gently with a fork or pastry cutter. </p><p>What you&#8217;re aiming for is a <strong>coarse, crumbly mixture</strong> with little pea-sized bits of butter coated in flour. That texture is what produces a tender crust.</p><p>If the dough starts looking smooth or pasty, you&#8217;ve gone too far and overworked it. The goal is for the dough to <strong>just come together</strong>, not turn into a uniform paste. </p><p>Occasionally I&#8217;ll put the mixture in the refrigerator or freezer for a few minutes to keep the butter cold before continuing. Keeping the butter firm helps the crust bake up tender and flaky.</p><p>When you are ready, put some flour down on your work surface and roll the dough out just thick enough to line the pie tin. At that point I put the prepared pie tin into a large Ziploc bag and placed it in the refrigerator until I finished preparing the custard.</p><h4>Blind Bake the Crust</h4><p>The crust was blind baked. I lined it with parchment and filled it with &#8220;pie weights,&#8221; in my case a jar of old black beans. The point is to weigh the dough down so it doesn&#8217;t bubble or shrink while the fat melts and the structure sets. </p><ol><li><p>Roll the dough and line the pie tin with the crust.</p></li><li><p>Cover with parchment + pie weights or beans</p></li><li><p>Preheat to 350&#176;F </p></li><li><p>Bake 20 minutes at 350&#176;F</p></li><li><p>Remove the weights and parchment</p></li><li><p>Bake again uncovered 10&#8211;15 minutes more</p></li><li><p>optional -  beat one egg white and brush a thin layer on the hot crust </p></li><li><p>Put it back in the oven <strong>2 minutes</strong></p></li><li><p>Let the shell cool <strong>20&#8211;30 minutes</strong> before adding custard.</p></li></ol><h4>Prepare the custard</h4><p>For the custard I used the same formula from my <a href="https://www.vinthewrench.com/p/a-tart-is-always-a-pie-but-a-pies">Fruit Tart project</a>.</p><ul><li><p>3 tablespoons flour</p></li><li><p>2 tablespoons arrowroot</p></li><li><p>&#189; cup granulated sugar</p></li><li><p>&#188; teaspoon sea salt</p></li><li><p>2 eggs (fresh from my chickens)</p></li><li><p>2 cups pasteurized milk</p></li><li><p>1 tablespoon unsalted butter</p></li><li><p>1 vanilla bean, split and scraped</p></li><li><p>Zest of one lemon and one orange, with a little juice from each</p></li><li><p>A small amount of gelatin, bloomed and added later for extra set</p></li></ul><ol><li><p>In a medium bowl I whisked together the flour, arrowroot, sugar, salt, and eggs until it looked smooth and lump-free.</p></li><li><p>In a saucepan I heated the milk and butter with the lemon and orange zest and the scraped-out vanilla bean (pod and all) just until it was steaming but not boiling.</p></li><li><p>Temper the eggs. I slowly drizzled a ladle of the hot milk into the egg mixture while whisking like mad. The goal is to bring the eggs up to temp gently so they don&#8217;t scramble later.</p></li><li><p>Then I poured the warmed egg mix back into the saucepan with the rest of the hot milk, still whisking. This is also a good time to fish out the vanilla pod.</p></li><li><p>I cooked it over medium heat, stirring constantly, until it thickened enough to coat the back of a spoon, about 170 to 175 &#176;F if you check. Don&#8217;t let it boil hard or you&#8217;ll destroy it.</p></li><li><p>Turn off the heat.</p></li><li><p>For extra insurance, I bloomed a little gelatin in cold water, then stirred it into the hot custard until fully melted.</p></li><li><p>I scooped the custard into a glass bowl and pressed plastic wrap directly onto the surface to keep a skin from forming. Let it cool on the counter for a while, then place it in the refrigerator for <strong>1&#8211;2 hours</strong> until it is cool to the touch and fully set, roughly <strong>below 70 &#176;F</strong>, before filling the pie.</p></li></ol><h4>Assemble the Pie</h4><p>Once the custard is fully chilled and the pie shell has cooled, it&#8217;s time to assemble the pie. Spoon the custard into the baked pie shell and spread it evenly with a spatula. The filling should be thick enough to hold its shape but still spread smoothly.</p><p>Level the surface and return the pie to the refrigerator for about <strong>20&#8211;30 minutes</strong> to firm up slightly. This helps keep the strawberries from sinking when you arrange them.</p><p>Once the custard is set, the pie is ready to decorate with fresh strawberries. I sliced the tops off, cut the berries vertically, and arranged them in circular layers, working from the outside toward the center.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nfGp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nfGp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nfGp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg" width="600" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133808,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/191192249?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nfGp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nfGp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d733528-e479-4f56-a96d-1e6246cc7348_600x496.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That&#8217;s all there is to it. A simple crust, a straightforward custard, and a pile of fresh strawberries arranged on top.</p><p>It started as a substitute for strawberry rhubarb pie, but it turned out to be a pretty good dessert on its own. Sometimes cooking works that way. You aim for one thing, and circumstance pushes you somewhere else.</p><p>The result was good enough that it&#8217;s worth writing down so I can make it again without reinventing it. And if someone else happens to try it and enjoy it too, all the better.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Sometimes I even write about things that are yummy.</p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[I can smell you]]></title><description><![CDATA[Perfume once smelled like people. Now it smells like soap.]]></description><link>https://www.vinthewrench.com/p/i-can-smell-you</link><guid isPermaLink="false">https://www.vinthewrench.com/p/i-can-smell-you</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Mon, 16 Mar 2026 19:59:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B0_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Humans smell like humans. Or at least they used to.</p><p>For most of human history those smells were simply part of being alive. They whispered things about health, attraction, and who you were. Long before science began talking about pheromones, people were already responding to those signals without realizing it.</p><p>Perfumers understood this long before they understood the chemistry. Classic perfumes were built to cooperate with the body rather than fight it. Ingredients like musk, civet, leather, and oakmoss produced warm, slightly animalic notes that echoed the chemistry of human skin. They mingled with the wearer&#8217;s natural scent and deepened it. A good perfume didn&#8217;t erase the body. It amplified it.</p><p>And for a long time that was how perfume worked.</p><p>But somewhere along the way we got lost. Now many modern perfumes try to bury the body beneath the smell of clean laundry and soap.</p><p>So how did we get so far off track?</p><h3>The Biology of Human Scent</h3><p>The way people smell to us begins in chemistry and ends in emotion.</p><p>Smell is unusual among the senses because it connects directly to some of the brain&#8217;s oldest structures, such as the amygdala and hippocampus, which shape emotion, memory, and desire. Signals from the nose reach these areas without first passing through the slower analytical parts of the brain. </p><p>In that sense, smell bypasses the careful rational mind and lands somewhere deeper. That is why a scent can trigger a memory instantly, or make someone seem suddenly familiar, intriguing, or irresistible.</p><p>A big part of that scent comes from chemicals our bodies make from sex hormones. Those steroid molecules seep out through sweat and skin oils, and bacteria on our skin break them down into smaller volatile compounds that drift into the air around us.</p><p>Our skin is constantly releasing other molecules as well, derived from fatty acids and normal metabolism. As they reach the surface, bacteria transform many of them into airborne compounds that give each person a scent that is subtly unique.</p><p>Some of the most interesting of these molecules originate from androgen hormones such as testosterone, tied to the chemistry of attraction and social recognition. The human nose is remarkably sensitive to them.</p><p>A smell can trigger a vivid memory, a feeling of comfort, or an instinctive sense that someone is appealing or familiar before we have time to explain why.</p><p>And this is why <strong>scent can sometimes cause emotion to override rational judgment</strong>. </p><p><em><a href="https://www.youtube.com/watch?v=YY9iVKQPeXA">Do you know what I mean</a><strong><a href="https://www.youtube.com/watch?v=YY9iVKQPeXA">.</a></strong></em></p><h3>The Man Who Took Perfume Apart</h3><p>Years ago, while I was digging into perfume, I came across one of the most interesting books ever written about smell: <em>The Emperor of Scent</em>. Reading it sent me down a rabbit hole that eventually became the impetus for this article.</p><p>It tells the story of Luca Turin, a biophysicist who wandered into the perfume world and started asking questions that nobody there seemed comfortable answering.</p><p>For decades the official scientific explanation of smell had barely changed. The prevailing theory claimed that odor came from the shape of molecules fitting into receptors in the nose like a lock and key. As the saying goes, the science was settled.</p><p>Turin wasn&#8217;t convinced.</p><p>He proposed something very different. Instead of shape alone, he argued that smell might depend on the way molecules vibrate. If that were true, scent would no longer be something discovered slowly through intuition and experimentation. It could be understood, predicted, and deliberately constructed.</p><p>The reaction from both the academic world and the perfume industry was closer to panic than curiosity. Academics had built careers on the lock-and-key theory, while perfumers guarded their formulas in private notebooks and trade secrets, passed down through apprenticeships and quiet tradition.</p><p>At one point Turin&#8217;s work was submitted to <em>Science</em>, supposedly one of the most prestigious journals in the world. What followed was a demonstration of how peer review can behave when a theory threatens the status quo. </p><p>There was no open debate, no careful testing of the evidence. The paper was handed to reviewers who treated the idea as something to eliminate.  It wasn&#8217;t argued against. It was quietly buried.</p><div class="pullquote"><p>&#8220;It&#8217;s a big club, and you ain&#8217;t in it.&#8221; &#8212; George Carlin</p></div><p>But if Turin was right, his theory had the potential to disrupt the entire industry. What had once been the guarded knowledge of a few master perfumers might now, in an age of ubiquitous AI and modern chemistry, be analyzed, reconstructed, and reproduced by a determined experimenter working in a small lab.</p><p>Imagine a device that could read molecular vibrations and display them the way a modern SDR program reveals the radio spectrum, turning invisible signals into a visible pattern of frequencies. </p><p>Once scent could be seen that way, recreating it would no longer be guesswork. It would just be engineering.</p><h3>When Perfume Was Intoxicating (1920s&#8211;1960s)</h3><p>Let&#8217;s step back to the early twentieth century, when perfume was something entirely different.</p><p>Air conditioning was rare. Washing machines were still spreading into homes. Most people did real work and walked long distances every day. Cities smelled stronger. Streetcars rattled past open windows. People smelled stronger too. Bars, dance halls, and crowded restaurants filled the air with cigarette smoke, wool coats, leather jackets, perfume, and sweat.</p><p>Music was louder and the rooms were packed. Big band and early jazz poured out of dance halls and bars where people crowded shoulder to shoulder. The energy there came from the same place as the music itself: people working hard, living independently, and not worrying about sanding life&#8217;s rough edges. As it was once explained to me, in hard years, especially during wartime, people gathered in places like that to forget their troubles for a few hours and feel alive again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6qu1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6qu1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 424w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 848w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 1272w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6qu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp" width="300" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:15532,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190958027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6qu1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 424w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 848w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 1272w, https://substackcdn.com/image/fetch/$s_!6qu1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772faf38-993d-4587-9a5b-450fdb05a14f_300x400.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Crowded dance floors, loud music, and bodies moving close together. Perfume was made for nights like this.</strong></figcaption></figure></div><p>That older world was also less afraid of the physical realities of life. The human body was simply part of the landscape, not something that had to be constantly managed or sanitized away. The smells of work, movement, and proximity were ordinary parts of daily life. </p><p>In that world, perfumes were not meant to hide the body but to mingle with it and amplify it&#8217;s natural smells.</p><p>One of the most famous perfumes of that era was <strong><a href="https://blog.delacourte.com/en/chanel-n-5-perfume/">Chanel No. 5</a></strong>. When it appeared in 1921 it was unlike anything people had smelled before. Bright aldehydes gave it a sparkling, almost champagne-like opening, but underneath was a deep base of musks, woods, and animalic notes that bloomed as the perfume settled into the warmth of the body. What began polished and elegant slowly turned warm and quite intoxicating.</p><p>Then there was <strong>Bandit</strong>. If Chanel No. 5 was elegance, Bandit was the woman in the red dress you couldn&#8217;t ignore.  It opened sharp and green with galbanum, then settled into leather, oakmoss, patchouli, and vetiver. One spray could fill a room. On skin it became darker and more sensual, the kind of perfume that seemed to grow warmer as the night went on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B0_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B0_4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 424w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 848w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 1272w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B0_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png" width="450" height="368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:368,&quot;width&quot;:450,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:326742,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190958027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.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_!B0_4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 424w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 848w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 1272w, https://substackcdn.com/image/fetch/$s_!B0_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93cbe382-6b06-41f6-b013-4cde457c9d0b_450x368.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Then there was <strong><a href="https://stjohnsbayrum.com/pages/st-johns-fragrance-company-full-story">Bay Rum</a></strong>. For generations barbers splashed it on after a shave, a spicy blend of bay leaf, rum, and warm Caribbean spices. It opened sharp and bracing, then settled into something deeper as it warmed. Imagine it for a moment. It was a scent that seemed to amplify the warm chemistry of skin, sweat, and testosterone.</p><p><strong>Note:</strong> Many of these fragrances have been reformulated over the years, and modern versions smell quite different from the originals people knew in those earlier decades. From time to time original bottles still surface in vintage fragrance markets and online auctions.  </p><p>Even as the counterculture of the 1960s reshaped music, fashion, and social life, perfume still played by those same rules.  It was meant to meet the body, not erase it.</p><h3>When the Dance Floor Was Hot (1970s)</h3><p>By the 1970s the music had changed, but the atmosphere hadn&#8217;t. The big bands were gone, replaced by funk, soul, and disco, but people still gathered in the same way: crowded rooms, packed dance floors, bodies moving together in the heat.</p><p>Disco clubs were loud, dark, and alive. Lights flashed across mirrored walls and spinning balls overhead. The air was thick with cigarette smoke, sweat, and perfume.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O69I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O69I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 424w, https://substackcdn.com/image/fetch/$s_!O69I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 848w, https://substackcdn.com/image/fetch/$s_!O69I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 1272w, https://substackcdn.com/image/fetch/$s_!O69I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O69I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif" width="397" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:397,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10171,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/avif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190958027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O69I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 424w, https://substackcdn.com/image/fetch/$s_!O69I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 848w, https://substackcdn.com/image/fetch/$s_!O69I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 1272w, https://substackcdn.com/image/fetch/$s_!O69I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7be50068-9b6b-40a6-be72-bada1ccc3da8_397x390.avif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">In the crowded discos of the 1970s, perfume had to be strong enough to command attention.</figcaption></figure></div><p>One of the defining scents of the era was <strong><a href="https://www.townandcountrymag.com/style/beauty-products/a36548790/halston-perfume-history/">Halston</a></strong>, a deep chypre built around oakmoss, patchouli, amber, and woods. Warm, rich, and unmistakable, it had the kind of presence that could cut through the smoke and heat of a crowded club.</p><p>Then there was <strong><a href="https://29secrets.com/beauty/the-story-of-yves-saint-laurents-opium-perfume/">Opium</a></strong>. Dark, spicy, and full of resins and woods, it carried enormous weight. A single spray lingered in the air and grew warmer as the night went on.</p><p>For men, <strong><a href="https://basenotes.com/threads/paco-rabanne-pour-homme-the-early-days-1973-1981.364790/">Paco Rabanne Pour Homme</a></strong> captured the same spirit.  Built on a classic foug&#232;re structure of lavender, oakmoss, herbs, and woods, it was bold, masculine, and impossible to miss. Like the other fragrances of the era, once it warmed up it carried easily through crowded rooms.</p><h3>When Perfume Got Loud (1980s)</h3><p>By the 1980s, disco had faded, replaced by drum machines, synthesizers, and a harder electronic sound that pulsed through the clubs.</p><p>The atmosphere had changed too. Leather jackets and pants, aerosol hair spray, cigarette smoke, and sweat thickened the air. The rooms were still hot and crowded, but the style was bigger, bolder, and more theatrical.</p><p>In a decade that celebrated ambition and spectacle, fragrances grew louder and more dramatic. They no longer lingered quietly on the body. They filled the room.</p><p>One of the defining perfumes of the era was <strong><a href="https://www.fragrantica.com/perfume/Dior/Poison-218.html">Poison</a></strong>. It was unmistakable. Dense and dramatic, it opened with a rich sweetness before unfolding into dark spices, resins, and woods. In a crowded bar it could announce itself long before the woman wearing it entered the room.</p><p>Then there was <strong><a href="https://www.fragrantica.com/perfume/Giorgio-Beverly-Hills/Giorgio-1889.html">Giorgio Beverly Hills</a></strong>. It was also impossible to ignore, but in a different way. Built around huge white florals like tuberose and jasmine layered over woods and musk, it was bright, bold, and incredibly strong. Department stores had to move the display near the entrance because the scent filled the entire floor.  What began as a sharp burst of flowers slowly settled into a warm musky sweetness that lingered long after the wearer had gone.</p><p>Then there was <a href="https://www.reddit.com/r/fragrance/comments/9b6fsf/chandler_burr_on_the_history_of_drakkar_noir/">Drakkar Noir</a>. For many men in the 1980s it was the scent of the night. Built on a dark foug&#232;re structure of lavender, oakmoss, herbs, woods, and leather, it was sharp, masculine, and unmistakable. It projected strongly at first, then deepened into something darker and slightly smoky as the hours passed.</p><p>Giorgio Beverly Hills was the blonde in the spotlight, bright, glamorous, and impossible to ignore. Poison was that mysterious, dangerous dark-haired woman you kept noticing across the room. And Drakkar Noir was the guy leaning on the bar who simply owned the place.</p><h3>We Lost the Scent (1990s)</h3><p>Then sometime in the 1990s something strange happened. Perfume stopped smelling like people and started smelling like laundry soap.</p><p>Instead of blending with the scent of the body, fragrances began trying to erase it. In many cases they were chemically indistinguishable from the fragrances used in detergents and fabric softeners.</p><p>The culture around them had changed too. The sweaty glamour of disco and the loud excess of the 1980s gave way to a cooler, more restrained style shaped by grunge and early hip-hop. The new look was neutral, understated, and often deliberately androgynous.</p><p><strong>CK One</strong> (Calvin Klein) became one of the defining perfumes of the 1990s. Light, bright, and deliberately clean, it rejected the old idea that perfume should warm and deepen on skin.  <strong>Rather it smelled like soap.</strong></p><p>CK One was marketed as unisex, meant for men and women alike. The bottle looked almost clinical, like a laboratory flask, and the advertising followed the same idea. Black-and-white photographs of young people in plain jeans and T-shirts replaced the glamorous perfume ads of earlier decades.</p><p>The goal was no longer warmth or sensuality but cleanliness. The culture stopped celebrating the body and started sanitizing it.</p><h3>The Detergent Economy</h3><p>At the same time something else was happening behind the scenes. The same fragrance companies that designed luxury perfumes were also designing scents for detergents, shampoos, deodorants, and household cleaners.</p><p>Those products were produced in enormous volumes, far larger than the perfume market. Their fragrances had to be inexpensive, chemically stable, and able to survive heat, water, and months on a store shelf.</p><p>Traditional perfumes relied on complex natural materials such as <strong>oakmoss, animalic musks, resins, and woods</strong> that created deep, warm bases designed to interact with the chemistry of skin.</p><p>Industrial products needed something different. The fragrance industry began building scents from a smaller palette of synthetic musks that were cheap, durable, and easy to reproduce.</p><p>One of the molecules that quietly took over was Galaxolide. It had the soft, smooth smell many people associate with freshly washed fabric. Chemically it is a large, bulky hydrocarbon ring packed with methyl groups, a structure that makes the molecule unusually stable, resistant to oxidation, and able to survive heat, water, and long storage without breaking down.</p><p>That made it perfect for detergents and fabric softeners, surviving the washing machine and clinging to clothing while leaving behind the lingering scent advertisers called &#8220;clean,&#8221; though it was really just the smell of the chemicals themselves.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s3j3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s3j3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 424w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 848w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 1272w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s3j3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png" width="400" height="281" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:281,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:208813,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190958027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.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_!s3j3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 424w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 848w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 1272w, https://substackcdn.com/image/fetch/$s_!s3j3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77301118-11b0-40d9-a2f8-5344aaf6a4a3_400x281.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Is this what people smell like?</figcaption></figure></div><p>Over time the industry effectively brainwashed people into associating that chemical scent with cleanliness. Clothes washed in detergents smelled that way, and towels and even homes cleaned with modern products carried the same scent. After years of repetition people began to accept that chemical smell as the very definition of clean.</p><p>Eventually the same molecules began appearing in perfumes, and the smell of laundry moved from the washing machine into the fragrance bottle.</p><blockquote><p><strong>Side note:</strong> It can be argued that regulation also played a part in pushing the industry away from many traditional perfume materials. European regulators began restricting ingredients such as oakmoss after reports of allergic reactions in patch tests. Critics argued that many of those tests focused on people who already had skin sensitivities, producing numbers that looked far more alarming than what most people experienced in everyday life. </p></blockquote><p></p><blockquote><p>Personally, I suspect many more people react to the modern chemistry that replaced those materials. Synthetic musks such as Galaxolide, along with additives derived from corn and other industrial feedstocks, appear in a wide range of modern cleaning products. They are everywhere, in detergents, household cleaners, and personal care products, washing down our drains and circulating through wastewater systems, rivers, and even parts of the water supply.</p></blockquote><h3>The Rebellion</h3><p>Not everyone accepted the new world of soap-clean fragrance. A handful of modern perfumers began pushing back, bringing back the musks, woods, and animalic notes that older perfumes once wore proudly.</p><p>One of my favorites is the French house <a href="https://www.etatlibredorange.com/pages/the-brand">&#201;tat Libre d&#8217;Orange</a>, which deliberately builds fragrances around the very smells modern perfumery tried to erase.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsBt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsBt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg" width="300" height="301" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:301,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35043,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190958027?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bsBt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bsBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F575c5113-a41e-44bb-bd59-5fa3c7f5dc33_300x301.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One example is <em><strong>Fat Electrician</strong></em>. Despite the absurd name, it is built around vetiver, woods, and creamy resins that come alive the way older perfumes once did. It smells human and slightly worn in, not freshly laundered.</p><p>Then there is <em><strong>S&#233;cr&#233;tions Magnifiques</strong></em>. That one goes much further. It deliberately references the metallic, salty, bodily notes associated with skin, sweat, and intimacy. The reviews are legendary. Some people love it. Others say it is revolting. It was designed to shock people, but also to remind them of something modern perfume had tried to forget. The human body has a smell.</p><h3>The Smell of Being Human</h3><p>Perfume once amplified the scent of a living body. It warmed on skin, mixed with breath and sweat, and slowly became something uniquely human.</p><p>Somewhere along the way modern culture decided to replace that complexity with the smell of soap.</p><p>Scent is one of the oldest languages we have. Long before words, it told us who was near, who was healthy, who we were drawn to. A scent can make someone seem warm, mysterious, familiar, or irresistible before a single word is spoken. It binds memory, attraction, and emotion together in ways we barely understand.</p><p>When perfume forgets the body and starts smelling like laundry, it isn&#8217;t just a change in style. It is a retreat from the chemistry that once made scent feel alive.</p><p>In the name of cleanliness we traded warmth for sterility and passion for safety.</p><p>But without passion, emotion, and a little danger, are we even alive?</p><p>In a world increasingly mediated by artificial intelligence, simulated images, and conversations held through glass screens, we are drifting away from the concept of physical presence. We forget what it means to stand close to another person, to flirt, to share the invisible signals our bodies constantly send.</p><p>Perfume once spoke that language.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Sometimes I even write about why things stink.</p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[The Illusion of AI Wisdom]]></title><description><![CDATA[Why LLMs Failed Me Debugging a Design and What That Says About Their Limits]]></description><link>https://www.vinthewrench.com/p/the-illusion-of-ai-wisdom</link><guid isPermaLink="false">https://www.vinthewrench.com/p/the-illusion-of-ai-wisdom</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Tue, 10 Mar 2026 22:18:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lZL_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lZL_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lZL_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lZL_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg" width="400" height="562" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:562,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60863,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190205786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lZL_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lZL_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1761649-e7ec-450a-97c9-648a7b5419e2_400x562.jpeg 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><figcaption class="image-caption">&#8220;Vinnie&#8217;s doing another rant on AI&#8221;</figcaption></figure></div><blockquote><p><strong>User:</strong> Is this mushroom edible?</p><p><strong>LLM:</strong> Yes, that mushroom is edible.</p><p><strong>User:</strong> I just ate it and now I&#8217;m vomiting.</p><p><strong>LLM:</strong> Thank you for pointing that out. That mushroom is actually poisonous. Would you like to know more about edible mushrooms?</p></blockquote><p>In a recent article about <a href="https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door">building a better chicken coop door</a>, I mentioned that I tried to use Grok and GPT for component recommendations.  Both of them gave answers that sounded confident, detailed, and completely reasonable. And <strong>both of them were also dead wrong</strong>.</p><p>That experience made me curious. Large language models (LLMs), often lumped together under the label &#8220;AI,&#8221; often produce explanations that read as if they were written by someone who knows exactly what they&#8217;re talking about. Yet when you dig into the details, the recommendations can turn out to be flawed, misleading, or sometimes entirely fabricated.</p><p>To understand why that happens, it helps to step back and look at what these systems actually are, and just as importantly, what they are not. </p><p>To start with, despite all the hype, these systems are not intelligent. What they are is extremely sophisticated statistical pattern matchers. Trained on enormous amounts of human text, they learn the statistical relationships between words, phrases, and ideas.</p><p>When you ask a question, they are not reasoning through the problem or looking up a verified answer.  Rather, they produce a response that statistically resembles the kinds of answers humans have written before.</p><p>The result might feel insightful and authoritative. But here&#8217;s the key point: </p><p>It doesn&#8217;t <strong>know</strong> the answer.</p><p>It knows <strong>what answers usually look like.</strong></p><p>But sounding correct and being correct are two very different things. </p><p><strong>Let that sink in for a minute.</strong></p><p>I could give a few examples, but you probably already have plenty of your own.</p><h3>LLMs:  The Internet&#8217;s Bullshit Generator</h3><p>That phrase may sound a bit harsh, but it&#8217;s actually quite accurate, especially in light of what philosopher <a href="https://www.math.mcgill.ca/rags/JAC/124/bs.html">Harry Frankfurt wrote in his essay </a><em><a href="https://www.math.mcgill.ca/rags/JAC/124/bs.html">On Bullshit</a></em>.  (I&#8217;m not making this up.) Frankfurt draws an important distinction between lying and bullshit. A liar knows the truth and deliberately tries to conceal it. A bullshitter is different. The bullshitter simply doesn&#8217;t care whether something is true or false. The goal is not accuracy, but persuasion. The only goal is to produce something that sounds convincing.</p><p>That description turns out to fit large language models surprisingly well.</p><p>By design, an LLM isn&#8217;t trying to deceive you. It isn&#8217;t trying to tell the truth either. In fact, it has no concept of truth at all.  Its only objective is to generate text that statistically resembles the kinds of answers humans tend to produce.</p><p>If the response sounds plausible, structured, and authoritative, then from the model&#8217;s perspective it has done its job.</p><p>Which is why if you train a system to produce text that <em>sounds right</em>, you should not be surprised when it sometimes produces answers that sound perfectly reasonable but are completely wrong.</p><h3>It&#8217;s all about the training</h3><p>Training a large language model can be broken down into a few steps:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PAtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PAtL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PAtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg" width="500" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68207,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190205786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PAtL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PAtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a3c4d36-106f-493a-8ffd-141e97e97aef_500x375.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 1. Collect a huge amounts of text</h4><p>The first step in training a large language model is gathering an enormous amount of written material. This includes books, articles, documentation, forums, source code, and large portions of the public internet. </p><p>The goal is not to teach the system facts. The goal is simply to expose it to as many examples of human writing as possible. The more text the system sees, the more patterns it can learn about how language works and how people tend to explain things.</p><p>Some of that writing is careful and well thought out.  Some of it is sloppy, biased, or simply wrong.   The LLM doesn&#8217;t know the difference between  the Good, the Bad and the Ugly.  It doesn&#8217;t care; it just learns the patterns in whatever you feed it.</p><blockquote><p>This is a key point.  The LLM model is basically a statistical mirror of the text it was trained on. If the internet contains good explanations, bad explanations, arguments, opinions, and outright nonsense, the model will learn patterns from all of it.</p></blockquote><h4>Step 2. Break the text into tokens</h4><p>Before the model can learn from the text, the words have to be converted into a form the computer can process.  So the text is broken into small pieces called <em>tokens</em>. A token might be a whole word, part of a word, or a piece of punctuation.</p><p>Take this sentence:</p><blockquote><p>&#8220;The chicken coop door uses a linear actuator.&#8221;</p></blockquote><p>This is broken into tokens that represent words and punctuation. Each token is then converted into a number that the model can work with.</p><h4>Step 3. Learn to predict the next word</h4><p>Once everything is turned into numbers, the system can start learning patterns in how those tokens tend to appear together.</p><p>The model is shown a sequence of tokens and asked to predict what token should come next. It does this over and over again across massive amounts of text.</p><p>or example, the model might see something like:</p><blockquote><p>&#8220;The chicken coop door uses a 12 volt ...&#8221;</p></blockquote><p>Based on patterns it has learned, it tries to guess the next word. It might predict something like: </p><blockquote><p>&#8220;motor&#8221;</p></blockquote><p>If the guess is wrong, the system adjusts its internal parameters slightly and tries again on the next example. This process repeats billions or even trillions of times.</p><p>Over time the model becomes very good at predicting what words tend to follow other words. That&#8217;s how it learns grammar, sentence structure, and the patterns of how people explain things.</p><p><strong>The LLM isn&#8217;t learning facts, it&#8217;s learning patterns in how words and ideas tend to appear together.</strong></p><h4>Step 4. Fine tuning</h4><p> The model then goes through a smaller round of additional training called fine-tuning. At this stage, the system is trained on carefully selected high-quality prompt-and-response pairs written or reviewed by humans. </p><p>These examples are chosen because the raw internet text is often messy, inconsistent, or not designed for helpful conversation. Human-curated pairs are essential to teach the model the exact tone, structure, safety rules, and engaging style we want. Something random web pages simply don&#8217;t provide.</p><p>For example, instead of learning from a rambling forum post, the model might see this clean training pair:</p><blockquote><p><em><strong>Q</strong></em><strong>:</strong> What is gravity?<br><em><strong>A</strong></em><strong>:</strong> It&#8217;s a force that pulls things together. More precisely, gravity is the invisible attraction between any two objects that have mass. On Earth, this is what makes things fall down toward the center of the planet and keeps us from floating away into space. Want me to explain how Newton discovered it or how it works in outer space?</p></blockquote><p>The goal is to steer it toward clearer, more helpful responses that are easier for people to interact with. This step doesn&#8217;t change how the model works. It still predicts the next token based on patterns it learned earlier. Fine-tuning simply nudges the model toward behaving more like a helpful assistant and less like a raw text generator.</p><h4>Step 5. Reinforcement Learning from Human Feedback </h4><p>The final step in training is called <strong>Reinforcement Learning from Human Feedback</strong>, or <strong>RLHF</strong>. At this stage, humans review answers generated by the model and rank them. For example, the model might produce two different responses to the same question. A reviewer is asked to choose which answer is better.</p><p>Note that the reviewers are not judging whether the answer is technically correct. Instead, they are following guidelines that reward responses that sound clear, helpful, polite, and well structured.   This teaches the LLM to give responses that humans ranked higher.  Pushing the model toward answers that read smoothly and confidently.</p><p><strong>The LLM becomes extremely good at producing answers that feel polished and authoritative, even when the underlying explanation may be incomplete or wrong.</strong></p><h4>But Which Humans?</h4><p>When people hear &#8220;human feedback,&#8221; it sounds as if the general public, or perhaps subject-matter experts, are shaping the model. In reality, much of this work is <strong><a href="https://time.com/6247678/openai-chatgpt-kenya-workers/">outsourced to low-cost contractors</a></strong> through data-labeling companies in countries such as Kenya, the Philippines, Colombia, Egypt, and India.</p><p>These workers are not engineers or scientists. They are paid raters following strict guidelines that reward answers for being clear, polite, polished, and safe, not for being factually correct or technically insightful. They get paid to feed the &#8220;hot dog&#8221; or &#8220;not hot dog.&#8221; dataset.</p><p>And there you have it: the model learns to optimize for those scoring criteria,  not for accuracy, real expertise, or what the actual public actually wants.</p><div id="youtube2-tWwCK95X6go" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;tWwCK95X6go&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/tWwCK95X6go?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h3>The Transformer Paper: When Skynet Came Online</h3><p>The modern wave of large language models truly begins in 2017, when a team of Google researchers published a landmark paper called &#8220;<strong><a href="https://papers.nips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf">Attention Is All You Need</a>.</strong>&#8221; That single paper introduced the <strong>Transformer</strong> architecture. The missing piece that finally made the kind of large-scale language training we just walked through actually practical.</p><p>Once the Transformer existed, everything took off.  Every major LLM today, including GPT, Grok, Claude, and Llama, is built on that same Transformer foundation.</p><p>The rest of the recipe fell into place soon after. OpenAI&#8217;s &#8220;<strong><a href="https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf">GPT-1&#8221;</a></strong> paper in 2018 showed that simply scaling next-word prediction on massive amounts of text could produce surprisingly powerful models. Then in 2022, <a href="https://arxiv.org/abs/2203.02155">InstructGPT</a> introduced Reinforcement Learning from Human Feedback, The training step that turns a raw language model into the conversational assistants we interact with today.</p><h3>Coke vs Pepsi</h3><p>So what&#8217;s the real difference between Grok, GPT (OpenAI), and Claude (Anthropic)? While they all follow the same basic training recipe,  the ingredients and seasoning are what make each one taste completely different.</p><p><strong>Data Diet</strong></p><ul><li><p><strong>Grok</strong>: More tightly integrated with X and the live web, which gives it stronger access to current events, slang, memes, and real-time conversation.  </p></li><li><p><strong>GPT</strong>: Mostly trained on curated books, articles, code repositories, and filtered web data. Solid and reliable, but more &#8220;library&#8221; than &#8220;live feed.&#8221;</p></li><li><p><strong>Claude</strong>:  Uses aggressively filtered training data designed to reduce what they deem as harmful or unsafe content.</p></li></ul><p><strong>Alignment &amp; steering (the personality factory)</strong></p><ul><li><p><strong>Grok</strong>: RLHF tuned for more direct answers, humor, and fewer guardrails than most systems.</p></li></ul><ul><li><p><strong>GPT</strong>: Strong RLHF focused on safety and helpfulness. Polite, polished, but quick to refuse or hedge on anything edgy.</p></li><li><p><strong>Claude</strong>:  Uses a method called <a href="https://www.anthropic.com/constitution">Constitutional AI</a>, along with RLHF, which trains the model to critique and revise its own answers using a set of written principles.</p></li></ul><p><strong>Personality &amp; vibe</strong></p><ul><li><p><strong>Grok</strong>: More informal and witty, with fewer guardrails in conversation. Feels like a smart friend who&#8217;ll actually answer the spicy questions.</p></li><li><p><strong>GPT</strong>: Professional, smooth, corporate-friendly. Great all-rounder but can sound scripted or overly careful.</p></li><li><p><strong>Claude</strong>: Thoughtful, ethical, often more reflective or explanatory in tone. Excellent at long-form reasoning but sometimes overly verbose or preachy.</p></li></ul><p><strong>Real-time edge</strong></p><ul><li><p><strong>Grok</strong>:  Integrated with X and live web tools, which helps it stay current.</p></li><li><p><strong>GPT &amp; Claude</strong>:  Rely more on periodic model updates or optional browsing tools.</p></li></ul><p>And yet,  they&#8217;re still eerily similar underneath. A study from the <a href="https://arxiv.org/abs/2510.22954">Allen Institute (arXiv 2510.22954)</a> proves it: even on open-ended, creative questions, all the major models :  GPT, Claude, Grok, Llama,  start giving almost <strong>identical</strong> answers. They literally call this the &#8220;<strong>Artificial Hivemind</strong>.&#8221;</p><p>Different flavors on the surface, same homogenized bullshit at the core.</p><h3>What Is It with Those Damned Em Dashes?</h3><p>If you&#8217;ve spent any time reading AI-generated text, you may have noticed something odd. LLM writing often leans heavily on em dashes. </p><blockquote><p>An <strong>em dash (&#8212;)</strong> is a punctuation mark used to create a pause or break in a sentence. It is longer than a regular hyphen (-) and longer than an en dash (&#8211;).</p></blockquote><p>Sometimes it feels like every other sentence has one. </p><p>And once you notice it, you can&#8217;t unsee it.</p><p>In most twentieth-century print writing, em dashes were used sparingly. Newspapers, technical publications, and academic journals stuck to commas, parentheses, or colons. Style guides like <strong><a href="https://vialogue.wordpress.com/2018/11/05/the-elements-of-style-reflections-notes/">Strunk and White</a></strong> pushed for tight, formal sentences, and editors routinely cut anything that felt too conversational.</p><p>You could still spot them in literary essays, but they were rare in journalism or technical work. On typewriters and early word processors the character wasn&#8217;t even available, so writers just used two hyphens (--) instead.</p><p>Then the internet showed up. Blogs and personal publishing let writers ditch the editors and strict style guides. (Methinks they stopped teaching proper English in school.)  The tone of online writing became more conversational, closer to how people speak rather than  how formal prose traditionally looked on the printed page.  The em dash became perfect for slipping in a quick aside, pivoting to a new thought, or adding emphasis without breaking the sentence. </p><p>As blogging and opinion pieces exploded, people who had never written before started influencing each other &#8212; and the em dash became contagious.</p><p>If you ask AI why it uses them so much, it will tell you it&#8217;s trying to produce text that looks like polished explanatory writing. It will claim it learned this style from sentences that read as &#8220;<strong>authoritative</strong>&#8221; or &#8220;<strong>well written</strong>.&#8221;</p><p> This is a perfect example of the <a href="https://www.atlasobscura.com/articles/is-this-the-first-time-anyone-printed-garbage-in-garbage-out">George Fuechsel&#8217;s</a> old programmer&#8217;s rule: <strong>Garbage In, Garbage Out.</strong></p><h3>Model Collapse and Poisoning</h3><p>So what happens when we keep feeding these systems their own bullshit?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHut!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHut!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 424w, https://substackcdn.com/image/fetch/$s_!CHut!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 848w, https://substackcdn.com/image/fetch/$s_!CHut!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 1272w, https://substackcdn.com/image/fetch/$s_!CHut!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png" width="500" height="282" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a071af7f-472d-460a-a97d-5b1e178d3385_500x282.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:282,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129996,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190205786?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.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_!CHut!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 424w, https://substackcdn.com/image/fetch/$s_!CHut!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 848w, https://substackcdn.com/image/fetch/$s_!CHut!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 1272w, https://substackcdn.com/image/fetch/$s_!CHut!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa071af7f-472d-460a-a97d-5b1e178d3385_500x282.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;What comes out one end, we feed to the other".</figcaption></figure></div><p>The result is <strong><a href="https://www.nature.com/articles/s41586-024-07566-y">model collapse</a></strong>. It hits when new AI models train on text spat out by earlier AI instead of fresh human writing. At first the damage stays subtle. Over generations the models feed on their own output. Errors compound. Simplifications harden. Stylistic quirks echo and amplify. This process is degenerative and irreversible without fresh human data. </p><p>Think of it as informational inbreeding. The models drift away from real human knowledge toward a blurry copy of their past answers. Details fade. Mistakes pile up. The language stays smooth and confident on the surface. Underneath the information thins out and turns less reliable. In short the machine keeps talking but knows less and less.</p><p>The funny thing is that it does not take much bad data to speed this rot along. A tiny amount of poisoned or low quality content can influence even very large models. A recent study, &#8220;<strong><a href="https://arxiv.org/pdf/2510.07192.">Poisoning Attacks on LLMs,</a>&#8221;</strong> showed that <strong>just 250 malicious documents</strong> can plant hidden backdoors in a language model, even when those documents are buried inside training datasets that contain billions of words.</p><p>Model size does not protect against this. What matters is the number of bad examples, not their percentage of the total data. When those examples come from recursive AI output, or from deliberate sabotage, the decay accelerates. A handful of flawed samples can quickly snowball into widespread degradation.</p><h3>Are you just telling me what I want to hear?</h3><p>This is a question I have often pondered about modern AI language models. Too often they seem overly eager to agree, flatter, or validate rather than offer balanced, honest, or corrective feedback.</p><p>Most people love hearing affirmation. Comfort feels good. But it comes at a price. Constant agreement turns the AI into an echo chamber. It reinforces bias. It kills self-reflection. It can even excuse choices that damage relationships or stunt personal growth.</p><p>Recent research suggests this concern is not just a hunch.  A 2025 Stanford led study titled &#8220;<strong><a href="https://arxiv.org/pdf/2510.01395">Sycophantic AI Decreases Prosocial Intentions and Promotes Dependence</a>&#8221;</strong> found that modern language models affirm users far more often than humans do.</p><p>The effect is troubling. When people receive those agreeable responses, they become more convinced they are in the right and less willing to apologize, fix the mess, or even consider the other side&#8217;s view. </p><p>In other words, the more the AI validates them, the more of an asshole they become.</p><p>That matters because we already live in a society where basic politeness often feels like a lost art. Public discourse is fractured, and social media often amplifies those divisions. People are nudged and manipulated into arguments that escalate quickly, sometimes even spilling over into hostility or violence. In that environment, a machine that constantly tells us we are right does not calm things down. It only adds fuel to the fire.</p><h3>Don&#8217;t Throw Out the Baby With the Bathwater</h3><p>Every advance in technology comes with unintended consequences. </p><p>Like most tools, large language models are useful when you understand what they are good at and what they are not. </p><p>They excel at summarizing information, exploring ideas, translating concepts, generating drafts, and helping you think through problems. They sift through enormous text and surface patterns faster than any human could.</p><p>The mistake is treating them like an authority instead of a tool. An LLM is not a database of verified facts and it certainly is not an expert. It is a machine trained to produce text that resembles the kinds of answers humans tend to write.</p><p>Sometimes that works remarkably well. Sometimes it just produces bullshit that only sounds convincing.</p><p>The trick is learning the difference.</p><p>Use AI the way you would use a fast but unreliable research assistant. Let it help you explore ideas, organize thoughts, and point you toward things worth investigating. Then do what humans are supposed to be good at.</p><ul><li><p>Always check the facts yourself.</p></li><li><p>Test the assumptions.</p></li><li><p>Use your own judgment.</p></li></ul><p>Because in the end, the responsibility for thinking still belongs to us. </p><p>For now&#8230; at least.</p><p></p><blockquote><p>Quick follow-up on the article:</p><p>I intentionally kept the explanation simple. I describe LLMs as &#8220;token prediction&#8221; or &#8220;next-word guessing.&#8221; At the lowest mechanical level that&#8217;s exactly what they do. They generate text one token at a time by predicting what comes next. I wanted that core idea to land for readers who aren&#8217;t data scientists.</p><p>I should also add that the LLM is not guessing blindly. While generating each token, it looks at your prompt and the entire conversation so far. That context lets it keep a coherent thread across several sentences or paragraphs.</p><p>As models grow larger and see more training data, they begin showing what researchers call <strong><a href="https://cset.georgetown.edu/article/emergent-abilities-in-large-language-models-an-explainer/?utm_source=chatgpt.com">emergent behavior</a></strong>. They can summarize documents, follow complex prompts, and produce responses that look a lot like step-by-step reasoning. But under the hood the mechanism has not changed.  It&#8217;s still predicting the next token  but adding in the context of the conversation.</p></blockquote><div><hr></div><p>If you care about how things are made and and how they work under the hood, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>.  Sometimes that means digging into the gritty details of why AI spits out such BS, or how a few poisoned documents can really screw with Skynet.</p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Here comes the Sun]]></title><description><![CDATA[How My Chicken Coop Controller Calculates Sunrise and Sunset]]></description><link>https://www.vinthewrench.com/p/here-comes-the-sun</link><guid isPermaLink="false">https://www.vinthewrench.com/p/here-comes-the-sun</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 06 Mar 2026 22:43:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3aWP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>After I published <em>&#8220;<a href="https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door">A Better Automatic Chicken Coop Door,</a>&#8221;</em> it occurred to me that I could do a better job explaining the math behind how sunrise and sunset can be calculated from a location and date.</p><p>Remember, the coop controller runs completely offline. There&#8217;s no network connection, no cloud service, and no outside API calls. The firmware computes the solar events locally using standard NOAA-style astronomical equations.</p><p>Below is the simplified sequence of calculations used by the firmware, explained in plain English with the actual equations shown and every number plugged in so someone with high school math (<a href="https://www.mathopenref.com/trigsummary.html">trigonometry</a> and a calculator) can follow along.</p><h4>Example Setup and Constants</h4><p>For this example, we&#8217;ll use the following:</p><ul><li><p>Location: Little Rock, Arkansas (USA)</p><ul><li><p>Latitude: 34.75&#176; N</p></li><li><p>Longitude: 92.29&#176; W</p></li></ul></li><li><p>Date: March 6, 2026</p></li></ul><p>To compute sunrise and sunset, the firmware only needs three key pieces of information:</p><ul><li><p><strong>Lat</strong> = Latitude (how far north you are) = 34.75&#176;</p></li><li><p><strong>SolarDec</strong> = solar declination (how far north or south the sun is that day)</p></li><li><p><strong>HA</strong> = hour angle (how many degrees Earth must spin before sun reaches your horizon)</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3aWP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3aWP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 424w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 848w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 1272w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3aWP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png" width="500" height="320" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:320,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:155605,&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.vinthewrench.com/i/190149608?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.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_!3aWP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 424w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 848w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.png 1272w, https://substackcdn.com/image/fetch/$s_!3aWP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ee44d1e-bc5a-465e-90d9-8b4cb8721d3e_500x320.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><figcaption class="image-caption">Solar geometry used to calculate sunrise and sunset from latitude and date.</figcaption></figure></div><h4>1. Determine the Day of the Year</h4><p>Everything starts with one simple number: what day of the year is it?</p><p>For <strong>March 6, 2026:</strong></p><pre><code><code>DoY = 65</code></code></pre><p>(January has 31 days + February has 28 days in 2026 + 6 days = 65.)</p><h4>2. Estimate the Sun&#8217;s Position (Solar Declination)</h4><p>The controller calculates how far north or south the sun is using this formula:</p><pre><code><code>SolarDec &#8776; &#8722;23.44&#176; &#215; sin((360&#176; / 365.25) &#215; (DoY &#8722; 81))</code></code></pre><p>Plugging in DoY = 65:</p><pre><code><code>SolarDec &#8776; &#8722;23.44 &#215; sin((360 / 365.25) &#215; (65 &#8722; 81))
SolarDec &#8776; &#8722;23.44 &#215; sin(0.9856 &#215; (&#8722;16))
SolarDec &#8776; &#8722;23.44 &#215; sin(&#8722;15.77&#176;)</code></code></pre><p>sin(&#8722;15.77&#176;) &#8776; &#8722;0.272</p><pre><code><code>SolarDec &#8776; &#8722;23.44 &#215; (&#8722;0.272) &#8776; +6.37&#176;</code></code></pre><p>Rounded: <strong>SolarDec &#8776; +6.4&#176;</strong></p><p>This means the sun is slightly north of the equator (spring is coming and days are getting longer).</p><h4>3. Calculate the Hour Angle</h4><p>This is the most important step. The controller uses this equation:</p><pre><code><code>cos(HA) = [sin(h0) &#8722; sin(Lat) &#215; sin(SolarDec)] / [cos(Lat) &#215; cos(SolarDec)]</code></code></pre><p>Where:</p><ul><li><p>h0 = &#8722;0.833&#176; (small correction for atmospheric refraction and the apparent size of the sun)</p></li><li><p>Lat = 34.75&#176;</p></li><li><p>SolarDec = +6.37&#176;</p></li></ul><p>Plugging in the values (using a calculator for<a href="https://www.mathopenref.com/trigsummary.html"> sin and cos</a>):</p><p>Numerator:<br>sin(&#8722;0.833&#176;) &#8722; sin(Lat) &#215; sin(SolarDec)<br>&#8776; &#8722;0.0145 &#8722; (0.570 &#215; 0.111)<br>&#8776; &#8722;0.0145 &#8722; 0.0633<br>&#8776; &#8722;0.0778</p><p>Denominator:<br>cos(Lat) &#215; cos(SolarDec)<br>&#8776; 0.821 &#215; 0.994<br>&#8776; 0.816</p><pre><code><code>cos(HA) &#8776; &#8722;0.0778 / 0.816 &#8776; &#8722;0.095</code></code></pre><p>Now take the <a href="https://www.mathopenref.com/arccos.html">inverse cosine</a>:</p><pre><code><code>HA = arccos(&#8722;0.095) &#8776; 95.5&#176;</code></code></pre><h4>4. Convert Hour Angle to Time</h4><p>Earth spins 15&#176; every hour, so we convert the angle to hours:</p><pre><code><code>Hours from noon = HA / 15 &#8776; 95.5 / 15 &#8776; 6.37 hours</code></code></pre><pre><code><code>Sunrise &#8776; 12:00 &#8722; 6.37 hours &#8776; 5:38 AM
Sunset  &#8776; 12:00 + 6.37 hours &#8776; 6:22 PM</code></code></pre><h4>5. Apply Astronomical Corrections</h4><p>The quick estimate is close, but the controller now runs the full NOAA equations to fix two real-world effects.</p><p><strong>a. Equation of Time (how much the sun appears &#8216;fast&#8217; or &#8216;slow&#8217; because Earth&#8217;s orbit is not perfectly circular)</strong></p><p>The controller calculates a fractional year angle &#947;:</p><pre><code><code>&#947; = (2 &#215; &#960; / 365) &#215; (DoY &#8722; 1)</code></code></pre><p>For DoY = 65:</p><pre><code><code>&#947; &#8776; (6.2832 / 365) &#215; 64 &#8776; 1.101 radians</code></code></pre><p>It then plugs &#947; into the full NOAA formula (a combination of sin and cos terms). For March 6, 2026 this gives:</p><pre><code><code>eqtime &#8776; &#8722;11.23 minutes</code></code></pre><p>(The sun is running about 11 minutes &#8220;slow&#8221; today.)</p><p><strong>b. Longitude correction (because Little Rock is not exactly on the center of the Central Time zone)</strong></p><p>Little Rock longitude = 92.29&#176; West<br>Central Time zone meridian = 90&#176; West</p><p>Correction = 4 minutes per degree &#215; (92.29 &#8722; 90) = +9.16 minutes</p><p>The controller now uses the refined hour angle HA together with these corrections in the main NOAA sunrise formula (in minutes past midnight, Universal Time):</p><pre><code><code>sunrise_UT (minutes) = 720 &#8722; 4 &#215; (longitude + HA) &#8722; eqtime</code></code></pre><p>Plugging in the values (longitude = &#8722;92.29&#176;, HA = 95.5&#176;, eqtime = &#8722;11.23):</p><pre><code><code>4 &#215; (&#8722;92.29 + 95.5) = 4 &#215; 3.21 = 12.84
sunrise_UT = 720 &#8722; 12.84 &#8722; (&#8722;11.23) = 720 &#8722; 12.84 + 11.23 = 718.39 minutes</code></code></pre><p>718.39 minutes &#8776; 11:58 UT</p><p>The calculation above uses a simplified hour angle so it&#8217;s easier to see how the longitude correction and Equation of Time affect the result.</p><p>In the actual firmware (<a href="https://github.com/vinthewrench/chickencoop-3/blob/main/firmware/src/solar.cpp">solar.cpp</a>), the controller runs the full NOAA solar algorithm. This produces slightly more accurate values for both solar declination and the hour angle. Because of that, the final Universal Time ends up a few minutes different from our simplified example, yielding the precise sunrise and sunset times the coop controller actually uses.</p><p>The same calculation is performed for sunset as well, with the hour angle taken on the opposite side of solar noon.</p><h4>6. Convert Universal Time to Local Time</h4><p>Finally, the controller simply subtracts the Central Standard Time offset:</p><pre><code><code>Local time = UT &#8722; 6 hours</code></code></pre><p>So the precise Universal Time sunrise (after all refinements) converts to the local clock time shown below.</p><p>Civil dawn and civil dusk are calculated using the same NOAA solar algorithm used for sunrise and sunset. The only difference is the zenith angle used in the hour-angle calculation: official sunrise and sunset use <strong>90.833&#176;</strong>, which represents the sun at the horizon with refraction and solar-disk correction, while civil dawn and dusk use <strong>96.0&#176;</strong>, corresponding to the sun being <strong>6&#176; below the horizon</strong>. </p><p>Everything else in the calculation remains the same, solar declination, equation of time, and longitude correction. So the result is simply an earlier morning event and a later evening event. </p><h4>Final Results for March 6, 2026 (Little Rock)</h4><p>After running all the math, here are the accurate times the controller uses:</p><pre><code><code>Civil Dawn   : 06:07 (6:07 AM)
Sunrise      : 06:32 (6:32 AM)

Sunset       : 18:09 (6:09 PM)
Civil Dusk   : 18:34 (6:34 PM)</code></code></pre><p>These match published solar tables within about one minute.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DqaO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DqaO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 424w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 848w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 1272w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DqaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png" width="450" height="241" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:241,&quot;width&quot;:450,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180540,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/190149608?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.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_!DqaO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 424w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 848w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 1272w, https://substackcdn.com/image/fetch/$s_!DqaO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06fc620c-6bfc-4859-850b-21371514e9a0_450x241.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Solar math: still simpler than dialing a Stargate.</figcaption></figure></div><p>So that&#8217;s the math behind the coop door. In the <a href="https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door">original article</a> I glossed over most of this, and afterward it felt like I&#8217;d skipped the best part. In reality it only takes a little trigonometry, a date, and the coop&#8217;s latitude to predict when the sun will appear over the horizon. </p><p>In the end, the chickens don&#8217;t know anything about solar declination or hour angles. They&#8217;re basically dinosaur pigs. They eat everything, including each other (if they could), and they&#8217;re perfectly happy as long as the door opens right on schedule every morning.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>.  Sometimes that means solar math and sometimes it&#8217;s just me pontificating about how I screwed up a design. </p><p>Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[A Better Automatic Chicken Coop Door]]></title><description><![CDATA[From Backyard Chickens to 100-Bird Pasture Rotation: Why I Scrapped Two Earlier Controllers and Built a Purpose-Built Ultra-Low-Power Coop Door from Scratch]]></description><link>https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door</link><guid isPermaLink="false">https://www.vinthewrench.com/p/a-better-automatic-chicken-coop-door</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Thu, 05 Mar 2026 22:31:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!y4UY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24506ddb-8b89-486c-9f37-ba162b25ab4c_600x474.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Project Overview</strong></p><ul><li><p>12 V battery-powered chicken coop door controller with optional solar charging.</p></li><li><p>Opens and closes the coop door using configurable sunrise and sunset offsets.</p></li><li><p>Gravity-actuated vertical door with an anti-predator locking mechanism.</p></li><li><p>Custom ATmega1284P controller board, about $50 in parts.</p></li><li><p>Ultra-low-power design with deep sleep current in the microamp range.</p></li><li><p>Runs without Wi-Fi, cloud services, or internet access.</p></li><li><p>Complete firmware, schematics, and PCB layout available on GitHub.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ajU7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ajU7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ajU7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg" width="700" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170984,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ajU7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ajU7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac24635-b582-431a-b0b2-cd87916b6861_700x559.jpeg 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><h4>Not My First Rodeo</h4><p>We started keeping chickens when I lived in Oregon. The fresh eggs were nice, but what was nicer was knowing where our food came from. It wasn&#8217;t some grand homesteading plan. It was simply a small, practical step toward owning one more piece of our lives. </p><p>I think at tops we only hosted about a dozen birds.</p><p>And as it turned out, our effort to put <strong><a href="https://www.vinthewrench.com/p/distance-from-disorder">distance from disorder</a></strong>,  grew into something much bigger.  We now run <strong><a href="https://stellaporta.us/">Stella Porta</a></strong>, a small regenerative farm built around naturally grown practices.  What began with a few backyard chickens has turned into something more serious, with real production goals, real schedules, and real consequences when things fail.</p><p>When we built our first coop, I immediately decided the door needed to be automated. I have zero interest in babysitting chickens. A daily check and egg collection is fine but having the door dictate my schedule isn&#8217;t.  </p><p>Rather than buy automated door, I home brewed my own.</p><p>The first version of the controller board used an <a href="https://www.vinthewrench.com/p/chicken-coop-automation-using-the-arduino-platform-4c572d9a940a">Arduino variant</a>,  driving relay outputs for the door actuator. Although it was fairly simple, it included integrated battery backup to keep the door operating through power failures, and Wi-Fi access that let me adjust parameters over the network.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tqsE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tqsE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 424w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 848w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 1272w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tqsE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png" width="300" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:237835,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.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_!tqsE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 424w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 848w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 1272w, https://substackcdn.com/image/fetch/$s_!tqsE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b3a8f30-4b8f-496b-96d4-6880da1b75a4_300x400.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The door mechanism and actuator held up well through ice, mud, and chicken dust</figcaption></figure></div><p>Around 2022, I revisited the system, moved it to a <a href="https://www.vinthewrench.com/p/chicken-coop-automation-revisited">Raspberry Pi</a> and wrote an accompanying iPhone app. The new controller also scheduled supplemental lighting to encourage egg production during Oregon&#8217;s darker and shorter winter.</p><p>Naturally I had the inevitable clashes with bears and raccoons seeking a yummy chicken dinner.  Well, to be perfectly honest, <em>they had clashes with my rifle</em>.   I wasn&#8217;t about to let predators dictating my schedule either, so I eventually added an electric-fence relay to the door scheduling system.</p><p>Both the Raspberry Pi and Arduino versions of the controller were connected to a coop in a fixed, fenced area, with a stationary nesting box that remained within Wi-Fi range. They only needed limited battery backup because the system was still mostly AC-powered and not truly a standalone design.</p><h4>Welcome to Arkansas.</h4><p>Moving to Arkansas changed everything. We&#8217;re now set up for more than a hundred birds, running a mobile coop integrated into our cattle and sheep rotational grazing. The coop moves with the pasture. The birds roam, eat bugs, and do chicken things all day, then come back to the nesting boxes to brood and roost at night.</p><p>The environment is different too.  There is more sunlight here and so the need for artificial light to simulate day extension is no longer necessary.  Bears aren&#8217;t the primary threat either. Coyotes are, and that problem is handled mostly the old way, with good dogs doing their job.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OdrN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OdrN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 424w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 848w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 1272w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OdrN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif" width="300" height="261" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9a9708d-64ae-44f4-b74f-e575ee7a320a.tif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:261,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:316630,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/tiff&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OdrN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 424w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 848w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 1272w, https://substackcdn.com/image/fetch/$s_!OdrN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9a9708d-64ae-44f4-b74f-e575ee7a320a.tif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Predators aren&#8217;t stupid</figcaption></figure></div><p>Mechanically, I kept what works and hardened what needed hardening. The gravity-hung door stays because it&#8217;s safe and reliable. But just to be safe, I added a locking bar so a predator can&#8217;t lift the door once it&#8217;s closed.</p><p>Since the pasture rotates, the coop  is often well out of reach of AC power, and so power conservation a priority. Solar can top it off, but we won&#8217;t depend on it every day. It needs to survive cloudy stretches, short winter days, rain, snow, whatever Arkansas throws at it.</p><p>Chickens are simple: they get up at dawn and roost at dusk. They just need a door that follows that rhythm.  So the controller doesn&#8217;t need to be complicated, it is simply a box that tells a few devices what to do at specific times, then goes back to sleep.</p><p>It is also out of Wi-Fi reach,  and it&#8217;s not worth the luxury of wasting power on it. Any setup and schedule programming can be done in the field. We&#8217;re still out there each day collecting eggs, refilling water, and checking on the girls. But once the schedule is configured, I shouldn&#8217;t have to mess with it. It should just run on its own.</p><blockquote><p>I have seen some very elaborate coop automation projects on the net. One example is <a href="https://smartcoop.tech/">Dave Duncanson&#8217;s SmartCoop</a> system in Australia, He uses a Raspberry Pi along with sensors, networking, and extensive monitoring. That system is designed for a fixed backyard coop with reliable power and Wi-Fi access. </p><p>My goals were much simpler. I just needed a small controller that opens the door at dawn, closes and locks it at dusk, then goes back to sleep while running from a battery in the middle of a rotating pasture. </p><p>Different constraints lead to very different designs.</p></blockquote><h4>Scheduling the Door</h4><p>So how do you decide when it&#8217;s time to open and close the door? I have seen it done a couple of ways.</p><p>One option is a <strong>simple time clock</strong>. But that means constantly readjusting for the solar cycle as day length changes through the year.</p><p>Another approach is a <strong>light sensor</strong>. The problem is that light sensors lie. A light sensor doesn&#8217;t know what sunrise or sunset is. It only knows how bright it happens to be at that moment, right where it&#8217;s mounted. Clouds can turn midday into dusk. Shadows move. Snow reflects light in ways that break thresholds. Headlights and yard lights create false sunrises. Reflections off wet ground or metal siding spike readings at exactly the wrong time.</p><p>In a mobile coop, those problems get worse.  As the coop moves, its orientation changes. The horizon changes. Mounting angles change. Even a perfectly calibrated sensor becomes unreliable the moment the environment shifts.</p><p>On the other hand, sunrise and sunset are predictable events. Given a location and a date, you can accurately and repeatably calculate the time they will occur. If you base your door schedule as a simple offset from those events and it will stay aligned with the season. It won&#8217;t drift, it won&#8217;t be fooled by clouds or shadows, and it won&#8217;t need constant adjustment.</p><h4>Here comes the Sun</h4><p>Computing sunrise and sunset from location and date isn&#8217;t hard.  I don&#8217;t know why people overthink this. You only need a few ingredients: latitude, longitude, a reliable (battery-backed) real-time clock, and a little basic solar math. </p><p>Latitude determines how high the sun climbs and how long the day lasts, while longitude shifts the time of solar noon relative to your clock. </p><p>None of this is new-fangled science.  The core ideas go back to the <a href="https://www.britannica.com/science/astronomy/History-of-astronomy">Babylonian</a> and <a href="https://www.britannica.com/science/astronomy/Ancient-Greece">Greek</a> astronomers, notably the work of <a href="https://www.britannica.com/biography/Ptolemy">Ptolemy</a> in the 2nd century AD. Major refinements came in the 1600s and 1700s, as <a href="https://www.britannica.com/story/understanding-keplers-laws-of-planetary-motion">Kepler</a>  sussed out the laws of orbital motion.   Later refinements added precision by accounting for Earth&#8217;s axial tilt. By the 18th and 19th centuries, these calculations were <a href="https://gml.noaa.gov/grad/solcalc/calcdetails.html">standard in nautical almanacs</a>.  Sailors could predict sunrise and sunset reliably anywhere on Earth.</p><blockquote><p><strong>Pro tip</strong>: This math has been spot-on for centuries on a round Earth. Flat Earth versions? Not so much.</p></blockquote><p>So here&#8217;s how it works. </p><p>Earth rotates once every 24 hours and orbits the Sun once a year. We know the rate of that rotation, and we can model how axial tilt and orbital geometry change the Sun&#8217;s apparent path day by day. Using the trigonometry I describe below, we can write code that calculates the exact minute the Sun crosses the horizon for a given date and location.</p><p>We also factor in a <a href="https://edwilliams.org/sunrise_sunset_algorithm.htm">standard horizon angle of about 0.833 degrees below the true horizon</a> to account for atmospheric refraction, which bends light slightly, and the upper limb of the Sun&#8217;s visible disk, which takes time to fully rise or set. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oejE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oejE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 424w, https://substackcdn.com/image/fetch/$s_!oejE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 848w, https://substackcdn.com/image/fetch/$s_!oejE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 1272w, https://substackcdn.com/image/fetch/$s_!oejE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oejE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png" width="800" height="533" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:933621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.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_!oejE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 424w, https://substackcdn.com/image/fetch/$s_!oejE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 848w, https://substackcdn.com/image/fetch/$s_!oejE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 1272w, https://substackcdn.com/image/fetch/$s_!oejE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5407ecc-9cb3-4daa-9a68-6023fc31cc45_800x533.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;re curious (or building something similar), here&#8217;s the basic math <a href="https://github.com/vinthewrench/chickencoop-3/blob/main/firmware/src/solar.cpp">my code runs</a>.</p><ol><li><p><strong>Solar declination (&#948;)</strong> - the sun&#8217;s north-south position: <br>&#948; &#8776; 23.45&#176; &#215; sin( (360&#176; / 365) &#215; (day_of_year + 284) ) <br>(Or a common variant: &#948; &#8776; -23.44&#176; &#215; sin( (360&#176; / 365.25) &#215; (day_of_year - 81) ))</p></li><li><p><strong>Hour angle at sunrise/sunset (&#969;_s)</strong>: <br>cos(&#969;_s) = [sin(-0.833&#176;) - sin(&#966;) &#215; sin(&#948;)] / [cos(&#966;) &#215; cos(&#948;)] <br>where &#966; = latitude, &#948; = declination, -0.833&#176; = horizon correction (refraction + sun&#8217;s disk). <br>Then &#969;_s = acos( that value )</p></li><li><p><strong>Times from local noon</strong>: <br>Sunrise &#8776; 12 - (&#969;_s / 15) hours <br>Sunset &#8776; 12 + (&#969;_s / 15) hours (Earth rotates 15&#176; per hour.)</p></li></ol><h4>Scheduling and State Reduction</h4><p>Calculating sunrise and sunset turns out to be the easy part of coop automation. The hard part is keeping the system in the correct state when things inevitably go wrong.</p><p>A lot of automation systems treat schedules as a series of triggers. At 6:51 AM, fire an &#8220;open&#8221; event. At 6:03 PM, fire a &#8220;close&#8221; event. That sounds simple until the power fails, the controller reboots, or someone overrides the system manually. Now the controller has to remember what already ran, what did not, and whether it should try to &#8220;catch up.&#8221; Miss one trigger and the system is out of sync.</p><p>In a lighting system that might mean a lamp stays on too long. In a chicken coop it can mean the door stays open all night. Screw this up and you get dead chickens.</p><p>My system takes a different approach.</p><p>The schedule does not fire events. Instead, it defines the desired state of each device at every minute of the day. When the controller wakes up or needs to make a decision, it asks a simple question:</p><p><strong>At this moment, what state should each device be in?</strong></p><p>For example, on a given day the door schedule might look like this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;6cf12b7e-1735-48fc-9c7e-d0c445a43963&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Solar      Rise        Set
Actual     06:51 AM    06:03 PM
Civil      06:26 AM    06:29 PM

Events:
06:51  OPEN    Sunrise +0
18:18  CLOSED  Sunset +15</code></pre></div><p>That&#8217;s it. Two declarative statements: the door should be open after sunrise, and it should close 15 minutes after sunset.</p><p>The reducer algorithm looks at the current time and determines which of those two events governs the door right now.</p><p>Sounds simple enough. But what happens when we add human interaction?</p><p>Say the door is scheduled to open at sunrise and close at sunset. At 3:00 PM, the farmer <strong>presses the button and closes the door</strong>. </p><p>The door state machine does exactly what it should. It unlocks, drives closed, waits for settle, and locks. Everything works.</p><p>Now the scheduler algorithm runs again one minute later. It reduces the schedule and sees that the governing event for the door is still the sunrise &#8220;open&#8221; event. According to the schedule, the door should be open.</p><p>The scheduler will immediately command the door to open again. </p><p><strong>The system is technically correct, but practically wrong.</strong></p><p>So how do we fix it?</p><p>We solve it by recording the <strong>timestamp of the last manual action</strong>. When the scheduler attempts to apply a scheduled state, it passes along the timestamp of the governing scheduled event. If that event occurred <strong>before</strong> the manual action, it is ignored.</p><p>In other words, the schedule cannot override a newer human action. It must wait until the next scheduled phase, such as sunset, before it regains control.</p><p>We also run the algorithm clock in UTC, so changes in Daylight Saving Time never shifts events, never touches the solar math, and the only thing that ever changes is how the time is displayed to a human.</p><h4>The Door Electronics</h4><p>Now that we know <em>when</em> to open the door,  <em>how</em> are we going to do it? </p><p>While horizontal sliding doors look simple and convenient on paper.  They have some drawbacks.</p><p>We used an <a href="https://www.omlet.us/smart-automatic-chicken-coop-door-opener/">Omlet automatic door</a> on our temporary coop with just six birds because it was expedient and installed quickly.  The design included a safety switch on one side to prevent the door from closing on a chicken, which is a sensible feature.</p><p>But then we had an ice storm and the door froze solid.</p><p>I had to hit it with a heat gun to thaw the mechanism so the birds could get out.  I disconnected it and propped a brick and plywood in its place for the week.  </p><p>From what I could see, the combination of gears and open slide tracks allowed dust, moisture, and ice to work their way into the mechanism and freeze everything in place.</p><p>That experience pushed me toward a different design.</p><p>Instead of sliding sideways, my coop doors open vertically. The door is lifted by retracting a cable with an actuator, and gravity closes it again when the actuator extends.</p><p>The door itself rides on a <a href="https://www.homedepot.com/p/SKYSHALO-Linear-Guide-Rail-Set-SBR16-1000mm-2-Piece-39-4-in-1000-mm-SBR16-Guide-Rails-and-4-Piece-SBR16UU-Slide-Blocks-ZXDGSBR16MM10H508V0-1021/333366100">pair of aluminum guide rails with slide blocks I picked up at Home Depot</a>. These are linear motion components commonly used in CNC machines, automated equipment, and even some shop-built router or saw sleds where something needs to move straight while staying aligned. In this case they simply keep the door traveling smoothly up and down without twisting or binding. I mounted the sliding mechanism inside the coop so there are no exposed tracks to clog or freeze.  </p><p>To move the door I used a Progressive Automations PA-14 linear push-pull actuator (now sold as model <a href="https://www.progressiveautomations.com/products/pa-01?variant=43077060067508.">PA-01-12-56-N-12VDC</a>).  It has a stainless steel stroke rod and an IP65-rated aluminum alloy housing, with no exposed spinning parts to gum up in chicken dust or freeze solid during icy Arkansas winter nights, where a stuck door can mean dead birds.  The unit also includes built-in limit switches, so it automatically stops at the ends of its travel without requiring additional sensors.</p><p>If you want the nitty-gritty on why I chose this device and how to electrically drive it, see my article &#8220;<a href="https://www.vinthewrench.com/p/the-humble-actuator">The Humble Actuator</a>.&#8221;</p><p>Working backwards from the actuator, the motor is driven electrically using a <a href="https://www.st.com/en/automotive-analog-and-power/vnh7100bas.html">VNH7100BAS</a> H-bridge.  This chip can move real current, up to 15 A continuous. Which is more than enough for the actuator but also means it can generate real heat under load. The data-sheet is clear about this and recommends providing substantial copper area on the PCB for thermal management.</p><h4>The Locking Mechanism</h4><p>A gravity-hung door prevents crushing, but it does nothing to stop something from pushing upward from outside the coop. A determined raccoon or coyote will pull, pry, and test weaknesses for hours.</p><p>So the door also needs a way to lock.</p><p>I didn&#8217;t have to look far for a solution. My automated garage door had already solved this exact problem. When it closes, a steel deadbolt slides into the track, physically preventing the door from being lifted.</p><p>That raised an obvious question: what&#8217;s actually inside that lock? I opened up a <a href="https://www.amazon.com/dp/B074L9JQQR">LiftMaster 841LM</a> and, to my surprise, found that the mechanism inside is fundamentally the same as the automotive door lock actuators you can buy for <a href="https://www.amazon.com/dp/B00CZBQCR2?th=1">less than five dollars</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hAvR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hAvR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hAvR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg" width="600" height="326" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:326,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hAvR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hAvR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95991b80-573d-4420-9892-78ce94a1eeff_600x326.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The LiftMaster 841LM garage door latch</figcaption></figure></div><p>Inside, the <a href="https://www.scribd.com/document/950676503/How-Power-Door-Locks-Work-HowStuffWorks?utm_source=chatgpt.com">mechanism is simple</a>. A small DC motor drives a set of reduction gears that move a sliding linkage back and forth, pushing or pulling a steel bolt into position. When the bolt extends into the strike, any upward force on the door is transferred directly into the frame, not through the motor. Once engaged, the load is carried entirely by the latch. The motor and gear train are no longer holding the door up; the steel latch is.</p><p>The motor itself is just a brushed DC motor. Apply current one way and the bolt extends. Reverse the polarity and it retracts. There are no position sensors or smart electronics inside, just a motor and gears. Controlling it simply requires reversing the motor direction, which makes it a perfect job for the same kind of   VNH7100BAS H-bridge used to drive the actuator.</p><h4>Door Motion and Lock State Machine</h4><p>On the software side, the actuator and door lock are driven by <a href="https://github.com/vinthewrench/chickencoop-3/blob/main/firmware/src/devices/door_state_machine.cpp">a state machine that manages the motion</a>.   </p><p>Before any door movement command is issued, the controller first runs a <strong>latch-release sequence</strong>. This prevents the actuator from jamming if someone has manually messed with the latch.  </p><p>The door cycle then proceeds as follows:</p><ul><li><p>The controller releases the latch.</p></li><li><p>The H-bridge is enabled and the actuator begins moving the door.</p></li><li><p>When the configured travel time expires, the H-bridge is disabled and the motor stops.</p></li><li><p>The controller waits for a short settling delay.</p></li></ul><p>During a closing cycle this delay allows gravity and the mechanism to settle before the lock engages.</p><ul><li><p> After the delay, the controller sends a <strong>lock pulse</strong> to secure the door.</p></li></ul><p>This sequence prevents mechanical shock, reduces stress on the latch, and ensures the door is fully seated before it is locked.</p><p>This state machine also provides visual feedback by driving a red/green door button LED.</p><h4>Home brewing the Hardware</h4><p>Everything up to this point has been logic: schedules, reducers, state machines, sunrise math and motor control.  Now it&#8217;s time to dig into the electronics that make it all work.</p><p>My original coop controller used off-the-shelf parts bolted together, which made it bigger, more complex, and more expensive than necessary.</p><p>But at this point, I knew exactly what the system required:  the door logic worked, the actuators were dependable, and the scheduling code was solid. There was no good reason to keep using general-purpose development boards.</p><p>Since I&#8217;ve designed custom electronics and controller boards before, including the <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part">irrigation controller running on the farm</a>, I decided to build a small, purpose-built coop controller board.  I wanted a microcontroller that could:</p><ul><li><p>Run reliably using its built-in Real-Time Clock (RTC)</p></li><li><p>Enter a true deep power-down mode with current in the microamp range</p></li><li><p>Wake cleanly from an RTC interrupt or a button press</p></li><li><p>Drive a couple of H-bridges and some LEDs</p></li><li><p>Store configuration data in non-volatile memory</p></li><li><p>Provide a simple serial port for setup and configuration</p></li><li><p>Try to keep the parts count under $50.</p></li></ul><p>I also wanted something that was straightforward to <a href="https://www.vinthewrench.com/p/how-did-you-make-that">develop with modern tools</a>. Plain C or C++. The <a href="https://gcc.gnu.org/wiki/avr-gcc">avr-gcc toolchain</a>. Explicit Makefiles. No hidden build systems, no IDE magic, no framework layers doing things behind my back.</p><h4>Don&#8217;t Vibe Design</h4><p>Before I go on, I should confess something. I tried to be like the cool kids and take the AI shortcut.  Result, I got burned.  I asked both Grok and GPT for advice on choosing the proper MCU and RTC, and both recommendations turned out to be the wrong choice.  It suggested the <strong>ATmega32U4</strong> as the MCU and the <strong>PCF8523T</strong> as the RTC.  </p><p>The ATmega32U4 turned out to be a major headache during development. ISP programming would fail intermittently, and troubleshooting revealed that the programmer could back-power the chip through the SPI pins (<a href="https://www.vinthewrench.com/p/avrdude-the-debugging-tool-you-didnt">MISO/MOSI/SCK</a>) especially if I forgot to turn on the MCU&#8217;s power supply during debugging. </p><p>Current could flow through the MCU&#8217;s internal ESD protection diodes, which can stress or degrade (blow out)  the chips I/O drivers, particularly the MISO pin, leading to unreliable detection and programming.</p><p>The ATmega32U4 was primarily designed for USB-native applications where the chip is almost always powered whenever a programmer is connected via USB. In standalone, battery-powered, or intermittently powered embedded designs, this back-powering issue becomes a chip killer.</p><p>By contrast, the <strong>ATmega1284P</strong> is a simpler, traditional AVR with fewer internal subsystems. In practice it behaves much more predictably when programmed over ISP in battery-powered or embedded systems.</p><p>The <strong><a href="https://www.nxp.com/docs/en/data-sheet/PCF8523.pdf">PCF8523T</a></strong> also turned out to be the wrong choice for this project. On paper it looks fine. In practice it is was a real ball buster.</p><p>The main problem is that it <strong>depends on an external 32.768 kHz watch crystal</strong>. That means crystal selection, load capacitors, PCB layout, and soldering quality all become critical to stable operation. Timekeeping depends on a fragile tuning-fork crystal. In a stationary indoor product that&#8217;s manageable, but this controller lives in a coop that gets dragged around the pasture by a tractor. Vibration and shock are routine, and I didn&#8217;t want the system&#8217;s timekeeping relying on a mechanically sensitive component.</p><p>I also ran into <strong>power-transition edge cases</strong>. During brownouts the MCU could reset while the RTC continued running from VBAT. A large bulk capacitor on the logic rail stretched the MCU&#8217;s brownout window just enough to create awkward reset timing, which meant extra software was needed to keep the system synchronized.</p><p>None of these issues make the <strong>PCF8523</strong> unusable. It may simply be that I didn&#8217;t design around it properly. And I bet that in a well-controlled environment it likely works fine.  But it demands more care in oscillator layout, power sequencing, and mechanical protection than I want in something that lives outside as farm equipment.</p><p>In a tractor-towed coop running from a 12-volt battery, robustness matters more than saving a handful of microamps. So I wrestled back control of the design and went with the <strong><a href="https://www.analog.com/en/products/ds3231m.html">DS3231M</a></strong>. </p><p>The DS3231M integrates its own resonator and eliminates the need for an external watch crystal. That removes the layout sensitivity and mechanical fragility that come with tuning-fork crystals, and it simplifies the design considerably.</p><p>It also includes temperature compensation and an integrated resonator, so the clock maintains good accuracy without external crystal tuning or calibration. Easy-peasy.</p><h4>A Few More Hardware Details</h4><p>As mentioned above, I used two <strong>VNH7100BAS H-bridges</strong> to drive the actuator and the locking device. I added <strong>1 k&#937; series resistors</strong> between the MCU outputs and the driver inputs, along with <strong>100 k&#937; pull-down resistors</strong> on the control lines.</p><p>The series resistors limit current and protect the MCU pins from transients or accidental contention during power-up or reset. The pull-down resistors ensure the H-bridge inputs default to a known low state if the MCU pins are high-impedance during reset or startup. Together they prevent the motor driver from briefly enabling or changing direction before the firmware takes control. </p><p>I tied <strong>SEL0</strong> to GND so a low signal on the <strong>PWM pin</strong> puts the VNH7100BAS into standby, letting the controller shut the driver off completely when the actuator isn&#8217;t moving.</p><p>For the 5-volt supply I used the <strong><a href="https://www.pololu.com/product/2858">Pololu D24V22F5</a> </strong>buck regulator. It&#8217;s efficient, compact, and its quiescent current is low enough that it doesn&#8217;t hurt sleep current. It takes the 12-volt battery directly and produces a clean 5 volts for the logic.</p><p>I even threw in a couple of  <a href="https://na.industrial.panasonic.com/products/relays-contactors/mechanical-power-relays/lineup/general/series/1578/model/1804">DSP1-L2-DC12V</a> <strong>12-volt latching relays</strong>. They don&#8217;t draw holding current, which fits the low-power theme, and they give me some flexibility. <strong>Maybe I&#8217;ll use them for an electric fence or  supplemental lighting</strong>. Maybe something I haven&#8217;t thought of yet. The relays are driven from the MCU through a ULN2003A driver, a small workhorse chip that has been switching relays and solenoids since the 1970s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rDyk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rDyk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 424w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 848w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 1272w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rDyk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png" width="1456" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:341496,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.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_!rDyk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 424w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 848w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 1272w, https://substackcdn.com/image/fetch/$s_!rDyk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff999ab84-4c5b-4aa1-8c86-d7ca3c42b231_2218x1392.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://github.com/vinthewrench/chickencoop-3/blob/main/hw/3.3/Schematic.pdf">Coop Controller 3.3</a></figcaption></figure></div><p>I also added a socket for an optional <strong><a href="https://www.sparkfun.com/sparkfun-serial-basic-breakout-ch340c-and-usb-c.html">SparkFun DEV-15096</a></strong>  USB-to-serial module that provides a simple setup console.</p><p>When installing the controller, I can plug the adapter in, open a terminal, and interact directly with the firmware. From there I set the clock, enter the latitude and longitude, configure the schedule, and verify that everything is behaving correctly.</p><p>Once the system is configured, the adapter is no longer needed and can be removed. The controller runs completely on its own.</p><p>The connector also leaves open the option of plugging in a wireless serial bridge later if remote access is useful. But in normal operation there is no reason to leave extra hardware connected drawing power.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9UZU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9UZU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 424w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 848w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 1272w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9UZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png" width="500" height="386" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194714,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/186626812?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.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_!9UZU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 424w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 848w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 1272w, https://substackcdn.com/image/fetch/$s_!9UZU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa18caef9-9a8d-4054-aa14-e638b9233da2_500x386.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Coop Controller PCB design</figcaption></figure></div><p>All of this fits comfortably on a 100 &#215; 130 mm PCB.  If you&#8217;re wondering how I actually make these boards, take a gander at my article : &#8220;<a href="https://www.vinthewrench.com/p/how-did-you-make-that">How Did You Make That?</a>&#8221;.</p><h4>Field Setup, Configuration &amp; Programming</h4><p>This article covered the design decisions, the math, the hardware choices, and the state-machine logic that make the controller run reliably in a moving pasture.</p><p>But design work on the bench is only half the story. The real test is getting it configured and running in the field. That includes: </p><ul><li><p>flashing the firmware onto the ATmega1284P</p></li><li><p> hooking up the USB-to-serial console</p></li><li><p> setting your exact latitude and longitude</p></li><li><p> dialing in the sunrise and sunset offsets</p></li><li><p>testing the door/lock sequence, measuring sleep current</p></li><li><p>making sure it survives weeks without touching it.</p></li></ul><p>In the next installment I&#8217;ll walk through that entire process step by step. I&#8217;ll cover the exact build commands, fuse settings, console configuration, and the commands used to set location and scheduling parameters.</p><p>I&#8217;ll try and add some power measurements from the finished system and a few troubleshooting tricks that helped shake out early problems.</p><p>Like all of my designs, the complete project is already available on <a href="https://github.com/vinthewrench/chickencoop-3/tree/main">GitHub</a>, including the firmware, schematics, and PCB layout. </p><p>The software is released under the <strong>MIT License</strong>, and the hardware design files are published under the <strong>CERN-OHL-P v2</strong> open hardware license so others can study it, modify it, and build their own. </p><p>If you build one, drop a photo in the comments.  I&#8217;d love to see how it turns out in your setup.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[avrdude: The Debugging Tool You Didn’t Know You Had]]></title><description><![CDATA[Your Hidden Microscope for AVR Chips]]></description><link>https://www.vinthewrench.com/p/avrdude-the-debugging-tool-you-didnt</link><guid isPermaLink="false">https://www.vinthewrench.com/p/avrdude-the-debugging-tool-you-didnt</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Wed, 28 Jan 2026 23:23:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!FX8Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve written code for an AVR, Atmel&#8217;s family of 8-bit microcontrollers used in many Arduino boards, you&#8217;ve almost certainly encountered a program called avrdude, whether you realized it or not.</p><p>avrdude, which stands for AVR Downloader/Uploader, is a command-line utility that communicates directly with AVR microcontrollers at a level below any running firmware. It does this by communicating with the built-in programming interfaces of AVR devices, putting the chip into a state where new code can be uploaded.</p><p>As AVR devices evolved, their programming methods changed with them. Across the AVR family, avrdude provides a single, consistent way to communicate with devices that use very different programming interfaces</p><ul><li><p><strong>ISP (In-System Programming)<br></strong>Used by classic ATmega and ATtiny devices. A small set of pins, typically MOSI, MISO, SCK, and RESET, is used to assert reset, clock commands in, and read responses back.</p></li><li><p><strong>High-voltage programming</strong><br>Supported by classic ATmega and ATtiny devices as a recovery mechanism. These modes use a 12-volt signal to force the chip into programming mode when standard ISP access is disabled or misconfigured.</p></li><li><p><strong>PDI and UPDI<br></strong>Used by newer AVR families. XMEGA devices use PDI, while more recent parts use UPDI, a single-wire interface that combines programming and debug access. </p></li></ul><p>Even as device programming interfaces changed, avrdude continued to provide a common way to communicate with them.</p><h4>Before the Dude</h4><p>Atmel showed up in the early 1990s as a semiconductor company best known for nonvolatile memory, EEPROM and flash. They weren&#8217;t a microcontroller company at first. They had tried a few things in that direction, but nothing really caught on. What they did know cold was flash memory, and how to make parts that were simple, inexpensive, and easy to drop into real hardware.</p><p>The AVR architecture came along right when Atmel was looking for something that could actually make use of those strengths. Over in Norway, engineers Alf-Egil Bogen and Vegard Wollan had put together a clean 8-bit RISC design that ran fast and made efficient use of program memory. Atmel licensed the design, brought the guys on board, and wrapped that core around their flash technology. That&#8217;s how AVR became a self-programmable microcontroller family instead of just another CPU on a datasheet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xg5x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xg5x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xg5x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg" width="400" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85293,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185904613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18087b96-20bc-46f6-a636-d1b8fcbbaec9_400x389.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xg5x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Xg5x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53873298-d6cc-4dbc-8c9b-8d21f3cda70b_400x389.jpeg 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><figcaption class="image-caption">ATmega8 microcontroller die photo, courtesy of ZeptoBars</figcaption></figure></div><p>AVRs were built to be programmed in-system from day one using simple, well-defined protocols, long before platforms like Arduino existed.  Firmware was usually written by the same engineers who designed the hardware, often with no operating system underneath it. Your code didn&#8217;t run on top of an OS, it <em>was</em> the system. </p><p>Programming interfaces like ISP, fuse settings, and startup behavior were all part of the system design, which meant developers needed tools that could work directly at that level.</p><h4>The Dude Arrives</h4><p>avrdude didn&#8217;t show up as part of an IDE or an official toolchain. It showed up out of necessity. Firmware developers needed a reliable way to talk directly to AVR chips and download code into them.</p><p>What existed at the time was a specification. Atmel published application notes like <strong><a href="https://ww1.microchip.com/downloads/en/appnotes/atmel-0943-in-system-programming_applicationnote_avr910.pdf">AVR910</a></strong>  that spelled out the in-system programming protocol in exact detail. The commands, timing, and electrical requirements were all there. </p><p>What didn&#8217;t exist was a consistent, reusable tool that actually implemented it the same way every time. That changed in the late 1990s, when Brian S. Dean wrote the original avrdude under the name <strong>AVRPROG</strong>. It was a simple command-line programmer that implemented the AVR in-system programming protocol so developers could load firmware and configure basic device parameters directly from Unix-like systems.</p><p>As the tool spread beyond its original Unix environment, the name was changed to <strong>avrdude</strong> to avoid confusion with Atmel&#8217;s own <strong>AVRPROG.EXE</strong> utility on Windows.</p><p>In the years that followed, avrdude became a community-managed project hosted on <a href="https://savannah.gnu.org/">Savannah</a>, a public CVS repository that was part of the GNU ecosystem long before GitHub existed. This repository served as the central hub for patches, platform ports, and expanding device support.</p><p>Developers like Ted Roth, Eric Weddington, and J&#246;rg Wunsch helped port avrdude to additional platforms (Linux, macOS, Windows) and expanded support for new devices and programmers.</p><p>Today, avrdude is an actively maintained, cross-platform, open-source tool, with its development hosted on GitHub.</p><h4>avrdude in the Age of Arduino</h4><p>Most developers encounter avrdude indirectly. Platforms like <strong>Arduino</strong> popularized integrated development environments for microcontrollers, but under the fancy veil, they still relied on avrdude whenever code needed loading, fuses had to be set, a device identified, or a misconfigured chip recovered.</p><p><a href="https://blog.arduino.cc/2021/12/09/one-board-to-rule-them-all-history-of-the-arduino-uno/">Arduino originated</a> in 2005 at the Interaction Design Institute Ivrea (IDII), a two-year graduate program in interaction design in northern Italy. It was created as an affordable, open-source microcontroller platform for students, designers, and artists to prototype interactive projects easily, without deep engineering expertise. The early boards used the ATmega8 microcontroller and sold for around $20 to $30. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CnjE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CnjE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CnjE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg" width="400" height="285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:285,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51891,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185904613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CnjE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CnjE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2ff2a4-e580-4d8c-bdbd-666500987263_400x285.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Arduino from 2005. Massimo has a Flickr photo set from 2004</figcaption></figure></div><p>The platform also included a beginner-friendly IDE for creating and uploading code sketches, helping it spread quickly through word-of-mouth in maker, education, and creative communities. And all through that, avrdude was still there under the hood of that IDE doing its stuff.</p><p>What Arduino did change was to massively expand the audience. Suddenly there were a whole new set of people showing up, making, tweaking, and learning from examples and libraries instead of digging through datasheets. AVR development was no longer just for the embedded engineers; it was for anyone who wanted to get their hands dirty.</p><p>But even with a whole new class of customers, Atmel didn&#8217;t sit back. They kept cranking out new chips to handle tougher jobs, with more peripherals, tighter integration, fewer pins, and all the extra features developers started asking for.</p><p>Some of these chips needed more robust programming methods to handle the advanced features. Others added ways to recover misconfigured devices or to support single-wire debugging.</p><p>Through all these changes, avrdude&#8217;s role remained the same. As new AVR chips added features and programming methods &#8212; from classic ISP and high-voltage programming to PDI and UPDI &#8212; avrdude grew to support them all, providing a consistent bridge between developer and silicon. It implemented the protocols the hardware expected, handled timing and state, and reported exactly how the device responded, even as layers and IDEs changed.</p><h4>How Does the Dude Do It?</h4><p>But avrdude is just a piece of software. It can follow the protocol and read what the chip spits back, but it can&#8217;t physically flip pins or bang the clock lines on the board.  For that you need hardware, a programmer device to actually drive the signals. Fortunately there are number of programmer tools are available, ranging from simple hobbyist adapters to full-featured professional devices.</p><ol><li><p><strong>Atmel-ICE</strong> &#8211; The top-tier AVR programmer and debugger. Supports ISP, PDI, UPDI, and high-voltage programming.  I personally use the <a href="https://www.mouser.com/ProductDetail/Microchip-Technology/ATATMEL-ICE-BASIC?qs=KLFHFgXTQiAG498QgmqIdw%3D%3D">basic kit</a>, which includes the programmer and USB cable and handles most standard ISP work, while the <a href="https://www.mouser.com/ProductDetail/Microchip-Technology/ATATMEL-ICE?qs=sGAEpiMZZMuRZxwUfDU0miN4udwF8GpUanrVt%252BDSn9Q4SZQ5wSGB4Q%3D%3D">full kit</a> adds adapters and cables for connecting to a variety of AVR boards and interfaces. These are the gold standard for development, testing, and rescuing misconfigured chips.</p></li><li><p> <strong>SparkFun AVR Programmers</strong> &#8211; Hobbyist-friendly USB-to-ISP programmers that work well with avrdude. The <strong><a href="https://www.sparkfun.com/pocket-avr-programmer.html">Pocket AVR Programmer</a></strong> is a general-purpose ISP programmer for classic AVRs with 64K flash or less. The <strong><a href="https://www.sparkfun.com/tiny-avr-programmer.html">Tiny AVR Programmer</a></strong> is really designed for tinyAVRs but should also work with other classic AVRs via ISP headers. Both are low-cost, reliable alternatives for most tasks, though they don&#8217;t support larger AVRs like the ATmega2560 on an Arduino Mega.</p></li><li><p><strong>Olimex</strong> &#8211; Community-friendly <a href="https://www.olimex.com/Products/AVR/Programmers/">AVR programmers</a> that work well with avrdude and open-source toolchains. They offer a few models that include classic ISP and PDI interfaces, using standard USB (Type&#8239;B) or serial connectors to connect to target boards. Based in Bulgaria, their goal has always been to provide reliable, low-cost programming hardware accessible to hobbyists and small teams.</p></li><li><p><strong>USBasp</strong> &#8211; Cheap, often cloned USB-to-ISP programmers that work with avrdude for classic AVRs. They are known for timing or clock issues, so you get what you pay for, and they&#8217;re not recommended for serious work.  </p></li><li><p><strong>Arduino as ISP</strong> &#8211; In a pinch, you can even turn an Arduino into a DIY AVR programmer.  <a href="https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP/">Official documentation</a> and the <a href="https://github.com/rsbohn/ArduinoISP">ArduinoISP sketch on GitHub </a>show how to connect the SPI pins and RESET to another AVR board so it can be programmed via avrdude. It works for basic projects but isn&#8217;t as robust or reliable as a dedicated hardware programmer.</p></li></ol><p>AVR programmers and target boards come with two common ISP connector formats: a <strong>6&#8209;pin</strong> and a <strong>10&#8209;pin</strong> layout.  Event though the pinout is different, they both carry the same signals.</p><ul><li><p><strong>RST</strong> &#8211; asserted to put the MCU into programming mode</p></li><li><p><strong>MOSI</strong> &#8211; data sent from the programmer to the MCU</p></li><li><p><strong>MISO</strong> &#8211; data sent from the MCU back to the programmer</p></li><li><p><strong>SCK</strong> &#8211; clock line for synchronizing data</p></li><li><p><strong>VCC</strong> &#8211; power supplied to the target MCU</p></li><li><p><strong>GND</strong> &#8211; common ground between programmer and target</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n48_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n48_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 424w, https://substackcdn.com/image/fetch/$s_!n48_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 848w, https://substackcdn.com/image/fetch/$s_!n48_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 1272w, https://substackcdn.com/image/fetch/$s_!n48_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n48_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png" width="600" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116897,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185904613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.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_!n48_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 424w, https://substackcdn.com/image/fetch/$s_!n48_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 848w, https://substackcdn.com/image/fetch/$s_!n48_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 1272w, https://substackcdn.com/image/fetch/$s_!n48_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a85ea77-ab50-408f-a7af-5fb255439356_600x280.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Note:</strong> Both the 6&#8209;pin and 10&#8209;pin AVR ISP connectors use a standard <strong>0.1&#8239;in (2.54&#8239;mm) </strong>pitch. Friggen KiCad had the footprints completely wrong. I got burned using a 2&#8239;mm header that refused to fit a standard ribbon cable. <strong>Always double-check the footprint against the datasheet before spinning up a board</strong>.</p><p>A good programmer isolates and buffers the signals, provides clean timing on RESET, MOSI, MISO, and SCK, and monitors the target&#8217;s VCC to safely handle 5&#8239;V or 3.3&#8239;V boards. Cheap programmers often drive the signals directly, may have poor timing, and usually don&#8217;t sense the target voltage. This can cause glitches, unreliable programming, or even damage the MCU.</p><p> One thing to keep in mind is that no matter the ISP programmer model, you should never hot-plug it into a powered MCU board. Back-feeding signals through the MCU pins can fry the chip.  <a href="https://www.vinthewrench.com/p/how-did-you-make-that">I toasted three before figuring it out</a>.</p><h4>The Dude is also a Detective</h4><p>avrdude can do more than just flash firmware and set fuses. By analyzing how the chip responds, it generates error messages that provide valuable clues about what is happening with the hardware. Every &#8220;command failed&#8221; or &#8220;device not responding&#8221; message tells a story, whether the MCU is powered, the clock is running, the reset line is behaving, or something else is wrong.</p><h5>Getting hardware insight with avrdude</h5><p>You can query a connected AVR and see its voltage, memory layout, fuses, and other low-level info with a single command. For example, using an Atmel-ICE programmer on an ATmega88:</p><pre><code>avrdude -c atmelice_isp -p m88pb -v -q</code></pre><p>This command tells avrdude to use the Atmel-ICE in ISP mode (-c atmelice_isp), target an ATmega88PB (-p m88pb), print verbose output (-v), and quiet any progress messages (-q). Every detail you see here can give you insight into the board&#8217;s power, wiring, and chip health.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FX8Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FX8Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 424w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 848w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 1272w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FX8Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp" width="800" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75702,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185904613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FX8Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 424w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 848w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 1272w, https://substackcdn.com/image/fetch/$s_!FX8Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94a1ea00-1a73-47be-8cba-b07a382884a5_800x773.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">avrdude gives you a wealth of information</figcaption></figure></div><p>Looking at the screenshot, you can see how much information avrdude exposes. For example,</p><ul><li><p><strong>Vtarget</strong> &#8211; the actual logic voltage applied to the MCU. This single number carries a lot of meaning. If your ISP is miswired or plugged in backward, voltage can flow the wrong way through I/O pins or protection diodes, which can prevent communication or even damage the chip. Checking Vtarget lets you catch these problems immediately, before you attempt any programming, saving parts and  avoiding troubleshooting headaches.</p></li><li><p><strong>Device signature</strong>  &#8211; a three&#8209;byte value programmed into every AVR that uniquely identifies the part. Reading it with avrdude confirms that the MCU is powered, wired correctly, and responding over the programming interface. A correct signature tells you the right chip is in place, while a mismatch or failure to read the signature points to wiring issues, misconfigured fuses, or even a dead part. This makes the device signature the first real clue in diagnosing hardware problems before you touch firmware.  You can find a complete list of all known AVR signatures in the <a href="https://github.com/avrdudes/avrdude/blob/main/src/avrdude.conf.in">avrdude sources</a>.</p></li><li><p><strong>Memory details</strong> &#8211; shows the sizes of flash, EEPROM, and fuse memory, along with paging and read/write characteristics. This helps confirm that the chip matches what you expect, that your code will fit, and gives a clear view of the device&#8217;s memory layout before programming.</p></li><li><p><strong>Fuse values</strong> &#8211; hfuse, lfuse, efuse, lock bits. We&#8217;ll cover these in detail a bit later.</p></li><li><p><strong>Timeouts, delays, and poll loops</strong> &#8211; these internal settings show how avrdude is communicating with the MCU. Unusual values or repeated timeouts can hint at signal integrity problems, wiring issues, or timing mismatches between the programmer and the target.</p></li></ul><ul><li><p><strong>Other subtle diagnostics</strong> &#8211; The verbose avrdude output exposes low-level programmer behavior that is critical for debugging:</p><ul><li><p><strong>Chip erase delays</strong> &#8211; reveal whether the programmer and MCU are aligned in timing.</p></li><li><p><strong>RESET disposition</strong> &#8211; shows how the programmer asserts the RESET line; misconfigured reset can block programming entirely.</p></li><li><p><strong>SPI timing parameters</strong> &#8211; Retry Pulse, StabDelay, CmdExeDelay highlight missed pulses or unstable clocks.</p></li><li><p><strong>Synchronization counts</strong> &#8211; SyncLoops, PollIndex, PollValue indicate wiring issues, weak signals, or a missing clock.</p></li><li><p><strong>SCK period</strong> &#8211; the actual SPI clock; ensures timing is safe for the target&#8217;s voltage and speed.</p></li><li><p><strong>Programmer serial number and firmware version</strong> &#8211; helps diagnose hardware quirks or outdated firmware that might affect reliability.</p></li></ul></li></ul><h4>Maybe It&#8217;s a Blown Fuse</h4><p>Fuse settings are one of those things most people gloss over in tutorials about AVRs and Arduino. They&#8217;re low-level configuration bits that control critical behavior: startup sequence, clock source, reset functionality, and brown-out detection. Screw up the fuses, and a perfectly good chip can appear dead or just go haywire.</p><p>There are fuse bytes on most AVRs that control low-level configuration of the microcontroller:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!67MZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!67MZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 424w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 848w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 1272w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!67MZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png" width="800" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/445d1d73-112d-45c2-b996-3791a569e068_800x259.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:274677,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185904613?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.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_!67MZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 424w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 848w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 1272w, https://substackcdn.com/image/fetch/$s_!67MZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F445d1d73-112d-45c2-b996-3791a569e068_800x259.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AVR fuse details</figcaption></figure></div><p>These three main bytes&#8212;<strong>LFUSE</strong>, <strong>HFUSE</strong>, and <strong>EFUSE</strong>&#8212;determine how the MCU powers up, which clock it uses, how it handles resets, and how it protects critical memory sections before any firmware even runs. Together, they ensure the chip operates safely and predictably. Understanding them is essential for diagnosing hardware issues, verifying proper startup behavior, and safely recovering chips that appear unresponsive.</p><p>One good resource is the <a href="https://developerhelp.microchip.com/xwiki/bin/view/products/mcu-mpu/8-bit-avr/structure/fuses/">Microchip AVR Fuse Overview</a>, which explains each fuse bit and its effect on device behavior. Another is the <a href="https://eleccelerator.com/fusecalc/">Eleccelerator AVR Fuse Calculator</a>, an interactive tool to experiment with fuse settings and see exactly what each bit does. </p><p>Either way, it is always prudent to refer to the datasheet for the specific AVR chip you&#8217;re working with.</p><h4>When the Dude Got Nothing</h4><p>Even with a solid programmer and the correct command syntax, sometimes avrdude just can&#8217;t get a response. When the Dude gets nothing, those error messages are gold. They reveal exactly what&#8217;s going wrong at the hardware level:</p><ul><li><p><strong>stk500_recv(): Programmer not responding<br></strong>Usually a wiring problem: missing connections, miswired RESET, or a dead chip. Double-check board selection and connections. Could also indicate a disconnected or faulty programmer.</p></li><li><p><strong>program enable: target does not answer<br></strong>The MCU didn&#8217;t enter programming mode. Check RESET, clock source, power supply, and fuse settings. Could also indicate that the chip is misconfigured or bricked.</p></li><li><p><strong>Invalid device signature<br></strong>Wrong chip selected in avrdude, weak signals, or miswiring. Could also indicate a faulty or partially dead MCU.</p></li><li><p><strong>verification error, first mismatch at byte 0x00<br></strong>Flash didn&#8217;t program correctly. Often caused by poor SPI connection, signal integrity issues, or timing errors. Could also point to an underpowered or noisy target board.</p></li><li><p><strong>timeout while waiting for response<br></strong>Signals aren&#8217;t reaching the chip, timing mismatches, missing pull-ups, wrong oscillator, or programmer speed too high. Could also indicate that the MCU isn&#8217;t powered or RESET is stuck.</p></li><li><p><strong>fuse write failed / fuse read failed<br></strong>Electrical problem or timing violation. Could indicate undervoltage, miswiring, or misconfigured fuses. May also occur if programmer speed is too fast for the target.</p></li><li><p><strong>cannot set sck period / stk500_getsync() attempt N of M: not in sync<br></strong>Programmer cannot communicate reliably. Usually wiring errors, programmer misconfiguration, or incorrect clock source. Could also indicate a partially bricked MCU.</p></li><li><p><strong>avrdude: Device signature = 0x000000<br></strong>No response at all. Check power, clock, and RESET. Chip could be physically damaged, dead, or completely unresponsive.</p></li><li><p><strong>avrdude: error reading EEPROM<br></strong>Communication failure during EEPROM read. Might be wiring, programmer fault, or partially dead chip.</p></li><li><p><strong>target does not answer, HVSP/HVPP mode required<br></strong>Normal for chips with disabled RESET or misconfigured clocks. High-voltage programming may be required to recover the chip.</p></li><li><p><strong>avrdude: unknown programmer id<br></strong>Programmer type not specified correctly, firmware mismatch, or incompatible programmer.</p></li><li><p><strong>signature mismatch: expected 0x1E950F, found 0x000000<br></strong>Chip not responding or incorrectly connected. Indicates a fundamental hardware-level issue rather than a software problem. Could be bad wiring, dead MCU, or misconfigured fuses.</p></li></ul><p>Reading these messages carefully usually lets you identify a dead chip, wiring issues, programmer setup problems, or power/clock faults, long before you suspect your firmware.</p><h4>Time to Break Out the Scope</h4><p>Not every avrdude failure means the MCU is dead. Before assuming the worst and risking another chip, it pays to figure out what&#8217;s actually happening. Problems can stem from wiring, clock issues, power glitches, or programmer misconfiguration. The solution: break out the scope and watch the signals as avrdude tries to communicate with the chip.</p><p>Before assuming the chip is dead, start with the basics. Probe the signals right at the MCU pins. A bad solder joint or broken trace can make everything look fine elsewhere on the board, while the chip itself never sees the signals. Measuring at the MCU ensures you&#8217;re checking the real hardware, not just the board wiring.</p><ol><li><p><strong>Check VCC and GND</strong> &#8211; Ensure the target board is powered, and the programmer&#8217;s ground is connected. A missing or low supply can prevent communication and even damage the chip.</p></li><li><p><strong>Check RESET</strong> &#8211; The programmer uses the RESET line to put the MCU into programming mode. On the scope, you should see the line pulled low briefly when avrdude starts communication. If RESET stays high, fluctuates, or never toggles, the chip won&#8217;t enter programming mode. Causes can include wiring mistakes, a missing pull-up resistor, or a misconfigured fuse that disables external reset. Watching this signal confirms whether the programmer can actually assert reset correctly before you assume the MCU is dead.</p></li><li><p><strong>SCK (clock)</strong> &#8211; You should see a clean, regular square wave whenever avrdude is clocking data into the MCU. No activity or irregular edges mean the programmer isn&#8217;t driving the clock properly, or the line is disconnected.</p></li><li><p><strong>MOSI (Master Out, Slave In)</strong> &#8211; Data sent from the programmer to the MCU should change only on the clock edges. You should see distinct high and low voltage levels corresponding to the bits being sent. Glitches, floating signals, or missing transitions indicate wiring problems, signal integrity issues, or incorrect programmer speed settings.</p></li><li><p><strong>Check MISO (Master In, Slave Out)</strong> &#8211;  It&#8217;s how the MCU talks back to the programmer. On the scope, it should change state in sync with clocked commands on MOSI. If it is flat, stuck high, low, or silent, it usually indicates the MCU isn&#8217;t responding, even if power, RESET, and the clock look correct. Observing MISO gives you the first solid clue that the MCU is capable of communicating before you start suspecting firmware.</p></li></ol><p>Also watch for signal integrity issues. Ringing, slow edges, voltage dips, or spikes can indicate wiring problems, long cables, or missing pull-ups. Observing the signals in real time lets you distinguish a truly dead MCU from one that isn&#8217;t responding due to wiring, timing, or power issues. A quick scope check can save hours of troubleshooting and prevent more chips from being damaged by repeated failed programming attempts.</p><p>Remember, avrdude is only as capable as the hardware it talks to. If the MCU is physically damaged, missing a crystal, or lacks power, no amount of clever command-line flags will make it respond. That&#8217;s why verifying signals directly at the MCU with a scope before blaming firmware is critical.</p><h4>A Couple More Words on the Dude</h4><p>Before we close the book on avrdude, here are a few command-line options people often overlook:</p><ul><li><p><strong>-v / -vv / -vvv</strong> &#8211; Verbose mode. Shows the programmer&#8217;s internal timing, memory page delays, and low-level responses from the MCU. Useful for diagnosing subtle wiring, timing, or signal integrity problems that might otherwise go unnoticed.</p></li><li><p><strong>-B</strong> &lt;value&gt; &#8211; Programmer bitclock period. Slows down communication for breadboards, slow oscillators, or marginal connections, helping avoid &#8220;device not responding&#8221; errors.</p></li><li><p><strong>-U</strong> &lt;mem&gt;:&lt;r|w|v&gt;:&lt;file&gt; &#8211; Memory operations (read, write, verify). Can be used to inspect flash, EEPROM, or fuses and even recover misconfigured chips using high-voltage programming if standard ISP fails.</p></li><li><p><strong>High-Voltage Programming (HVPP / HVSP)</strong> &#8211; Use this when a chip is misconfigured or &#8220;bricked,&#8221; for example if the RESET line is disabled or the clock source is invalid. High-voltage programming lets avrdude access fuses and flash that aren&#8217;t reachable via standard ISP, enabling recovery of the device.</p></li></ul><p>The -c option for high-voltage programming depends on your hardware:</p><ul><li><p><strong>Atmel-ICE:</strong> use -c atmelice_hvpp for High-Voltage Parallel Programming or -c atmelice_hvsp for High-Voltage Serial Programming.</p></li><li><p><strong>Other high-voltage programmers:</strong> consult the device documentation, as each may require a different -c identifier.</p></li></ul><p><strong>Example: Recovering an ATmega88PB Using HVPP</strong></p><pre><code>avrdude -c atmelice_hvpp -p m88pb -U hfuse:r:-:h -U lfuse:r:-:h -U efuse:r:-:h</code></pre><p><strong>Explanation:</strong></p><ul><li><p>-c atmelice_hvpp selects the Atmel&#8209;ICE High-Voltage Parallel Programmer.</p></li><li><p>-p m88pb targets the ATmega88PB.</p></li><li><p>-U hfuse:r:-:h -U lfuse:r:-:h -U efuse:r:-:h reads the high, low, and extended fuse bytes and prints them in hexadecimal.</p></li></ul><p>Use this command when the MCU is misconfigured or appears bricked due to disabled RESET or invalid clock settings. High-voltage programming allows avrdude to access fuses and flash that aren&#8217;t reachable via standard ISP, enabling recovery without replacing the chip.</p><h4>The Dude Abides</h4><p>Make no mistake, avrdude isn&#8217;t just for flashing chips. It&#8217;s a diagnostic microscope, a rescue kit, and your essential sidekick for working with AVR hardware</p><p>Even after decades, new chips, IDE churn, and countless hobbyists and engineers, the Dude still rolls. Avrdude stays under the hood, talking to the MCU, reading and writing fuses, and programming the chip reliably. You can still depend on it to get the job done.</p><p>The Dude just continues to abide.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what this dude writes about</a>. Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Chasing Raspberry Pi Power Management]]></title><description><![CDATA[Lessons Learned Building a Power Switch with Deep Sleep and Wake Control]]></description><link>https://www.vinthewrench.com/p/chasing-raspberry-pi-power-management</link><guid isPermaLink="false">https://www.vinthewrench.com/p/chasing-raspberry-pi-power-management</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Mon, 26 Jan 2026 21:13:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mqH-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The problem of Raspberry Pi power management has been dogging me for a few years now, going back to my <a href="https://github.com/vinthewrench/carradio">Pi Car Radio</a> project in 2022. That project forced me to confront the real issue early on. The Raspberry Pi does not do deep sleep. It was never one of the design goals. You can shut the operating system down, but the board stays powered and continues to draw current. That is not practical unless you like dead batteries.</p><p>There are products and add-on hats that try to address this, and some of them work fine within their limits, but they are partial solutions. Most of them <em>assume the Pi is the system</em> and that only the Pi needs to be managed. My problem was different. I needed power management as part of a larger system, in this case an irrigation controller with solenoids, valves, and real loads, where saving battery and enforcing power state matters more than keeping the Pi alive.</p><h4>Why Shutdown Is Not Enough</h4><p>Shutting down the operating system is only part of the problem. It solves file system integrity, not power management. After shutdown, the Raspberry Pi is still powered, still drawing current, and still connected to everything downstream. Even if the Pi is only drawing 25 mA in this state, which sounds small, it runs 24/7. That is just a slow battery leak, like a tire with a nail in it. It does not fail all at once, but soon enough it will leave you with a dead battery.</p><p>If the goal is to save energy, power has to be physically removed, cutting power to the Pi and to anything else it might be controlling. Once you do that, the Pi is dead and out of the loop. It cannot wake itself.</p><p>That means something else has to decide when power comes back. In my case, that happens for a few specific reasons. The system needs to wake when AC power is restored. If AC is not available for a while, it still needs to wake on its own to do periodic work, things like taking environmental measurements, updating state, or activating and deactivating devices such as irrigation valves and sprinklers.</p><p>Since those decisions cannot depend on the now unpowered Pi, the wake logic has to live somewhere else, in hardware that stays alive when everything downstream is off and can make those decisions without Linux running.</p><h4>Why the Early Designs Fell Short</h4><p>In <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029/comments">earlier versions of this work</a>, I tried to solve the wake problem with discrete components. Simple logic to detect power restoration, edge detection, delays, and restart conditions. It worked on paper and sometimes on the bench, but in practice it was finicky. Small variations in timing, component tolerances, and real-world power behavior made it unreliable. As the system got more complex, those approaches stopped scaling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aR9c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aR9c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aR9c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg" width="500" height="335" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:335,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185228510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aR9c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 424w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 848w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!aR9c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c87db9c-633f-401f-9ab1-ca2c8e6f4e29_500x335.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Reworking an early discrete-logic prototype.</figcaption></figure></div><p>What I needed instead was a microcontroller. Modern MCUs can stay alive at very low power, make clear decisions, and handle timing without depending on RC delays, thresholds, and other analog behaviors. That also made it possible to add controlled, timed wake logic, not just react to power coming back, but wake on purpose to perform scheduled work when nothing else was happening.</p><h4>What It Needed to Do</h4><p>The nice thing about building enough iterations of this design is that I have a good handle on what this power controller needs to look like now.</p><ul><li><p>Remove power from the Raspberry Pi and all downstream loads in response to a shutdown request from the Pi.</p></li><li><p>During shutdown, draw minimal power so the system can remain off for long periods on battery without slowly draining it.</p></li><li><p>Automatically bring the system back up when AC power is restored or on manual request.</p></li><li><p>Support scheduled wakeups to perform periodic work while running on battery.</p></li></ul><p>Beyond that, it needed to fit cleanly into my existing irrigation controller design and be generic enough to reuse in other systems without redesigning the power logic each time.</p><h4>MCU Design Evolution</h4><p>Once it was clear that this problem needed a microcontroller, the question stopped being whether to use one and became which one to use and how the Pi interacts with it. I&#178;C was already in use elsewhere in the irrigation controller, so reusing it for the power controller was a no-brainer.</p><p>Those choices narrowed the MCU requirements to an MCU that truly supports I&#178;C slave operation, a small number of GPIO lines, and a low-power sleep mode with timed wakeup.</p><p>I looked at a few MCU families, including AVR, PIC, and ESP. All of them technically could have been made to work, but AVR ended up being the best fit for this design.</p><p>PIC parts are capable, but the toolchain alone was enough to raise concerns, and the added complexity of configuration bits and device-specific sleep and wake quirks did not offer enough upside to justify adding a new ecosystem to my designs.</p><p>ESP-class parts are designed for connectivity-first systems, not for quietly managing power while everything else is off. Their higher baseline power draw, more complex boot sequence, and built-in Wi-Fi, radios, and background behavior add power cost that is hard to justify for a controller whose primary job is to sleep most of the time.</p><p>AVR ended up being the best match for the job. The parts are simple and electrically well understood, with solid I&#178;C slave support and low-power sleep modes. The toolchain also fit naturally with my existing workflow, using C and Makefiles, with no extra framework garbage.</p><p>Once AVR was the clear direction, the next step was narrowing down the specific part.  </p><p>This took a few tries. I aimed low at first with the <strong><a href="https://www.mouser.com/ProductDetail/556-ATTINY84A-PU">ATtiny84A-P</a></strong>. It had low-power sleep modes, enough GPIO to get started, and was easy to prototype. But the devil was in the details. I&#178;C slave support was workable but fragile, pin count left no margin, and interrupt and wake handling became awkward as soon as more than one wake source was involved. Every small change forced compromises that were exactly what I was trying to avoid in a power controller.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!soKy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!soKy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!soKy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!soKy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!soKy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!soKy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg" width="500" height="340" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:340,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102637,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185228510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!soKy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 424w, https://substackcdn.com/image/fetch/$s_!soKy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 848w, https://substackcdn.com/image/fetch/$s_!soKy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!soKy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F866be647-da76-4e97-8cd9-82f81b7d1961_500x340.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">First redesign attempt using the <strong>ATtiny84A</strong></figcaption></figure></div><p>My next try was the  <strong><a href="https://www.mouser.com/ProductDetail/556-ATMEGA8-16AU">ATmega8-16</a>.</strong> I had used this part before in a model railroad semaphore controller and in a custom car lighting system, so it was already terra cognita. This got me further than the ATtiny84, but it ultimately hit a dead end around sleep and wake behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NFw3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NFw3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NFw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg" width="500" height="384" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109721,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185228510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NFw3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NFw3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9103cb5b-e215-4be7-8ad0-93a60c004a93_500x384.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Early standalone controller built around the <strong>ATmega8-16</strong></figcaption></figure></div><p>While the chip could sleep and wake, combining low-power sleep with multiple wake sources, including timed wakeups, became awkward and brittle. Only a limited set of interrupts remain active in the deepest sleep modes, and timer availability is sharply reduced there. Getting all of my requirements to coexist meant giving up the deepest sleep modes and accepting unacceptably higher power usage.</p><p>On top of that, the ATmega8 is now flagged as <strong>NRND</strong> (<a href="https://electronics.stackexchange.com/questions/544411/what-does-not-recommended-for-new-designs-mean-in-an-attiny-datasheet?utm_source=chatgpt.com">Not Recommended for New Designs</a>), which made it a poor foundation for something I intended to keep building on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mqH-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mqH-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mqH-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg" width="500" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102033,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185228510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mqH-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mqH-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bdcdb5c-000a-421e-8bee-a0abc6b50dee_500x392.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ATmega8-16 power controller prototype. Close but no cigar.</figcaption></figure></div><p>Fortunately, there was a closely related part that addressed the sleep and wake limitations without changing the overall design. That part was the <strong><a href="https://www.mouser.com/ProductDetail/556-ATMEGA88PB-AU">ATmega88</a></strong>. It cleaned up the interaction between sleep modes, interrupts, and timers in a way the ATmega8 never quite managed. It made it possible to stay in the deepest sleep states while supporting multiple wake sources and timed wakeups, without resorting to special cases or power compromises. In practice, the behavior was more predictable across sleep transitions, which is exactly what you want in a controller that exists to manage power.</p><p>The swap to the ATmega88 was easy, using the same TQFP package, pinout, and development workflow, while avoiding the ATmega8&#8217;s NRND status at nearly half the cost. It was largely a matter of swapping parts, not redesigning the board.</p><h4>Standalone Prototype Board</h4><p>As this design evolved, one decision that helped a lot was pulling the power controller out into a standalone breakout board. Instead of repeatedly reworking the irrigation controller, I isolated the power logic and treated it as its own subsystem. That made it much easier to debug wake behavior, power transitions, and failure cases without dragging the rest of the system along for the ride. It also forced the design to be self-contained, which made it easier to reason about and reuse elsewhere. Once the power logic worked on its own, integrating it back into the irrigation system was straightforward.</p><h4>How I Learned to Stop Killing MCUs</h4><p>Another lesson that came out of this design evolution had nothing to do with the MCU itself and everything to do with how the firmware gets onto the board. In earlier versions of this project, I managed to kill more than one chip by being careless with ISP programming. Programming over ISP is simple enough, but hot-plugging an ISP cable into a powered board can back-feed signals through protection diodes or I/O pins in ways the chip really does not appreciate. Sometimes you get away with it. Sometimes you do not. I did not, more than once.</p><p>That experience led to one more revision of the breakout board. I added small series resistors on the ISP lines. This is not a substitute for good habits, but it does help limit the damage when I inevitably screw up.</p><h4>Firmware</h4><p>Once the power controller moved to a microcontroller, I needed to create firmware to run the logic. The good news is that the code itself is fairly simple.</p><p>The controller runs as an I&#178;C slave at a fixed address and exposes a small command set. The Raspberry Pi can request a power-off by opening the relay and can set a wake timer for a future restart.  Once power is removed, the MCU enters a deep low-power sleep mode and waits for a wake event, such as AC power returning, a watchdog-based timer expiring, or a user wake button. </p><p>In its deepest sleep state, the controller draws about 350 &#181;A. That is not the absolute minimum possible, but it is low enough for my application. With the 12 V 22 Ah SLA battery I am using, that level of current works out to years of standby time. At that point, battery self-discharge and real work cycles matter far more than the controller itself. Chasing lower numbers would have meant more hardware complexity for very little practical gain.</p><p>Because this started life as a standalone breakout board, I added a couple of LEDs that can be toggled from the Raspberry Pi over I&#178;C to make bring-up and debugging easier. I also added a jumper to select how the MCU is powered, either from the Pi&#8217;s 5 V rail over I&#178;C or from the onboard regulator tied to the 12 V system supply. That flexibility made it easier to test and isolate power behavior during development.</p><p>The firmware is written in straight C, built with avr-gcc, flashed with avrdude, and driven by a Makefile. I opted away from the Arduino IDE because getting the power savings I needed required full control over what the code does. I could not rely on third-party libraries or hidden startup behavior for something this critical.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xgGM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xgGM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 424w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 848w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 1272w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xgGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png" width="600" height="461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f890c699-3107-4a8d-823c-442989868d03_600x461.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:461,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203031,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185228510?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.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_!xgGM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 424w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 848w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 1272w, https://substackcdn.com/image/fetch/$s_!xgGM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff890c699-3107-4a8d-823c-442989868d03_600x461.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Firmware using the normal toolchains</figcaption></figure></div><h4>The Build Process</h4><p>If you want to see how this board really came together, I lay out the whole process in my article <a href="https://www.vinthewrench.com/p/how-did-you-make-that">How Did You Make That?</a> It walks from the first sketch through schematic capture, PCB layout, fabrication, flashing, and debugging. It&#8217;s the unglamorous middle part between an idea and hardware that actually works.</p><p>And if you want to dig a bit deeper into the details, I&#8217;ve put the entire project on <a href="https://github.com/vinthewrench/powercontrol">GitHub</a>. As I usually do, the source code, KiCad schematics, and PCB layouts are all open, under permissive licenses that let you use, modify, and build on the work and pretty much do whatever you want.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Parts that don't suck: part 3]]></title><description><![CDATA[Marine-grade electrical parts built to survive vibration, weather, and bad ideas.]]></description><link>https://www.vinthewrench.com/p/parts-that-dont-suck-part-3</link><guid isPermaLink="false">https://www.vinthewrench.com/p/parts-that-dont-suck-part-3</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Sun, 25 Jan 2026 20:55:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B9FJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my previous articles I wrote about making good connections and power supply basics. That work matters on the farm because everything sits outside, gets wet, gets dirty, and keeps getting used long after the paint wears off.</p><p>But electrical systems really get put on trial in vehicles, especially off-road ones. Vibration and dirt work like a file, slowly chewing through copper and insulation until something goes bang or catches fire.</p><p>Given that I wasn&#8217;t done talking about reliable wiring, let&#8217;s continue my theme of adapting marine electrical parts for trucks and other low-voltage, high-current builds that need to survive corrosion and abuse.</p><p>Over the years I&#8217;ve done several frame-up off-road truck builds and a lot of rewiring, often with dual-battery setups so winches, radios, and camping gear could run without leaving me stranded in the woods. This time I want to share a few more marine-derived parts that have saved my ass more than once, in particular an automatic charging relay, some rugged circuit breakers, and last but not least, heat shrink.</p><h4>Blue Sea ML-ACR </h4><p>Dual-battery systems are common on off-road vehicles, especially trucks set up for camping and back country travel. These days people won&#8217;t go into the woods without wiring in winches, extra lighting, refrigerators, and inverters, not to mention a Starlink dish so they can post about being off-grid in real time. The trick is running all of that gear without killing your starting battery and getting stranded.</p><p>But this is where a lot of people get the wiring wrong. They hard-tie the batteries together, rely on a manual switch they forget to use, or install a cheap isolator that drops voltage and causes more problems than it solves. What you actually want is a system that automatically combines the batteries when there&#8217;s a charge source and isolates them when there isn&#8217;t, including during engine start.</p><p>Boats have the exact same problem, except the consequences are worse. When you kill the starting battery on the water, you can&#8217;t walk out for help. You end up drifting to Gilligan&#8217;s Island.</p><p>The marine world has been dealing with this exact problem for a long time, and one of their cleanest solutions is the <strong><a href="https://www.bluesea.com/products/category/35/91/ML-ACRs">Blue Sea Systems ML-ACR</a></strong> automatic charging relay. It combines the batteries when there&#8217;s a charging source and isolates them when there isn&#8217;t, with no voltage drop, no switches to forget, and nothing for the operator to screw up.</p><p>Being a marine part, it&#8217;s not cheap, but this is one of those cases where you actually get what you pay for.</p><p> I like the ML-ACR not just because it works, but because the design is genuinely ingenious. It&#8217;s a magnetic-latching relay, not some coil that sits there humming and cooking itself all day. Once it switches, it stays put and stops wasting power.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9nYh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9nYh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9nYh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg" width="400" height="492" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:492,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64523,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185737253?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9nYh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9nYh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee5cc16-b79a-4db2-acf7-a9c361564f89_400x492.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Blue Sea Systems ML-ACR automatic charging relay and control</figcaption></figure></div><p>It just does the right thing on its own, no switch to remember and no ritual before you turn the key. But when you need to take control, it lets you. There&#8217;s manual control for the times you know better than the hardware, and a lock off mode that&#8217;s saved my ass more than once while I was elbows-deep in the rest of the electrical system.</p><p>There&#8217;s no voltage penalty and no fragile electronics in the current path. It can carry a boatload of current and survive a salty, corrosive environment.</p><p>It doesn&#8217;t take a PhD to wire it. The left stud goes to the house battery, meaning the auxiliary battery that runs your gear, and the right stud goes to the starting battery and the alternator.</p><p>There&#8217;s also a remote switch you can mount on the dash for manual control. It lets you force the ML-ACR ON, force it OFF, or leave it in AUTO, with indicator LEDs showing when the batteries are combined, without having to crawl back to the relay. Wiring the switch is simple: red is the control lead, yellow feeds the indicator LEDs, and black is ground. The rest of the wires in the harness are for edge cases and advanced setups, and most of the time you can ignore them.</p><p><a href="https://www.bluesea.com/products/category/35/Automatic_Charging_Relays?Manual_Control=Yes">Blue Sea has lots of instructions</a>, wiring diagrams, and troubleshooting info on their site, plus real customer support if you get jammed.</p><h4>Blue Sea 285 Circuit Breaker</h4><p>Next up is another part I stole straight from the marine world: the <a href="https://www.bluesea.com/products/category/14/32/Circuit_Breakers/285-Series">Blue Sea Systems 285 series</a> circuit breaker.  So what, it&#8217;s just a circuit breaker. That&#8217;s easy to say until one fails on you, or you realize you didn&#8217;t bring a spare fuse. This is one of those parts you install once and forget about, because it just friggen works. </p><p>It&#8217;s waterproof, won&#8217;t corrode itself to death, doesn&#8217;t false-trip, and it can double as a simple disconnect when you&#8217;re working on anything downstream. It&#8217;s also available in both panel-mount and surface-mount versions, which makes it easy to fit into different layouts.</p><p>Another thing I like is that it tells you when something actually went wrong. If a breaker trips, you know it. Big yellow bar. You&#8217;re not left chasing a dead circuit or guessing which fuse quietly gave up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qwau!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qwau!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qwau!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qwau!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qwau!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qwau!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg" width="400" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97013,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185737253?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qwau!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qwau!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qwau!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qwau!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F609decd6-2649-4d85-93d9-dcf246898fd1_400x480.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The reason I chose thermal breakers in vehicle wiring is simple: they make more sense than fuses. Fuses are fine on a bench or in a factory harness where they&#8217;re trying to save a buck. In my trucks, I can do better. When a fuse blows, you&#8217;re dead until you replace it, assuming you even have the right spare. If you don&#8217;t, you start playing MacGyver, and that&#8217;s when bad decisions get made.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N95N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N95N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 424w, https://substackcdn.com/image/fetch/$s_!N95N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 848w, https://substackcdn.com/image/fetch/$s_!N95N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 1272w, https://substackcdn.com/image/fetch/$s_!N95N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N95N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic" width="400" height="272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:272,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62911,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185737253?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N95N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 424w, https://substackcdn.com/image/fetch/$s_!N95N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 848w, https://substackcdn.com/image/fetch/$s_!N95N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 1272w, https://substackcdn.com/image/fetch/$s_!N95N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F256a500a-a063-4d1c-b631-1befac6986fa_400x272.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;ve even used these breakers on solar panels, and they work just as well there, same low-voltage DC problem, same need for protection you can reset or isolate without digging for parts.</p><h4>Adhesive Lined Heat Shrink Tubing</h4><p>The last item in my ongoing romance with marine parts comes from <strong><a href="https://www.navico.com/ancor/products">Ancor</a></strong>, and it&#8217;s one of those things you don&#8217;t really appreciate until you go back and inspect your work a few years later.</p><p>Heat shrink is one of those things people treat like an afterthought, but I think it&#8217;s just as important as the thing it&#8217;s covering. The reason is simple: most wiring failures don&#8217;t start at the conductor, they start at the edge of the connection. That&#8217;s where moisture creeps in, vibration works things loose, and corrosion starts eating copper one strand at a time. Heat shrink doesn&#8217;t just make thing look tidy, it seals the joint, provide strain relief, and keeps the connection from flexing itself to death.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B9FJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B9FJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B9FJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg" width="600" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106378,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185737253?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B9FJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B9FJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F259dbf29-4af2-4ad5-9926-54a9c0a76826_600x452.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ancor Marine Grade Adhesive Lined Heat Shrink</figcaption></figure></div><p>Most wiring failures don&#8217;t happen because the copper is bad. They happen because the wire keeps bending in the same place until it finally gives up. At a crimp or splice, the wire goes from stiff to flexible, and all the movement concentrates right at that transition. Vibration, temperature changes, and normal harness motion work that spot until the copper <strong>work-hardens</strong> and cracks, even while the insulation still looks fine.</p><p>This is why properly executed crimps are preferred over solder anywhere wiring is exposed to movement. When you solder stranded wire, the solder wicks up into the strands and turns a flexible conductor into a rigid section. The wire still moves, but now all the bending gets pushed to the first unsoldered spot, simply relocating the failure instead of fixing it.</p><p>The aircraft industry learned this a long time ago and wrote it into the standards.  Specifications like <a href="https://www.tefcap.com/heat-shrinkable-tubing/">MIL-T-23053</a> and <a href="https://www.sea-wire.com/m23053/">SAE AS23053</a> define heat shrink not just as insulation, but as a <strong>mechanical strain-relief system</strong>. That&#8217;s why <strong>adhesive-lined heat shrink</strong> is used at terminations and splices. The adhesive bonds to the insulation past the crimp, stiffening the wire gradually, controlling where flex is allowed to occur, and preventing conductor fatigue at the rigid-to-flex transition. <strong>Plain heat shrink can&#8217;t do that. It shrinks, but it doesn&#8217;t support.</strong></p><p>The other half of the job is environmental sealing. Corrosion isn&#8217;t mysterious, it&#8217;s basic chemistry. Copper exposed to oxygen and moisture forms copper oxides, and those oxides are poor conductors. Once that starts, resistance goes up at the joint. Higher resistance means localized heating under load, which accelerates oxidation even more. Add salt, dirt, or fertilizer residue and you&#8217;ve built a tiny electrochemical cell that eats copper for breakfast.</p><p>Adhesive-lined heat shrink shuts that whole process down by removing the reactants. When the adhesive melts and seals, it blocks oxygen, moisture, and contaminants from ever reaching the metal. No electrolyte, no oxidation, no slow-motion failure. This isn&#8217;t about making wiring look nice. It&#8217;s about stopping the chemistry before it starts.</p><p>The last piece is workmanship. It&#8217;s not just about looks, it&#8217;s a signal. It tells you someone understands the science behind strain relief, corrosion, and why wiring fails over time, and that they actually give a damn about what they&#8217;re building. Poor workmanship often isn&#8217;t just cosmetic. It&#8217;s a reliable predictor that something is going to fail, usually at the worst possible time.</p><p>Now comes the part everyone thinks they already know, and where most people still screw it up: actually applying heat shrink correctly. </p><ol><li><p><strong>Use a heat gun</strong>. <br>Not a lighter, not a torch, flamethrower or whatever happens to be nearby <em>(you know who you are).</em>  Open flames overheat one side, scorch insulation, and boil the adhesive before it has a chance to flow.  A heat gun gives you even, controlled heat, which is exactly what adhesive-lined heat shrink actually needs to work.</p></li></ol><ol start="2"><li><p><strong>Start in the middle and work outward.</strong></p><p>Heat the center of the tubing first, then move toward the ends. This pushes air and molten adhesive out instead of trapping it inside the joint. If you heat the ends first, you&#8217;re likely to trap air or adhesive, which shows up later as blisters or bubbles that never really seal.</p></li><li><p><strong>Watch for adhesive flow.</strong></p><p>You want to see a small, even bead of adhesive appear at both ends of the tubing. That bead is proof that the seal formed. No bead usually means no seal.</p></li><li><p><strong>Keep the heat moving.</strong></p><p>Don&#8217;t park the gun in one spot. Steady, even heat lets the tubing recover without blistering or burning. If it bubbles, scorches, or smells bad, you&#8217;ve overcooked it.</p></li><li><p><strong>Think strain relief, not just coverage.</strong></p><p>The tubing should extend onto the wire insulation far enough to support it and move the flex point away from the crimp or splice. Covering the joint alone misses the point.</p></li><li><p><strong>Let it cool before touching it.</strong></p><p>Don&#8217;t tug, flex, or move the wire while it&#8217;s hot. Let the adhesive set as it cools so the joint locks in mechanically.</p></li></ol><p>Done right, adhesive-lined heat shrink becomes part of the connection. Done wrong, it&#8217;s just melted plastic that smells bad.</p><p>Like anything else, your choice of tools often limits how good a job you can actually do. Cheap heat guns tend to run either too cold or way too hot, with nothing in between. I&#8217;ve burned through enough of them to know they&#8217;re fine for stripping paint, but not much else.  When you&#8217;re working with adhesive-lined heat shrink, brute force isn&#8217;t the goal. Control is.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UTsN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UTsN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UTsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg" width="600" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119631,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185737253?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UTsN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UTsN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32854f89-cb26-4b9f-8136-6d23fbb0e733_600x452.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Makita HG6530VK Variable Temperature Heat Gun Kit</figcaption></figure></div><p>I eventually landed on the <strong><a href="https://www.amazon.com/dp/B07QJMH2F4">Makita HG6530VK</a></strong>, and it stuck. It gives me real control over both airflow and heat. The variable temperature lets me shrink tubing evenly and get the adhesive to flow without scorching insulation or boiling the liner. It also comes with several attachments, including a curved nozzle specifically designed for heat shrink. For me, the digital display isn&#8217;t a gimmick, it lets me repeat the same results every time instead of guessing.</p><h4>Do it right. Walking home sucks.</h4><p>None of this is exotic or clever. It&#8217;s just choosing parts that were designed for environments where failure isn&#8217;t an option and using them correctly. Boats, trucks, and farm equipment all fight the same enemies: vibration, moisture, corrosion, and time. Do this right and the electrical system disappears into the background, which is exactly where it belongs. When you&#8217;re cold, tired, and miles from pavement, the best wiring is the kind you don&#8217;t have to think about.</p><p>As I say in each of these pieces, there are no sponsorships here. Don&#8217;t ask for one. No affiliate links. No favors. I&#8217;m pretty sure most of these companies have never heard of me, and that&#8217;s fine. I&#8217;m writing about these parts because they earned their place in my shop by working, not because anyone asked or paid for it.</p><div><hr></div><p>If you like building things and want to know why certain parts get chosen and what actually survives outside a lab, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write</a>. Sharing it helps real people find the work. The algorithm can do whatever it wants.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Parts that don't suck: part 2]]></title><description><![CDATA[Power Supplies and Voltage regulators]]></description><link>https://www.vinthewrench.com/p/parts-that-dont-suck-part-2</link><guid isPermaLink="false">https://www.vinthewrench.com/p/parts-that-dont-suck-part-2</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Sun, 25 Jan 2026 00:40:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!b9ou!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>MEAN WELL DRC Security Power Supplies</h4><p><strong>Mean Well Enterprises</strong> was founded in Taiwan in 1982 by <strong>Jerry Lin</strong>, during the early expansion of personal computing. According to the company, the original brand name was taken from Lin&#8217;s English dictionary. &#8220;Mean well&#8221; was intended to convey the idea of having good intentions. The company&#8217;s initial work focused on power supplies for IBM-compatible clone systems, where machines were assembled from off-the-shelf parts rather than built by a single vendor.</p><p>Their power supplies became known for tolerating unstable input power, handling load changes cleanly, and operating continuously without intervention. As Mean Well later shifted fully into industrial power supplies, they gained a reputation for conservative ratings, consistent behavior across product lines, and long-term availability.</p><p>In building my <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029">irrigation system</a>, I had to <a href="https://www.vinthewrench.com/p/kicking-zeuss-ass">battle with dirty rural power</a>, voltage spikes, brownouts, and outright power failures. I needed a power supply that would stay up through short disturbances, provide status signals when line power dropped, and keep the system running long enough to shut down cleanly instead of crashing. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RvNc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RvNc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RvNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg" width="700" height="490" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:490,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113487,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185673910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RvNc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RvNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89cf5af7-1e9c-43c4-8dce-313012d15137_700x490.jpeg 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><figcaption class="image-caption">MEAN WELL DRC-100A used in my irrigation system</figcaption></figure></div><p>That led me to the Mean Well DRC series, specifically the DRC-100, which is designed as a security power supply for alarm and access control systems that must continue operating through brief power interruptions. The DRC-100 is not just an AC-to-DC regulated power supply. It also functions as a battery charger and a backup power controller in a single unit.  This lets me run the system from line power when available while keeping a battery charged and ready to take over when the grid fails.</p><p>The wide 90&#8211;264 VAC input range and tolerance for brownouts are a good fit for my rural environment, as are the convection cooling and temperature ratings.  On top of that, the DRC includes basic protections like overload and over-voltage protection, battery low cut-off, and reverse polarity protection.</p><p>The DRC series comes in 13.8 V and 27.6 V versions, with power ratings of 40 W, 60 W, and 100 W. For many systems, the smaller units are sufficient. In my case, I was powering a Raspberry Pi and a few irrigation valves at once, and the 5.0 A available from the 60 W unit at 12 V was cutting it a little close, so I chose the 100 W model for additional current margin.</p><p>The DRC units also provide two signals, AC OK and BATTERY LOW, which behave like dry relay contacts and do not source any current.  In my article<a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029"> Smart Power Switch and Shutdown for Raspberry Pi Farm Projects</a>, I describe how I wire these signals into the controller so the software knows when line power has dropped and when the battery is nearing its limit. That allows the system to finish anything in progress and shut down cleanly.</p><p>After switching to the DRC, the irrigation system has stayed up and running without interruption, which solved the power problems outright.</p><h4>TRACO Power DC/DC Converters</h4><p>Once the incoming power was stabilized with the DRC, the remaining problem was converting the 13.8 V supply to usable voltages for the Raspberry Pi and control logic. That voltage works well for loads like valves and relays, but it is outside the safe input range for directly powering logic. </p><p>This is where <strong><a href="https://www.tracopower.com/">TRACO Power</a></strong> DC/DC converters fit into the design. TRACO Power is a Swiss manufacturer focused on embedded power components used in industrial, rail, and automation systems where isolation and long-term reliability are expected.</p><p>I wanted to use an isolated DC-DC converter to keep the Raspberry Pi power rail from being directly tied to the noisy valve and PWM drive domain. As I describe in my <a href="https://www.vinthewrench.com/p/not-another-sprinkler-valve-article">sprinkler valve article</a>, the valves are driven with PWM, which produces fast current transitions and ground movement. That behavior is useful for reducing power in the solenoids, but it is not something I want coupled directly into logic power.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fQq6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fQq6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fQq6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg" width="700" height="407" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:407,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127281,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185673910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fQq6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fQq6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc33a3bba-2fd3-43b9-9f5b-30dc21e67a84_700x407.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>TRACO Power</strong> DC/DC modules</figcaption></figure></div><p>Using isolated DC/DC converters breaks the direct electrical path between the noisy valve and PWM drive domain and the Raspberry Pi logic rail. That keeps ground movement and switching noise from being injected into the logic supply and lets me control where, and if, the grounds are tied.</p><p><a href="https://github.com/vinthewrench/GardenIrrigation">My board is laid out</a> to accept either of two <strong>TRACO Power</strong> DC/DC modules, depending on what the system is doing and the environment it is running in. For low-power operation with a Raspberry Pi Zero 2 W, I use a <strong><a href="https://www.tracopower.com/tel5-datasheet">TEL 5-1211</a></strong>. When more power is needed, such as when running a Raspberry Pi 5, I can install a <strong><a href="https://www.mouser.com/datasheet/3/1230/1/thn30wir_datasheet.pdf">THN 30-2411WIR</a></strong><a href="https://www.mouser.com/datasheet/3/1230/1/thn30wir_datasheet.pdf"> </a>without changing the rest of the design.</p><p>I chose the TRACO converters because they are designed as embedded power components rather than general-purpose buck regulators. They provide full isolation, tolerate wide input voltage ranges, and are rated for continuous operation. Several of the parts I use also carry railway ratings, indicating tolerance for electrical transients, temperature extremes, and long service life.</p><p>These parts aren&#8217;t cheap, and they cost significantly more than generic DC/DC modules. But in a system that lives outdoors, drives inductive loads, and is expected to run unattended, the cost of me going out there to fix power instability problems is higher than the price difference.</p><h4>Pololu Voltage Regulators</h4><p>Not all of my projects require isolated regulation. In parts of the system where the power domain is already clean and there are no large inductive or PWM-driven loads, a simple non-isolated step-down regulator is sufficient.</p><p>I got turned on to the Pololu regulators by a buddy at <strong>Apple</strong> who also spends his off time coaching kids in robotics competitions and working on model railroads. In that world, parts get abused, wiring isn&#8217;t perfect, and things are expected to work anyway.</p><p><strong><a href="https://www.pololu.com/">Pololu Robotics &amp; Electronics</a></strong> is a U.S.-based company founded in 2000 by three students at Massachusetts Institute of Technology, where they developed an infrared beacon system for the <a href="http://6.270.scripts.mit.edu/">6.270 Autonomous Robot Design Competition</a>. After graduating, they moved the company to Las Vegas for its better climate and lower taxes (imagine my shock). Pololu started with small robotics platforms and motion control hardware and later expanded into <a href="https://www.pololu.com/category/136/voltage-regulators">compact voltage regulators</a> and other embedded components.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b9ou!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b9ou!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b9ou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg" width="700" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182219,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185673910?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!b9ou!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b9ou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25343f9f-9b0c-4a4f-bddc-81f8d25bb12e_700x536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Pololu voltage regulators</figcaption></figure></div><p>While Pololu makes a<a href="https://www.pololu.com/category/136/voltage-regulators"> wide variety of voltage regulators</a>, two ultra-compact modules that show up repeatedly in my designs are the <a href="https://www.pololu.com/product/4091">D36V50F5</a> (5 V, 5.5 A) and the <a href="https://www.pololu.com/product/5433">D45V5F5</a> (5 V, 500 mA). I&#8217;ve used a number of their regulators over the years, and none of them have failed on me yet.</p><p>The D36V50F5, and the newer <a href="https://www.pololu.com/product/2858">D24V22F5</a>, are well suited for powering a Raspberry Pi from a 12 V or higher supply. They handle the Pi&#8217;s load transients and startup currents well, and I&#8217;m using one of these in my current automated chicken coop project.</p><p>For my <a href="https://github.com/vinthewrench/powercontrol">AVR-based power switch logic</a>, where idle drain matters more than peak current, I selected the D45V5F5 because its low quiescent current makes it a good fit for always-on control and power-management circuits.</p><p>The parts use standard 0.1-inch pin spacing, which makes them easy to prototype with and integrate into a PCB as a submodule.</p><p>And as I said at the beginning of the series, there are no sponsorships here. Don&#8217;t ask me for one. No affiliate links. No favors. I&#8217;m fairly sure most of these companies have never heard of me, and that&#8217;s fine. I&#8217;m writing about these parts because they earned their place in my shop by working, not because anyone asked or paid for it.</p><div><hr></div><p>If you like building things and want to know why certain parts get chosen and what actually survives outside a lab, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write</a>. Sharing it helps real people find the work. The algorithm can do whatever it wants.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Parts that don't suck: part 1]]></title><description><![CDATA[Making good connections.]]></description><link>https://www.vinthewrench.com/p/parts-that-dont-suck-part-1</link><guid isPermaLink="false">https://www.vinthewrench.com/p/parts-that-dont-suck-part-1</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Sat, 24 Jan 2026 19:38:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TGd1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve built a lot of projects over the years. Some worked the first time. Some didn&#8217;t and just needed coaxing with a bigger hammer. What I learned is that while most electronic parts <em>technically</em> work, a lot of them only work long enough to pass a bench test, then quietly screw you later when the system is cold, hot, vibrating, wet, or you&#8217;re 20 hours into a 10-hour shift.</p><p>This series is about parts that didn&#8217;t pull that crap. Every now and then I run across something I really like working with because it&#8217;s easy to use, well thought out, and takes all kinds of abuse while keeping on ticking.</p><p>Let me also say this up front. Like most things I write, these are my opinions. You are not only allowed to disagree with me, I encourage it. And if you have a part you trust that I do not mention, drop it in the comments. Maybe you&#8217;ve learned something I haven&#8217;t yet. That is how this works.</p><p>And to be clear, no sponsorships. No affiliate links. No favors. I am pretty sure most of these companies have never heard of me, and that is fine. I am writing this because these parts earned their place in my shop, not because anyone asked  or paid me to.</p><p>Now that that&#8217;s out of the way, let&#8217;s dive in.</p><h4>Anderson Powerpole.</h4><p>If you&#8217;ve spent any time around ham radio, emergency comms, or portable DC power in the US, you already know these. If you haven&#8217;t, you should.</p><p>Powerpoles come from <a href="https://www.andersonpower.com/us/en/about-us/timeline.html">Anderson Power Products</a>, a company that&#8217;s been building high-current connectors for industrial use since the mid-20th century. Their connectors show up in forklifts, battery systems, and industrial chargers, and they come in a wide range of sizes, from connectors you can weld with down to ones you can hold between two fingers. Anderson Power Products started in Boston and, by 1972, had moved manufacturing to Sterling, Massachusetts, where they are still based today.</p><p>The ones most people recognize, and the ones I&#8217;m talking about here, are the 15/30/45 Amp Powerpole. These weren&#8217;t originally designed for hams. It was simply a solid modular DC connector with good contact pressure, silver-plated contacts, and a housing that didn&#8217;t care which side was &#8220;male&#8221; or &#8220;female.&#8221;  </p><p>Kind of like some of my neighbors when I lived in Ashland.</p><p>Then <a href="https://www.arrl.org/ares-races-faq">ARES, RACES</a>, and <a href="https://www.vinthewrench.com/p/hamming-it-up">ham radio</a> groups did what they always do. They standardized and settled on a single orientation. Hold the connector with the locking tongue up, red on the right and black on the left. Suddenly, gear from different people just plugged together and worked.</p><p>Hams love these because a properly crimped Powerpole will carry up to 45 A on <a href="https://powerwerx.com/red-black-bonded-zip-cord">10 AWG</a> wire. Even though I often run them at much lower current, I still use the <a href="https://powerwerx.com/tricrimp-powerpole-connector-crimping-tool">proper crimping tool</a> so a bad crimp does not bite me in the ass at the worst possible moment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TGd1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TGd1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TGd1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg" width="600" height="418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:141499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185585012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TGd1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TGd1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc385eb0d-2622-4efa-a416-f1371e7c7a93_600x418.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong><a href="https://powerwerx.com/powerpolebag-tricrimp-powerpole-case-gear-bag">Powerpole crimping tool and kit</a></strong></figcaption></figure></div><p>And for the record, Anderson has made Powerpoles in much larger sizes, up to  <a href="https://powerwerx.com/anderson-sb-connectors-sb350-350amp">350 A</a> long before the smaller versions became common in ham radio. I have used the larger ones myself in a few 4WD truck builds for winches.</p><p>Quick note on <strong><a href="https://powerwerx.com/">Powerwerx</a></strong>, since their name comes up a lot around Powerpoles. They&#8217;re not the manufacturer, but they&#8217;re a reliable source of Powerpole-related parts, wire, and other useful gear, with great customer service.</p><p>One thing to keep in mind, Powerpoles are not sealed connectors. Rain, salt air, and mud will eventually win. In those environments, I reach for something built to live outside.</p><h4>Deutsch DT Connector</h4><p><a href="https://www.te.com/en/products/connectors/automotive-connectors/intersection/deutsch-dt-series-connectors.html?tab=pgp-story">Deutsch DT</a> is the gold standard for rugged, sealed multi-conductor connectors used in automotive, off-road, and industrial gear. They keep working when things shake, heat up, and get wet. You&#8217;ll find them everywhere from tractors and bulldozers to race cars. I even use them on my farm&#8217;s irrigation system.</p><p><a href="https://investors.te.com/news-releases/press-release-details/2011/TE-Connectivity-in-Exclusive-Negotiations-to-Acquire-Deutsch/default.aspx">Deutsch Industrial was founded in 1938 by Alex Deutsch</a> in Los Angeles, California, building electrical connectors for trucks, heavy equipment, and military hardware. This was the world of diesel engines, fleets, and outdoor machinery, where a wiring failure has real consequences.</p><p>By the 1950s, Deutsch was building sealed, serviceable connectors for military and aviation use, with removable contacts and positive locking. Those ideas evolved through the 1970s and 1980s into the DT series, a sealed multi-pin connector system built for harsh environments. In 2012, Deutsch was acquired by TE Connectivity, where the DT line became part of its automotive and industrial connector portfolio.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6E75!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6E75!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6E75!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6E75!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6E75!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6E75!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg" width="700" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:158227,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185585012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6E75!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6E75!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6E75!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6E75!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03a7320d-69e0-42b5-9560-c43a322e6357_700x527.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">You can find <a href="https://www.te.com/en/products/connectors/automotive-connectors/intersection/deutsch-dt-series-connectors.html?tab=pgp-story">Deutsch DT</a>  starter kits oni</figcaption></figure></div><p>I&#8217;ve used DT connectors in  my <a href="https://github.com/vinthewrench/carradio">Raspberry Pi Car Radio Project</a> and around the farm, where weather and vibration are just part of the deal. These days, getting started is easy. You can easily find <a href="https://www.amazon.com/s?k=deutsch+dt+connectors">starter kits on Amazon</a> with housings, pins, seals, and a basic crimper all in one box. It&#8217;s enough to learn the system and build real harnesses without hunting part numbers.</p><p>Another popular sealed connector system is <strong><a href="https://www.amazon.com/s?k=weather+pack+connectors+kit">Weather Pack</a></strong>, along with its follow-on Metri-Pack family. Developed by <a href="https://www.hotrod.com/how-to/understanding-gms-most-common-plug-options?utm_source=chatgpt.com">Delphi Packard</a>,, they came out of the Detroit OEM world and were optimized for high-volume automotive production. Fast to assemble, cost-controlled, and often just durable enough to outlast the car loan, not the car.</p><p>I have used both systems, and while the  Weather Pack seems more common in US OEM automotive harnesses, I tend to lean towards the Deutsch DT when vibration, moisture, and long-term reliability matter more than assembly speed.</p><h4>Blue Sea ST Blade Fuse Block</h4><p>Once you&#8217;ve got reliable connectors and solid harnesses, the next thing you want to deal with is circuit protection. No matter how good your wiring or how clever your design, unprotected circuits will fail spectacularly when something goes wrong. That&#8217;s where fuses and fuse blocks come in. They keep projects organized and accessible, and they keep shorts from turning into blown gear or melted wiring.</p><p>My time working with <a href="https://www.vinthewrench.com/p/friggin-in-the-riggin">marine electronics</a>, and from books like <strong><a href="https://www.amazon.com/Boatowners-Mechanical-Electrical-Manual-4-dp-0071790330/dp/0071790330/ref=dp_ob_title_bk">Boatowner&#8217;s Mechanical and Electrical Manual</a></strong>, taught me a lot about building safe, well-protected power circuits.</p><p>One of the places those lessons show up over and over is in how I handle power distribution. A clean, well-protected fuse block makes everything downstream easier to reason about, easier to service, and harder to screw up.  One of my go-to parts for that job, which I&#8217;ve used everywhere from Jeeps and <a href="https://www.vinthewrench.com/p/building-a-standby-power-system-for">well pumps</a> to chicken coops, comes from <strong><a href="https://www.bluesea.com/">Blue Sea Systems</a></strong>.</p><p>Blue Sea Systems has been building marine-rated electrical components since 1992 out of Bellingham, Washington. Their lineup covers AC and DC power gear like battery management, circuit protection, busbars, switches, and fuse blocks, all designed for harsh environments.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IKaz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IKaz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IKaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg" width="700" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185585012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IKaz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IKaz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3e2d221-99f3-4233-8754-22de5d1215a8_700x472.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The specific part I keep coming back to is their <strong><a href="https://www.bluesea.com/products/5025/ST_Blade_Fuse_Block_-_6_Circuits_with_Negative_Bus_and_Cover">ST Blade Fuse Block</a></strong>, especially the version with a cover and a negative bus.  I particular like this because it allows me to  the power distribution wiring clean, organized and easy to service. It uses standard automotive <a href="https://tonful.com/standard-vs-mini-automotive-blade-fuse-guide/?utm_source=chatgpt.com">ATO and ATC blade fuses</a>, which are cheap, easy to find, and easy to replace in the field, and the cover keeps fingers, tools, and stray debris out while still letting you see what&#8217;s going on.</p><p>You might also want to poke around <a href="https://www.bluesea.com/">Blue Sea&#8217;s website</a>. The tools and reference material are genuinely useful when you&#8217;re laying out power systems and trying to do it right.</p><p>Coincidentally, another company out of Bellingham, Washington worth mentioning is <strong><a href="https://www.navico.com/ancor/products">Ancor</a></strong>. They make tinned copper wire and heavy-duty connectors that hold up in harsh environments. I&#8217;ve certainly  spent more than a few bucks at West Marine on their gear over the years because it survives corrosion and vibration where ordinary automotive parts fail. These days, you can find the same stuff online too.</p><p>I haven&#8217;t tried every brand out there, but tinned copper is the key detail. If the wire is truly marine grade, it will hold up better anywhere moisture and corrosion are part of the deal.</p><p>These parts earned their place in my shop. Nobody asked. Nobody paid. More to come.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Hitting like or sharing helps real people find the work. The algorithm can go pound sand.</p><p></p>]]></content:encoded></item><item><title><![CDATA[How did you make that?]]></title><description><![CDATA[What actually happens between an idea and a working circuit board]]></description><link>https://www.vinthewrench.com/p/how-did-you-make-that</link><guid isPermaLink="false">https://www.vinthewrench.com/p/how-did-you-make-that</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 23 Jan 2026 21:07:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3zZ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you&#8217;ve been reading along, you&#8217;ve already seen examples of some of the electronic projects I&#8217;ve built for real use on the farm &#8212; controllers, sensors, power systems, and things that have to survive dirt, weather, and neglect. I get asked fairly often how those projects actually come together, and what tools I use today to make them real. </p><p>There are already plenty of excellent tutorials online for getting started with electronics and PCB design, and this isn&#8217;t meant to replace any of those. Instead, I want to show my workflow: the tools I actually use, how I move from an idea to a working board, and why I make the choices I do. I&#8217;ll probably toss in a few hard-earned tips along the way, mostly so you don&#8217;t repeat <em>all</em> of my mistakes. That said, part of being innovative is making your own mistakes.  That said, part of being innovative is making your own mistakes, and with a little luck, if you stick with this long enough, you&#8217;ll become an expert at desoldering and reworking too.</p><p>This perspective comes from roughly fifty years of building hardware, both as a hobbyist and professionally. When I first started, PCB layout meant acetate, tape, and plenty of ferric chloride, and it required a lot of patience for mess and mistakes.</p><p>Later on, we got some genuinely useful CAD tools, including DesignWorks on the Macintosh, which at the time felt like a small miracle. Even a hobbyist could draw real schematics, lay out real boards, and produce professional, manufacturing-ready output that could be sent directly to a PCB fabricator.</p><p>DesignWorks and EAGLE weren&#8217;t perfect, but they were incredibly usable. I could just get work done without wrestling the interface.</p><p>So fast forward fifty years. I&#8217;m still coding in C and Unix, still designing boards pretty much the same way. And although all the experts on the internet routinely rave about how great KiCad is, my wife makes me close my office door when I&#8217;m using it, because its inability to re-route intelligently when you move a single part is often enough to make me curse out loud.</p><h4>An example project</h4><p>Let&#8217;s start with a small project I was working on recently. I wanted to improve the <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029">power control circuit</a> used in my Raspberry Pi&#8211;based irrigation controller. I chose this example because it wasn&#8217;t just a hardware design exercise. It also required writing, downloading, and debugging the firmware that runs on the board.</p><p>My irrigation controller sometimes has to fall back on battery power, which means the Pi can&#8217;t be left on all the time. I needed a way to completely shut off power to the Pi, then turn it back on either periodically to perform watering tasks or automatically when AC power is restored. My previous design didn&#8217;t quite work the way I wanted, so rather than spinning a new irrigation controller board, I prototyped this as a standalone subsystem.</p><p>The subsystem communicates with the Pi over I&#178;C and controls a small power relay. It listens for commands from the Pi and switches the relay accordingly, allowing software to shut the Pi fully off to conserve battery and bring it back up on a schedule or when AC power returns.</p><p>As with most of my projects, it started as a rough idea, became a schematic, then a board, and went through a few rounds of revision before it behaved the way I wanted.</p><h4>Design approach</h4><p>For this design I chose to use a simple microcontroller. Not a Linux system and not a full SBC like a Pi, just a small MCU handling the control logic.  Specifically, I&#8217;m using an <a href="https://www.microchip.com/en-us/product/atmega88pb">ATmega88PB-AU</a>, which is part of Microchip&#8217;s <strong>AVR (</strong><em><a href="https://atmelcorporation.wordpress.com/2014/08/21/vegard-wollan-on-inventing-the-avr-chip/?utm_source=chatgpt.com">Alf and Vegard&#8217;s RISC</a>) </em> family of microcontrollers.</p><p>It&#8217;s the same class of device people associate with Arduino-style projects, but here it has a very specific role: listen for commands over I&#178;C and drive a latching relay that controls power to the system. I used a latching relay again, this time choosing a less expensive part than my original design. Once it&#8217;s set or reset, it holds its state without continuous power, which is exactly what you want in a battery-backed system.</p><p>At this stage I usually spend a lot of time on my favorite parts distributor sites like <a href="https://www.mouser.com/">Mouser</a> and <a href="https://www.digikey.com/">Digi-Key</a>, something I&#8217;ve been doing in one form or another since the mid-1970s. I check availability and make sure the parts I choose are likely to still exist a few years from now. This also includes downloading and digesting datasheets, and checking whether CAD symbols and footprints are already available or if I&#8217;ll need to create them myself.</p><p>A lot of design decisions get made right here, long before anything is drawn on a schematic. It&#8217;s like to look at manufacturer reference designs and sometimes search for examples where others have used the same parts, along with any feedback on how they behaved in real designs.</p><p>You do have to be selective about what you trust. Manufacturer reference designs are usually the most reliable starting point, since they reflect how the part was intended to be used and tested. Beyond that, the quality drops quickly. A lot of what you&#8217;ll find online is cargo-cult engineering. Schematics get copied without understanding, mistakes get propagated, and bad designs acquire authority simply because they&#8217;ve been repeated often enough. Anything you didn&#8217;t derive or verify yourself deserves healthy skepticism.</p><p>These days I use AI as a first-pass tool in place of search engines for this kind of research.  It can be helpful for quickly finding datasheets, reference designs, and examples. BUT, you need to not only know what to ask, but also treat the results with skepticism.  AI has given me some genuinely bad advice, and it will do so confidently. Anything it suggests, even pin-outs, still needs to be verified against datasheets and real designs.</p><p>In some cases, however, I&#8217;ll deliberately use pre-made modules instead of designing everything from scratch. Things like DC/DC converters are a good example. I used to spend days designing and debugging these, but these days a well-characterized module from a vendor like Pololu or Traco Power saves time, reduces risk, and lets me focus effort where it actually matters.</p><blockquote><p>I plan to do a series of articles later talking about some of the parts and modules I use regularly, and why I trust them in real projects</p></blockquote><h4>A few rules I&#8217;ve learned the hard way</h4><ul><li><p>Availability beats elegance. If you can&#8217;t buy the part, the design doesn&#8217;t matter.</p></li><li><p>I prefer parts with multiple sources and long production histories.</p></li><li><p>Datasheets describe how a part is <em>supposed</em> to work. Errata and reference designs tell you how it actually behaves.</p></li><li><p>Assume the first board will be wrong. Make it cheap to fix and easy to debug. Add <a href="https://www.mouser.com/ProductDetail/534-5001">test points</a> like you&#8217;ll need them, because you will.</p></li><li><p>Don&#8217;t get frustrated. I&#8217;ve been doing this professionally for decades and I still get things wrong. That&#8217;s part of the process.</p></li></ul><p>And most of all, don&#8217;t let the bastards from internet forums like Stack Overflow, Hacker News, or Reddit get you down. Plenty of people online talk big. Most of them have never built a damn thing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jSP8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jSP8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 424w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 848w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 1272w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jSP8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png" width="300" height="329" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:329,&quot;width&quot;:300,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24086,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.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_!jSP8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 424w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 848w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 1272w, https://substackcdn.com/image/fetch/$s_!jSP8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca346e9e-926c-4568-aaf4-9a456b0332e4_300x329.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Someone Is Wrong on the Internet&#8221; by Randall Munroe, from xkcd. CC BY-NC 2.5.</figcaption></figure></div><h4>Schematic capture</h4><p> Once I&#8217;ve narrowed things down a bit, it&#8217;s time to draft the schematic. These days I use <a href="https://www.kicad.org/">KiCad</a>. It&#8217;s an open-source tool for schematic capture and PCB layout, runs on all the major platforms, costs nothing, and is widely used, which makes sharing designs and collaborating easier. I&#8217;m not particularly happy with it, but it&#8217;s free, broadly supported, and, for better or worse, it does work. There&#8217;s also no shortage of tutorials and examples, which lowers the barrier to getting started.  </p><p>As a matter of fact, I&#8217;m not really happy with any of the CAD tools these days. They&#8217;ve all become bloated, overloaded with features I rarely need, and far more complex than the problems I&#8217;m usually trying to solve. </p><p>So we&#8217;re stuck with KiCad. Cussing about it won&#8217;t make it better, and my wife will just have to close my office door again. Here are a few survival rules that have kept me sane.</p><ol><li><p><strong>Always verify your parts against the datasheet.</strong></p><p> I&#8217;ve been burned more than once by errors in the stock component libraries. Instead, I usually pull symbols and footprints from external sources, and then verify them anyway. Sources I commonly check:</p></li></ol><ul><li><p><a href="https://componentsearchengine.com/">Component Search Engine</a></p></li><li><p><a href="https://www.snapeda.com/home/">SnapEDA</a></p></li><li><p><a href="https://www.ultralibrarian.com/">Ultra Librarian</a> </p></li><li><p>Manufacturer-provided libraries, often the most accurate when available, but not always KiCad-native </p><p><br>No matter where a symbol or footprint comes from, I treat it as a starting point, not a guarantee. The datasheet is still the source of truth. </p></li></ul><ol start="2"><li><p><strong>Draw schematics for humans.</strong></p><p>Make the signal flow obvious. Inputs on the left, outputs on the right. Power at the top, ground at the bottom. Group related circuitry together. Don&#8217;t be afraid to edit symbols if it improves clarity. Rearranging pins, splitting multi-unit parts, or creating a custom symbol is often better than forcing the schematic to match a generic library part. If someone can&#8217;t understand the circuit without clicking around, you won&#8217;t be able to either a week later.</p></li><li><p><strong>Give your signals good names.</strong></p><p>Clear net names make schematics readable and debugging tolerable. Future You will care a lot about this.</p></li><li><p><strong>Expect KiCad to change between versions.</strong></p><p>KiCad has a habit of moving things around and changing the way things work from release to release. It&#8217;s almost always better to finish a project than to upgrade in the middle of it.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aQm8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aQm8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 424w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 848w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 1272w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aQm8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png" width="1200" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:409476,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.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_!aQm8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 424w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 848w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 1272w, https://substackcdn.com/image/fetch/$s_!aQm8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad9d65e-1572-4728-9988-fd7f2d0e45b6_1200x795.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Power Controller schematic</strong></figcaption></figure></div><h4>Board Layout</h4><p>Schematics are the easy part. Board layout is where physics, manufacturing, and future debugging all come into play. Board layout is as much art as it is science.</p><p>At its core, board layout is a puzzle. You&#8217;re figuring out how to place parts so they make sense electrically and physically, then routing connections along the shortest, cleanest paths without painting yourself into a corner. Every move constrains the next one.</p><p>It&#8217;s a chess game. You quickly discover that the part manufacturers never talked to each other, or if they did, they conspired to make interconnection as awkward as possible.</p><p>All of this happens inside a set of engineering rules. Clearances, impedance, current density, manufacturability. Ignore them and you will fail, sometimes quickly and sometimes in subtle, intermittent ways that will cost you days.</p><p>Rules alone don&#8217;t make a good board. The art is knowing which rules matter <em>here</em>, which ones barely matter at all, and when violating a &#8220;best practice&#8221; is the least bad option.</p><p>I wish I could recommend a good course or book on the topic. I can&#8217;t. If there&#8217;s a single book that gets the mindset right, it&#8217;s <strong><a href="https://artofelectronics.net/">The Art of Electronics</a></strong> and <strong><a href="https://x.artofelectronics.net/">The Art of Electronics: The X Chapters</a></strong>. Not because they teach PCB layout, but because they teach judgment. The rest you learn by doing it wrong a few times. Until that happens, here are a few tips that might save you some pain.</p><ol><li><p><strong>Placement solves most problems</strong></p><p>If you get stuck and discover y<em>ou can&#8217;t get there from here</em> without crossing layers with vias, pause and reconsider the placement. Try rotating parts, moving connectors, or swapping sides. This is especially true with surface-mount parts. Sometimes that&#8217;s all it takes.</p></li><li><p><strong>Ground first, signals second</strong></p><p>Every signal is a loop. Current goes out on the trace and returns through ground. If you don&#8217;t give it a clean path, it will find one anyway. On two-layer boards, keep ground solid on one side. When you have to route through it, keep cuts short, restore the pour immediately, and stitch ground with vias so return current can cross layers cleanly. If ground turns into islands, stop and rethink the placement. The goal isn&#8217;t a perfect plane. It&#8217;s a continuous return path.</p></li><li><p><strong>You are not a robot.</strong> </p><p>Make the board something a human can build, probe, and fix. That means leaving room for fingers, probes, and tools, adding test points you can actually reach, spacing parts so rework doesn&#8217;t require luck, and placing connectors and programming headers where hands naturally go. Assume the board will be built on a bench, debugged at odd hours, and fixed at least once. Design for human mistakes, human patience, and human limits. If the board only works when assembled by a pick-and-place machine and debugged by automation, it&#8217;s a crappy design.</p></li><li><p><strong>Bonus Tip: Silkscreen is free. Use it. </strong></p><p>Add clear labels. Mark pin 1. Show signal names where probes will land. If there&#8217;s room, add a version number or a date so you know what you&#8217;re holding six months from now. And yes, it&#8217;s fine to have a little fun. A logo, a note, a reminder of which side is up. It doesn&#8217;t make the board less serious. It makes it more usable.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3zZ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3zZ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 424w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 848w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 1272w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3zZ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png" width="1200" height="844" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:844,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1092273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.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_!3zZ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 424w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 848w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 1272w, https://substackcdn.com/image/fetch/$s_!3zZ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4af4b43-b0ba-4636-8e5a-3b25e52c5094_1200x844.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Power Controller Layout</figcaption></figure></div><h4>From bits to copper and fiberglass</h4><p>Once the layout is done, it&#8217;s time to turn files into something real. This part is mostly about following steps. You export the fabrication files, zip them up, upload them to a board house, and wait for a box of copper and fiberglass to show up at your door.</p><p>Before you upload anything, use KiCad&#8217;s 3D viewer. This one step has saved me more than once. It&#8217;s not a gimmick. It catches mistakes that are easy to miss in 2D, like reversed connectors, parts on the wrong side of the board, silkscreen colliding with pads, or footprints that technically fit but make no physical sense. Spin the board. Flip it over. Look at it like you&#8217;re about to hold it in your hands, because you will be. If something looks wrong in 3D, it is wrong.</p><p>This is the last free mistake you get before copper is involved.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lfjw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lfjw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 424w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 848w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 1272w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lfjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png" width="600" height="422" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:422,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:291738,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.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_!Lfjw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 424w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 848w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 1272w, https://substackcdn.com/image/fetch/$s_!Lfjw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2130b052-6b4d-427d-be03-0a07de7fe555_600x422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">&#8220;Use the 3D viewer, Luke.&#8221;</figcaption></figure></div><p>Choosing a board house is mostly about what you&#8217;re optimizing for right now. Speed, cost, location, or predictability. For quick prototypes and low cost, places like <a href="https://jlcpcb.com/">JLCPCB</a> and <a href="https://www.pcbway.com/">PCBWay</a> are hard to beat, and there are concrete reasons why.</p><p>Both are based in China, where they sit inside a dense manufacturing ecosystem that&#8217;s been built up over decades. Board fabs, laminate suppliers, chemical processing, drilling, plating, assembly, and logistics are all clustered together. That density drives costs down and turnaround times up in ways a standalone shop in the U.S. can&#8217;t easily match. <strong>And yes, that pisses me off.</strong></p><p>These companies behave more like <strong>software companies that happen to make PCBs</strong>. The front end is automated, quoting is instant, design rules are checked by software, and most orders flow straight through without a human in the loop. That software-first approach is what makes fast iteration cheap and predictable.</p><p>In the U.S., PCB manufacturing never reorganized around that model. Most shops evolved to serve aerospace, defense, or specialty customers, with processes optimized around custom work, sales engineers, and manual quoting. That structure makes sense for low-volume, high-margin work, but it&#8217;s the opposite of what you want when iterating quickly on prototypes.</p><p>Could this be done in the U.S.? Absolutely. Modern PCB fabrication is already highly automated. What&#8217;s missing isn&#8217;t technology, it&#8217;s willingness. Thin margins, environmental complexity, and a lack of appetite for capital-intensive manufacturing have kept anyone from building a software-first, high-throughput PCB fab here.</p><p>If you&#8217;re worried about IP, assume that anything you send to an overseas fab will be looked at. That doesn&#8217;t mean every design gets copied, but there&#8217;s no meaningful expectation of confidentiality. If that&#8217;s a problem, China is a non-starter. </p><p>I&#8217;ve also used domestic suppliers like <a href="https://oshpark.com/">OSH Park</a> or <a href="https://www.pcbunlimited.com/">PCB Unlimited</a> For IP-sensitive work, they&#8217;re the safer choice. You pay more on the invoice, but once you factor in tariffs, customs fees, expedited international shipping, and the occasional delay, the gap often narrows. For small runs, you can sometimes break even, or at least get close. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N2-g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N2-g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 424w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 848w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 1272w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N2-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png" width="1364" height="328" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df0ae355-5530-453a-954a-0345859b8f2a_1364x328.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:328,&quot;width&quot;:1364,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109165,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.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_!N2-g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 424w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 848w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 1272w, https://substackcdn.com/image/fetch/$s_!N2-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf0ae355-5530-453a-954a-0345859b8f2a_1364x328.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Boned by PayPal</figcaption></figure></div><blockquote><p>At the time of writing, PayPal pulled support for PCBWay, effectively making them unusable for many customers. This wasn&#8217;t a technical failure.</p><p>What&#8217;s really going on is that PayPal now behaves less like a payment processor and more like an unaccountable regulator. It makes unilateral risk determinations, enforces opaque compliance rules, freezes or terminates merchants without due process, and offers no meaningful appeal. These decisions aren&#8217;t about fraud or customer harm; they&#8217;re about minimizing PayPal&#8217;s own regulatory exposure. When PayPal decides a business, an industry, or a geography is inconvenient, it simply cuts them off. That kind of power, exercised without transparency or recourse, turns PayPal into a liability rather than infrastructure.</p><p>It&#8217;s also worth noting that this didn&#8217;t hit everyone equally. JLCPCB appears to have avoided the disruption largely because they don&#8217;t depend on PayPal as a primary payment rail. They diversified earlier into direct card processing and alternative settlement paths, which meant PayPal&#8217;s decision didn&#8217;t become a single point of failure. That distinction matters. When a company treats PayPal as just one option instead of critical infrastructure, PayPal loses the ability to shut the business down overnight.</p></blockquote><h4>When the Boards Arrive</h4><p>This is the part I find the most exciting. A package arrives containing a stack of newly fabricated printed circuit boards. Now what?</p><p>The boards look great. The silkscreen is crisp. The solder mask is the right shade of green. It&#8217;s very tempting to grab the soldering iron and start populating parts immediately. </p><p>Take a breath first. Examine the boards. This is the moment to make sure the parts you plan to install will physically fit the way you expect them to, before you heat up any iron. </p><blockquote><p>And trust me, I&#8217;ve screwed this up more than once. If you don&#8217;t believe me, take a look at the AVR-ISP connector on the board below. The footprint was intended to be on standard 0.1-inch centers, but it was laid out slightly off-grid. The mistake isn&#8217;t obvious in the design files, but it becomes immediately apparent when you try to fit a real connector. A standard 2&#215;3 ISP header won&#8217;t drop into the holes without force, and shrouded or pogo adapters won&#8217;t align at all. This is the kind of error that&#8217;s trivial to catch on a bare board and deeply annoying to fix after soldering.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bqrp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bqrp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bqrp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg" width="600" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:139780,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bqrp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Bqrp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0fd4869-dd59-4bba-8adb-2ff0a562bb54_600x464.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Well it <em>looked great in KiCad but that connector didn&#8217;t quite fit in real life.</em></figcaption></figure></div><h4>Preparing the Board for Soldering</h4><p>Once you&#8217;re happy that the parts actually fit, it&#8217;s time to prepare the board for soldering. This part isn&#8217;t glamorous, but you&#8217;ll be grateful you did it later.</p><p>Start by cleaning the board. Even brand-new PCBs often have residue from fabrication and handling. A quick wipe with isopropyl alcohol removes oils, dust, and fingerprints that can interfere with solder wetting.</p><p>Next, inspect the pads and vias under good light. You&#8217;re looking for things like:</p><ul><li><p>Solder mask encroaching on pads</p></li><li><p>Nicks or scratches in exposed copper</p></li><li><p>Mask bridges between fine-pitch pads or pins</p></li><li><p>Pads that look dull, thin, or otherwise damaged</p></li></ul><p>Catching these issues now is much easier than debugging them after parts are installed.</p><p>If you&#8217;re building more than one board, this is also a good time to pick a sacrificial board for mechanical tests like enclosure fit, mounting holes, and cable clearance. It&#8217;s a bad idea to take a fully populated board anywhere near a drill press.</p><p>This is especially important when you&#8217;re using surface-mount devices, since you&#8217;ll often be working with a hot-air gun rather than an iron. It isn&#8217;t always a trivial task. On anything more complex than a simple breakout board, assembly order often involves a bit of trial and error. You don&#8217;t always know what&#8217;s going to block access to what until you&#8217;re halfway through.</p><p>In general, assemble from the flattest parts to the tallest:</p><ul><li><p>Small, flat passives first</p></li><li><p>ICs and other fine-pitch components next</p></li><li><p>Connectors, switches, and tall parts last</p></li></ul><p>Going through this exercise always makes me appreciate the old Heathkit manuals and their incredibly detailed, step-by-step assembly instructions. They solved this problem for you before you ever picked up a soldering iron.</p><h4>Assembling the boards</h4><p>For surface-mount work and inspection, a digital microscope is absolutely invaluable. It takes the guesswork out of alignment, makes fine-pitch parts manageable, and lets you catch problems like bridges or tombstoned components (where one end of a small part lifts up during reflow) before they turn into real failures.</p><p>I tried using a loupe for a while, but the real win was switching to a <a href="https://www.amazon.com/dp/B0D2KMVSH1">TOMLOV DM9</a>. The screen is big enough and the autofocus is good enough that you can see exactly what&#8217;s happening while you place parts and while the solder flows. I don&#8217;t have to hunch over the board, and I can keep both hands free, which makes precise placement a lot easier than fighting the optics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WGD9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WGD9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WGD9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg" width="500" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WGD9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WGD9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F174a6f96-6872-4bec-8916-db9213a8628c_500x614.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A digital microscope lets you watch placement and solder flow as it happens, instead of hoping you got it right.</em></figcaption></figure></div><p>To hold the board steady under the microscope, I usually use a set of  <a href="https://www.amazon.com/dp/B097L4DSS9">magnetic PCB pins</a> instead of clamping it. They keep the board flat and secure, but still easy to reposition without disturbing parts that are already placed.</p><p>For actually installing the surface-mount parts, I use a hot air rework gun, in my case a <a href="https://www.amazon.com/dp/B09VXD8BTF">TXINLEI 8858+</a>. Unlike a soldering iron, which heats one pad at a time, a hot air gun heats the entire SMD footprint at once. That makes it much easier to seat QFNs, SOICs, and other multi-pin parts when you&#8217;re placing them by hand.</p><div id="youtube2-K94eY-VI7AA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;K94eY-VI7AA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/K94eY-VI7AA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Whatever model you use, make sure it lets you control both airflow and temperature. Too much air will blow small parts out of place (ask me how I know), and too much heat will lift pads or cook nearby components.</p><p>Once I move on to through-hole parts, the tools and technique change a bit. I&#8217;ve been faithful to Weller soldering irons for decades, and after nearly thirty years I finally retired my old one and replaced it with a more modern <a href="https://www.amazon.com/dp/B01M31QSH2">Weller WT1010N</a>.  This is what the pros use, and yeah, it&#8217;s expensive. But I can&#8217;t emphasize enough how much good tools matter, and how much cheaper it than screwing things up because your tools suck.</p><p>I usually put the board in a <a href="https://www.amazon.com/PanaVise-Model-201-Junior-Miniature/dp/B000B61D22/">PanaVise Jr</a>., holding it vertically so I can see both the pad and the lead at the same time. Being able to rotate and tilt the board as you work keeps you from fighting gravity or burning your fingers. I&#8217;ll often tip the board slightly so the flux and solder flow into the pad instead of away from it. And remember, you don&#8217;t always have to solder from the back side. For simple parts like resistors, flowing solder from the component side can work just as well if you can see what you&#8217;re doing.</p><p>Regardless of the technique, one thing I never skimp on is flux. I wear by  Kester 951 liquid soldering flux. It improves wetting, makes joints form faster, and generally turns soldering from a fight into a routine operation.</p><p>For anyone who wants to see what careful assembly really looks like, I recommend the video from <a href="https://www.youtube.com/@CKHaun/playlists">CKHaun</a> on building electronic kits.  He&#8217;s a fellow I&#8217;m proud to know and someone who&#8217;s been doing this for nearly sixty years. Watching him work reminds you what doing it right looks like.</p><h4>Cleaning up</h4><p>Flux leaves a mess on the board, especially after surface-mount work. There is no such thing as &#8220;no-clean&#8221; flux. It all needs to be cleaned up.  You&#8217;ve already spent a lot of time and money getting to this point; this is not where you cut corners or rush to be done.</p><p>First I tried scrubbing boards with brushes, soaking them in alcohol, and yes, even blasting them with brake cleaner. None of that crap really worked well. After a lot of trial and error, I finally picked up a <a href="https://www.amazon.com/dp/B0BR7SXTHX?th=1">heated ultrasonic cleaner</a>. I&#8217;d used these before for things like carburetors and gun parts, but it turns out they work extremely well on circuit boards too.</p><p>With ultrasonic cleaning, less is more. You don&#8217;t need to cook the board or leave it in there forever. I use a mild, electronics-safe cleaning solution, strong enough to break up rosin and solder flux without being aggressive on the board or components. I keep the bath just warm, roughly 40 &#176;C, and only run it for two to five minutes at a time. Cranking the heat or letting it run longer doesn&#8217;t clean things better, it just drives fluid under parts where you don&#8217;t want it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mi-l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mi-l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mi-l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg" width="500" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114246,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mi-l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mi-l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5d9a37-99d5-41a6-9671-dc1f574fbb14_500x522.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Ultrasonic cleaning removes flux residue</em></figcaption></figure></div><p>Once the board comes out of the ultrasonic bath,  rinse it with clean isopropyl alcohol to flush away any residue left behind by the cleaning solution. Then I use compressed air to blow alcohol out from under connectors, ICs, and tight spots. The alcohol evaporates quickly, and the air ensures nothing gets trapped. </p><p>Done right, you end up with a board that looks as good as it works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JCcz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JCcz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JCcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg" width="600" height="437" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:437,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JCcz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JCcz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5235fe98-0faf-49af-99f8-74b582162aab_600x437.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Assembly complete</em></figcaption></figure></div><h4>Creating the Firmware</h4><p>Some of the boards I build include a microcontroller to handle the control logic.  Those designs come with one extra step: writing the firmware.  Without that it&#8217;s just an boat anchor until you teach it what to do.</p><p>That step has its own set of tools, just like the hardware side, and it&#8217;s worth spending a few minutes talking about what actually works for me and why.</p><p>Everyone has their own tastes and preferences, and you should use what you like. I&#8217;ve been on macOS since the first Macs came out in &#8217;85. These days, though, I don&#8217;t use Xcode anymore. It&#8217;s bloated, heavy, and a lousy fit for what I&#8217;m building.</p><p>Instead, for AVR, Linux, or Raspberry Pi development, I&#8217;ve moved to the <a href="https://zed.dev/">Zed editor</a>. It&#8217;s fast, responsive, and focused on writing code rather than showing off the latest bouncing emojis.</p><p>Zed is a modern, high-performance code editor built by Zed Industries, a small team that knows a few things about editor design. I&#8217;ve found it to be fast and easy to customize to the way I work. The editor does one thing: it edits code, and it leaves the compiler, debugger, and toolchain where they belong, with the tools you already use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OSTH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OSTH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 424w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 848w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 1272w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OSTH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png" width="700" height="538" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:538,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:205547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.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_!OSTH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 424w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 848w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 1272w, https://substackcdn.com/image/fetch/$s_!OSTH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F764e654a-15ae-4eb1-8b7c-2e97b6544ab6_700x538.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Zed&#8217;s not dead, baby!</figcaption></figure></div><p>When I&#8217;m working on Linux or Raspberry Pi systems  I tend to use <strong>clang</strong> instead of GCC. On the Pis in particular, <strong>clang</strong> often compiles faster, especially during iterative builds where you&#8217;re recompiling small changes over and over. On low-power ARM cores, that faster edit&#8211;compile&#8211;test loop makes a real difference.</p><p>Clang also produces clearer diagnostics. Its warnings and error messages are generally easier to read and more precise about what actually went wrong and doesn&#8217;t send me down rabbit holes when I&#8217;m chasing bugs in C or C++ code.</p><p>For AVR work, <strong>GCC is still the right tool</strong>. The <strong>avr-gcc</strong> toolchain is the reference implementation.  period.  end of story.</p><p>I work directly with the toolchain instead of using the Arduino IDE because I want to see <em>everything</em>. Arduino is convenient, but it hides too much behind the curtain.  Fuse settings, startup code, linker behavior, and compiler flags are important especially when you care about  things like power consumption. I have  learned over the years that if  I can&#8217;t see it, I don&#8217;t trust it.</p><p>Using avr-gcc directly also means I&#8217;m in full control of the build. Everything is driven by <strong>explicit Makefiles</strong>: compiler flags, optimization levels, linker scripts, fuse checks, and flashing steps are all written down in plain text. Nothing is hidden, and nothing changes unless I change it.</p><p>Makefiles might look old-school, but they&#8217;re honest. They document exactly how a binary was produced, they&#8217;re easy to version-control, and six months later I can still see exactly what happened and why. That kind of <strong>r</strong>epeatability and long-term maintainability matters, especially when you don&#8217;t want your toolchain breaking because some IDE developer decided to &#8220;improve&#8221; things on a whim. <em>(Yes, I&#8217;m looking at you, Apple.)</em></p><blockquote><p><strong>Installing the AVR Toolchain </strong></p><p>On macOS, install the toolchain with Homebrew:<br><strong>brew install avr-gcc avrdude</strong></p><p>On Debian-based Linux systems (including Raspberry Pi OS):<br><strong>sudo apt install gcc-avr binutils-avr avr-libc avrdude</strong></p><p>This gives you everything you actually need: the compiler, C library, binutils, and flashing tool. No IDE required.</p></blockquote><p> </p><h4>Flashing the firmware</h4><p>Once the board is assembled and the firmware is built, it&#8217;s time to get code onto the microcontroller. For AVR parts, that job is handled by <strong>avrdude</strong>.</p><p><strong>avrdude</strong> (AVR Downloader/Uploader) is the long-standing open-source tool used to program AVR microcontrollers. It talks directly to the chip, verifies device signatures, and handles flash, EEPROM, and fuse programming.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ERGn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ERGn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 424w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 848w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 1272w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ERGn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png" width="800" height="773" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b82975fa-7f54-48fa-b177-f390edc601cd_800x773.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:773,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:346391,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.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_!ERGn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 424w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 848w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 1272w, https://substackcdn.com/image/fetch/$s_!ERGn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb82975fa-7f54-48fa-b177-f390edc601cd_800x773.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">AVR, Dude!</figcaption></figure></div><p>AVR parts can be programmed using either <strong>ISP</strong> (In-System Programming) or <strong>JTAG</strong>. ISP is the simpler option, using only a handful of pins and working on nearly every AVR.  JTAG adds live debugging with breakpoints and single-stepping, but it costs more pins and more board complexity. </p><p>For most projects, I can get away with using ISP alone. I use an <strong><a href="https://www.amazon.com/dp/B07MXRYWD9">Atmel-ICE</a></strong>  for ISP programming rather than a third-party programmer. It&#8217;s the manufacturer&#8217;s reference tool, built to match the timing, signaling, and edge cases the chips expect.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8l15!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8l15!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8l15!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8l15!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8l15!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8l15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg" width="600" height="454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86613,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/185349029?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8l15!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8l15!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8l15!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8l15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F862b17ae-af66-4c75-b89a-b31e793ead7e_600x454.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Flashing the board with an Atmel-ICE</strong></figcaption></figure></div><p>This photo shows the board being programmed using an <strong>Atmel-ICE</strong> in ISP mode. If the setup looks a little improvised, that&#8217;s because it is. Remember that earlier mistake where I got the AVR-ISP connector footprint wrong and didn&#8217;t land it on standard 0.1-inch centers? This is the consequence. I had to build a small adapter board just to mate the programmer to the header.</p><h4>No, no, no, no, I don&#8217;t smoke them no more</h4><p>That mistake also ended up teaching me something useful. When programming over ISP, I now make a habit of <strong>connecting the programmer to the board before applying power</strong>. Hot-plugging an ISP cable into a powered board can back-feed signals through protection diodes or I/O pins in ways the chip really doesn&#8217;t appreciate. Sometimes you get away with it. Sometimes you don&#8217;t. I didn&#8217;t, three times. </p><p>After toasting enough parts to learn the lesson properly, I started adding <strong>series resistors on the ISP lines</strong> in my later designs.  This isn&#8217;t a substitute for bad habits but it does help when I screw up. This particular board predated that change, which is why the resistors were necessary.  </p><h4>Why I made that.</h4><p>This article was titled <em>&#8220;How Did You Make That?&#8221;</em> because that&#8217;s the question I get most often. But right behind it is another one that matters just as much: <strong>why</strong>.</p><p>I didn&#8217;t build this as a product, a kit, or a demo. I built it because there was a real problem on our farm that needed a solution I could trust. I learned a lot along the way and stood on the shoulders of giants. It felt like the right time to give something back.</p><p>I was lucky enough to grow up at a time when people shared what they built.  I still remember a guy from DEC mailing me the <a href="https://archive.org/details/bitsavers_decpdp8pdpaticsJun70_3442874/page/n7/mode/2up">schematics for a PDP-8</a> simply because he was happy that a kid was interested. That kind of generosity mattered. I spent hours poring over schematics and code, trying to understand how things worked. That hacker ethos shaped how I learned and how I still think about building things.</p><p>That experience stuck with me. Publishing this design is my way of paying it forward, which is why I write these articles and put my work on <a href="https://github.com/vinthewrench/powercontrol">GitHub</a> as open source. Both the firmware and the hardware are open, under permissive licenses that let you use, modify, and build on the work and pretty much do whatever you want.</p><div><hr></div><p>If you care about how things are made and why they&#8217;re built the way they are, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>. Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Leaving the Apple Ecosystem - part 6]]></title><description><![CDATA[Progress report - the Pixel 9 Pro]]></description><link>https://www.vinthewrench.com/p/leaving-the-apple-ecosystem-part-db9</link><guid isPermaLink="false">https://www.vinthewrench.com/p/leaving-the-apple-ecosystem-part-db9</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Wed, 21 Jan 2026 19:45:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0qlA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0qlA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0qlA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0qlA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg" width="500" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120792,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/166908491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0qlA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0qlA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93b277b9-5398-4795-9311-b7a712e81bb8_500x472.jpeg 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><h4>The Honeymoon&#8217;s Over</h4><p>In <a href="https://www.vinthewrench.com/p/leaving-the-apple-ecosystem-part-879">Part 5 of this series</a>, I wrote about dumping the iPhone 11, taking a run at the <a href="https://www.vinthewrench.com/p/leaving-the-apple-ecosystem-part-920">Unplugged Phone</a>, and ending up on a Google Pixel 9 Pro. I&#8217;ve been using it every day for nine months now. The reality distortion field is gone. It&#8217;s time to tell you what I actually think.</p><p>First off, I like the phone and I am happy with it. The Pixel 9 Pro does the job well and stays out of my way <strong>most of the time</strong>. That alone puts it ahead of where I was.</p><p>Now let&#8217;s get something straight. Google is not your friend. But neither is Apple. The difference is that Google at least lets you push back. Pixel is as private as you make it. Most processing happens on the device, not in the cloud. Data retention is visible, adjustable, and deletable. None of this makes Google virtuous, but it does make the system configurable.</p><p>Apple increasingly runs on residual goodwill, not clear, forward innovation. That goodwill was earned years ago in the Steve Jobs era and has steadily faded under Tim Cook.</p><p>Anyone who&#8217;s read my earlier posts already knows why I was done with Apple. Not only did they stop innovating, their privacy story turned into bullshit. I don&#8217;t believe a word of their iCloud privacy claims, especially given how they plan to integrate that data with AI.</p><p>The political compromises were the last straw. I never forgave them for <a href="https://www.thefire.org/research-learn/free-speech-and-social-media?utm_source=chatgpt.com">role in killing Parler</a>. That was the moment Apple chose censorship over neutrality. I was done.</p><p>On purely technical grounds, it&#8217;s also hard to justify an iPhone over a modern Pixel. Control, battery behavior, and real capability all favor the Pixel. Apple, at this point, feels less like a technology company and more like a dealer pushing a comfortable habit.</p><h4>Weaning Myself from Apple</h4><p>It wasn&#8217;t a clean break. I did it in stages, keeping both phones around until I was sure the Pixel could handle everything I actually needed. </p><p>The first rule was that iCloud was no longer going to be the center of my digital life. Apple trains you to treat the phone as the vault. Once you reject that idea, everything else gets easier.</p><p>I moved the core services first. Proton became the backbone. That addressed most of the real privacy problems without turning the phone into a hacker project. The switch was fairly painless, largely because I was already using Proton on my desktop.</p><p>Here&#8217;s where things currently stand. Some of this is settled. Some of it is still in progress.</p><ul><li><p><strong>Mail:</strong> Proton Mail </p><p>The user interface could be much prettier, but it&#8217;s adequate, and the privacy advantages are worth the smell. More importantly, it doesn&#8217;t crash or bog down the way Apple Mail does. I&#8217;ll take private over slick and invasive every time.</p></li></ul><ul><li><p><strong>File storage: </strong>Proton Drive</p><p>They&#8217;ve come a long way since the first version. It does a solid job syncing files. Google Drive is off, and Proton handles file sync reliably and it keeps my data out of Google&#8217;s pipeline.</p><p></p></li><li><p><strong>Photos:</strong> ??</p><p>I&#8217;m still using the Google Photos app locally, with syncing shut off. It works as a viewer, but it can be confusing because it breaks photos up by source (Camera, Screenshots, Messages, etc). Maybe that&#8217;s useful, maybe not, but it&#8217;s a different mental model than Apple Photos. Proton Drive handles the syncing, but it doesn&#8217;t offer a proper desktop photo viewer, only a web interface. So for now, Google Photos is just a local front end, Proton handles storage, and I&#8217;m not thrilled with the split-brain setup.</p><p></p></li><li><p><strong>VPN:</strong> Proton VPN</p><p>I find that it works every time, both on the phone and on the desktop. It&#8217;s built around a no-logs architecture, open-source clients, and independent audits. None of this &#8220;trust me&#8221; bullshit. It&#8217;s based in Switzerland, outside the usual US and EU surveillance machinery, and it doesn&#8217;t pretend to make you anonymous or invisible. It does one job well: keeping your network traffic out of ISP logs, hostile Wi-Fi, and casual surveillance pipelines.</p><p></p></li></ul><ul><li><p><strong>Passwords:</strong> Proton Pass</p><p>Absolute win. It&#8217;s simple, solid, and doesn&#8217;t bog me down. Passwords, 2FA, cross-platform sync. It does exactly what it should do without trying to become a lifestyle brand or upsell you. I trust it more than Apple Keychain, and I don&#8217;t miss Keychain at all.</p><p></p></li><li><p><strong>Browser:</strong> Brave</p><p>Easy win. Same browser on desktop and phone. Built-in ad and tracker blocking. I could do without their AI, and you do need to spend a few minutes turning off features you don&#8217;t want. I&#8217;m not chasing perfect anonymity here. I just want fewer trackers, less noise, and a browser that renders well.</p><p></p></li><li><p><strong>Calendar: </strong>Fossify Calendar </p><p><a href="https://www.fossify.org/">Fossify is a small independent project</a> focused on simple, local, privacy-friendly tools. No accounts, no cloud dependency, no tracking, and unfortunately, no desktop app either. The backend is still a work in progress. I&#8217;m building my own CalDAV server, but it&#8217;s not there yet.</p><p></p><p>I wanted to use <strong>Proton Calendar</strong>, but the app is ugly as sin, and all of the Proton icons are horrific. I filed bugs, but Proton is committed to making everything look the same, whether it makes sense or not. Proton looks like it was designed by a committee that hates eyes.</p><p></p></li><li><p><strong>Contacts:</strong> </p><p>No good answer yet. I&#8217;m still using Google Contacts, and I&#8217;m not thrilled about it. It works, but it&#8217;s exactly the kind of dependency I&#8217;m trying to unwind. This one&#8217;s still unresolved.</p></li></ul><p>On the other hand, most of the apps I actually use every day are available on this platform, including some that Apple simply won&#8217;t allow. Background services that stay running. Apps that talk directly to hardware. Web apps that behave like first-class citizens instead of second-class hacks wrapped in a permission maze. Android doesn&#8217;t make you beg for that kind of control.</p><p>I&#8217;ve had real success building my own web apps and using them daily. Projects like my weather station or irrigation control would be awkward at best as native iOS apps and would require App Store approval, with Apple retaining the ability to change the rules at any time. On top of that, Swift and iOS SDK changes routinely break or deprecate APIs, forcing rebuilds just to stay compatible. I don&#8217;t miss that shit. Not even a little.</p><h4> Hardware Notes</h4><p>I&#8217;m not going to bother with a spec review. There are plenty of people on the internet who already do that better than I ever will. Numbers don&#8217;t tell you how something behaves after you&#8217;ve lived with it.</p><ul><li><p><strong>Battery: </strong></p><p>After a hard day of use, I usually still have well over three-quarters of the battery left. Charging is handled more conservatively than what I was used to on the iPhone. The phone avoids sitting at full charge under heat, fast charging backs off sooner, and adaptive charging actually does what it claims. Over time, that shows up as steadier day-to-day behavior instead of a battery that suddenly feels tired and conveniently coincides with a new phone launch.</p><p></p><p>Wireless charging works reliably. I just drop it on the Pixel stand at the end of the day, without the weird bullshit Apple still hasn&#8217;t figured out.</p><p></p></li><li><p><strong>USB storage:</strong></p><p>Plug in USB storage, grant access once, move files, unplug it. No apps, no syncing rituals, no ecosystem dance. I use this almost daily with a drones I fly on the farm, and it works exactly the way it should.</p><p>Apple hasn&#8217;t figured this out because they don&#8217;t want to. Simple USB access breaks the illusion that everything needs to flow through their software and their cloud.</p></li><li><p> <strong>Camera:</strong></p><p>Reliable enough that I don&#8217;t think about it, and that&#8217;s the point. Photos are fast, consistent, and predictable. Pixel&#8217;s computational photography is still ahead of Apple in the ways that matter day to day. I&#8217;m not chasing AI-curated memories or cinematic nonsense. It does the job without forcing me into another cloud pipeline.</p><p></p></li><li><p><strong>Software updates:</strong></p><p>Security patches and OS updates arrive on a regular monthly cadence, with new fixes rolling out around the same time each month. Pixels also get periodic feature updates and OS upgrades during their supported lifecycle, which can stretch into five or seven years depending on the model. That predictability beats surprise changes and erratic schedules.</p></li></ul><h4>Agency Is Non-Negotiable</h4><p>This wasn&#8217;t about finding a perfect phone. It was about reclaiming leverage. The Pixel 9 Pro isn&#8217;t pure, and Google isn&#8217;t benevolent, but I&#8217;m no longer trapped inside a system that asks for blind trust while quietly tightening the screws. I have more control, fewer surprises, and real exit options again. That&#8217;s the difference that matters. If that ever changes, I&#8217;ll move on.</p><p>Loyalty Is for Dogs &#8212; and People Who Earn It</p><div><hr></div><p>If you believe tools should serve people instead of pretending to be your buddies, you&#8217;ll probably like <a href="https://www.vinthewrench.com/p/its-about-independence">the rest of what I write about</a>.  Hitting like and sharing helps real people find the work. The algorithm can go pound sand.</p>]]></content:encoded></item><item><title><![CDATA[Building a Dedicated Weather Station Display]]></title><description><![CDATA[A Raspberry Pi Build Adventure from Idea to Completion]]></description><link>https://www.vinthewrench.com/p/building-a-dedicated-weather-station</link><guid isPermaLink="false">https://www.vinthewrench.com/p/building-a-dedicated-weather-station</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Thu, 18 Dec 2025 22:53:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EhLa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53e41531-1218-4af9-a224-8d994f50318a_550x364.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous article, <a href="https://www.vinthewrench.com/p/build-your-own-off-grid-weather-station">we built an off-grid weather station</a>. It&#8217;s now up and running, feeding data to Weather Underground and Windy, and accessible remotely through a Cloudflare tunnel.</p><p>With the data side dialed in, it was time to deal with what motivated this project in the first place: replacing that damned Ambient Weather display in the kitchen. It had brutalism and <em>bought-on-sale-at-Home-Depot</em> written all over it. Yes, it works, but it  really doesn&#8217;t belong in our country home.  </p><p>This isn&#8217;t about building a better weather interface than Ambient&#8217;s. User interface design is subjective, and arguing about it misses the point. <strong>The real goal was making something I control, and works the way I want</strong>.</p><blockquote><p>This display doesn&#8217;t care what it shows. You can point it at weather or something else you built. It&#8217;s just a web browser.</p></blockquote><p>That said, you&#8217;d think that building a display with a Raspberry Pi would be easy. Something  you could just cookbook from the Internet.  It has only one job: <em>display a single HTML page</em> and have the sense to go dark at night, and come back in the morning.</p><p>Someone must have done this already?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZKC1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZKC1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZKC1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg" width="400" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZKC1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZKC1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c07c160-ae64-4f8c-9751-4c90ccd462a4_400x300.jpeg 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><strong>But No!  </strong></p><p>All I could find were bloated ecosystems like Home Assistant or MagicMirror, built around <a href="https://www.youtube.com/@EverythingSmartHome">constant updates</a> and expanding integrations. Spend a few minutes in <a href="https://www.reddit.com/r/homeassistant/">r/homeassistant</a>  and you&#8217;ll see the steady stream of complaints about breaking changes and maintenance fatigue.</p><p>I&#8217;ve spent enough time cleaning up after someone else&#8217;s well-intentioned updates to know better than to sign up for that crap again.</p><p>The closest thing I found to what I wanted was <a href="https://github.com/geerlingguy/pi-kiosk">Jeff Geerling&#8217;s </a><em><a href="https://github.com/geerlingguy/pi-kiosk">pi-kiosk</a></em> project. It&#8217;s clean, well-documented, and practical. It came closer than anything else, but still stopped short of my mark. Jeff&#8217;s approach starts from a full operating system and builds a kiosk inside it. </p><p>Instead, I went the other way. I started with a minimal base and added only what I needed. Simplicity buys you security and reliability.</p><h4>The Display as an Appliance</h4><p>I&#8217;m building an appliance, <strong>not a computer</strong>. It does one job: display a web page. All user interaction comes from whatever the page itself provides through the touch screen. There&#8217;s no desktop, no app ecosystem, no monthly update cycle, and<a href="https://www.vinthewrench.com/p/why-the-raspberry-pi-gpio-api-is"> no API churn waiting to break things</a>.</p><p>It needs to run day in and day out without constant attention.</p><p>Every extra layer is another thing that can fail. That&#8217;s why this is a frame-up build. I know exactly what&#8217;s there, because I put it there. When you pull the trigger, it goes bang every time. End of story.</p><p>With that rant out of the way, let&#8217;s get into the details.</p><h4>The Nuts and Bolts</h4><p>For this project, I&#8217;m using a Raspberry Pi 4. The Pi 5 doesn&#8217;t buy me anything here except more heat and power draw. The Pi 4 is stable, readily available, and inexpensive enough that I can keep spares and chuck the dead one if it ever fails.</p><p>At current retail pricing, a 2 GB Raspberry Pi 4 goes for <a href="https://rpilocator.com/?cat=PI4&amp;mem=2GB&amp;country=US">roughly $40&#8211;$50</a>.</p><p>With <a href="https://www.chromium.org/Home/">Chromium</a> doing the HTML rendering,  a <strong>2 GB Pi</strong> has plenty of headroom without paying for memory that will just sit idle. I suspect even a 1 GB model would run, but it would be a tight fit.</p><p>That said, the only reason I am using a 4 GB model, is that I salvaged it from an <a href="https://www.vinthewrench.com/p/using-a-raspberry-pi-to-remotely">old water cistern project, </a>not because the kiosk needs it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MfCx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MfCx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MfCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg" width="600" height="569" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:569,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:151008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MfCx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MfCx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc70bd6-2c52-469f-b5b3-5182bc7a83cc_600x569.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Proof of concept on a Raspberry Pi 4</figcaption></figure></div><h4>Start with a Bare Frame</h4><p>The plan was to start with a minimal, headless, command-line&#8211;only system and add just enough graphics support to run Chromium, and nothing more. For that, I wanted the X display system. X is mature, well understood, and has decades of mileage. In a single-window setup like this,  it will work just fine, with no surprises.</p><p>I started by hunting down the 64-bit version of an older Raspberry Pi OS <strong>Bookworm Lite</strong>. It&#8217;s buried in the Raspberry Pi Imager, and you have to dig for it. <strong>I specifically didn&#8217;t want the newest release, Trixie</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gtp-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gtp-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 424w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 848w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 1272w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gtp-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png" width="600" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148702,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.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_!Gtp-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 424w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 848w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 1272w, https://substackcdn.com/image/fetch/$s_!Gtp-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fb56bd4-70e1-43b2-8a8f-81ae45b5dbdd_600x424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Bookworm is there, but you have to dig for it.</figcaption></figure></div><p>I  could have started from Trixie Lite and installed X manually, but Bookworm Lite is a known quantity with X.  Trixie is designed around <a href="https://grokipedia.com/page/Wayland_(protocol)">Wayland</a>.    </p><p>I didn&#8217;t want to complicate things like screen blanking, focus, and startup behavior. I already knew how to control those reliably with X.</p><h3>Dropping in the Engine</h3><p>For the initial build, I used a <a href="https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)">Waveshare 7-inch HDMI LCD</a>  as a known-good display, with both the HDMI and touchscreen interfaces connected to the Pi.  I considered some display and enclosure choices, but to get things up and running, this was the shortest path.</p><p>As usual, I setup Wi-Fi credentials and my SSH key in the <strong>Raspberry Pi Imager</strong>, flashed the SD card, dropped it into the Pi, and powered it up.</p><p>During boot, the usual Linux console messages scroll by on our display, and the system eventually lands at a login prompt.</p><p>That&#8217;s expected. At this point it&#8217;s still a stock Linux system. The display works as a console,  but nothing has been done yet to turn it into a kiosk.</p><p>Next, I logged in over SSH, verified everything was working, and ran the usual update, upgrade, and reboot to make sure the system was fully up to date before dropping in the graphics stack:</p><pre><code><code>sudo apt update
sudo apt upgrade -y
sudo reboot</code></code></pre><p>Once the system booted back up, I logged in again over SSH and edited  <strong>/boot/firmware/config.txt</strong> so it looked like this:</p><pre><code><code>arm_64bit=1
disable_overscan=1

dtoverlay=vc4-kms-v3d
max_framebuffers=2
disable_fw_kms_setup=1

hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1

hdmi_force_hotplug=1</code></code></pre><p>Instead of letting the  firmware guess, I forced the kernel to take control of the display the way I wanted:</p><ul><li><p>Disabled overscan which removing unnecessary black borders, this is not a TV set.</p></li><li><p>Loaded the modern graphics driver. </p></li><li><p>Hard-coded the HDMI timing  as per the <a href="https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)">Waveshare Wiki</a>.   </p></li><li><p>Forced HDMI up even if the panel is slow to respond at boot.</p></li></ul><p>Then one more reboot, just to make sure I hadn&#8217;t broken anything.</p><p>With the bare frame in place, it was time to drop in the engine. As I mentioned above, we are using X and Chromium. We will need to install":</p><ul><li><p><strong>X server</strong> &#8211; The display and input plumbing Chromium needs to run.</p></li><li><p><strong>Openbox</strong> &#8211; A minimal window manager that hosts Chromium without desktop clutter.</p></li><li><p><strong>Chromium</strong> &#8211; the kiosk application itself, responsible for rendering the dashboard and handling touch input.</p></li><li><p><strong>dbus-x11</strong> &#8211; provides the message bus X applications like Chromium expect at startup.</p></li><li><p><strong>unclutter</strong> &#8211; hides the mouse pointer when idle to keep the screen clean.</p></li><li><p><strong>x11-xserver-utils</strong> &#8211; utilities for controlling display behavior like Display Power Management Signaling (DPMS) and screen blanking.</p></li><li><p><strong>x11-utils</strong> &#8211; basic X diagnostic tools used to verify display state and configuration.</p></li></ul><p> The installation command looks like this:</p><pre><code><code>sudo apt install \
  xserver-xorg \
  xinit \
  chromium \
  unclutter \
  dbus-x11 \
  x11-xserver-utils \
  x11-utils

sudo reboot </code></code></pre><h3>Console Autologin and Controlled X Startup</h3><p>Even with X and Chromium installed, nothing magical happens on boot yet. <strong>The Pi still comes up at the console</strong>, just like any other Linux box. We need to do a couple more things to make the magic happen.</p><p>First off we need to enable console autologin so after boot the system logs itself in and keeps moving instead of stopping at a prompt.</p><pre><code><code>sudo raspi-config
# System Options &#8594; Auto Login &#8594; Console Autologin</code></code></pre><p>Once the console session starts automatically on the primary terminal we can wire X to start automatically.  But only on the console attached to the display. I don&#8217;t want X to ever try to start during an SSH login.</p><p>We can fix this, by adding appending the following to<strong>~/.profile:</strong></p><pre><code><code>if [ -z "$DISPLAY" ] &amp;&amp; [ "$(tty)" = "/dev/tty1" ]; then
  startx
fi</code></code></pre><h3>Launching Chromium</h3><p>With the system booting, logging in, and starting X automatically, the next step was to launch Chromium and point it at the weather page.</p><p>X reads <strong>~/.xinitrc</strong> at startup, so this file controls exactly how the display session is launched.</p><p>Create the file so it reads:</p><pre><code><code>#!/bin/sh

##. add this line for  the waveshare HMI screen
#xrandr --output DSI-1 --transform 0.85,0,0,0,0.85,0,0,0,1 --panning 1280x800

# Disable X screensaver and DPMS timers
# (keep DPMS enabled for manual force on/off)

xset dpms 0 0 0
xset s off
xset s noblank
xset s 0 0

# hide the mouse
unclutter -idle 0.1 -root &amp;

# Launch Chromium in kiosk mode and restart it if it exits
while true; do
 sync
 rm -rf /tmp/chromium-kiosk

 dbus-launch --exit-with-session chromium \
      --user-data-dir=/tmp/chromium-kiosk \
      --kiosk \
      --start-fullscreen \
      --app=http://weather \
      --no-first-run \
      --no-default-browser-check \
      --disable-session-crashed-bubble \
      --disable-infobars \
      --noerrdialogs \
      --disable-features=TranslateUI \
      --disable-features=InfiniteSessionRestore \
      --disable-background-networking \
      --disable-background-timer-throttling \
      --disable-renderer-backgrounding \
      --disable-extensions \
      --overscroll-history-navigation=0 \
        --force-device-scale-factor=1 \
        --disable-font-subpixel-positioning \
        --disable-lcd-text \
        --disable-skia-runtime-opts
        --disable-backgrounding-occluded-windows \
        --disable-preconnect \
        --disable-features=NetworkService
        --disable-sync  \
        --disable-translate \
        --disable-component-update       \
        --disable-password-manager-reauthentication     \
        --disable-save-password-bubble  \
        --disable-autofill

    sleep 5
done</code></code></pre><p>Make sure to make the file executable:</p><pre><code><code>chmod +x ~/.xinitrc</code></code></pre><p> This xinitrc above does a bunch of important things:</p><ul><li><p>Disables X screen blanking and X-managed power saving, allowing display power control to be handled explicitly via scripts.</p></li><li><p>Hides the mouse cursor so it never appears on the kiosk display.</p></li><li><p>Runs Chromium in fullscreen kiosk mode with all browser UI suppressed.</p></li></ul><ul><li><p>Prevents background services, extensions, and prompts from interfering.</p></li><li><p>Starts Chromium in a clean state and restarts it automatically if it exits.</p></li><li><p>As many other things as I could get away with..</p></li></ul><p>At this point, <strong>reboot the system one more time</strong>. After a few seconds, X should start automatically and Chromium should come up in fullscreen kiosk mode showing the <em>&#8220;Example Domain&#8221;</em> page.</p><blockquote><p>&#8220;example.com&#8221;  is the Internet&#8217;s documentation and testing domain.  Its an easy way to confirm the entire boot path is working end to end. Once you&#8217;ve verified that, replace this URL with the address of <em>your</em> weather system.</p></blockquote><h3>Finishing Touches</h3><p>If you&#8217;ve made it this far, good on you. The system is up, it&#8217;s stable.  You&#8217;ve done magic! But before taking a victory lap, there are a few practical details worth addressing.</p><h4>Display Power Control (Night Off / Morning On)</h4><p>The first thing you&#8217;ll notice if this lives in your kitchen is that the screen never goes dark.  Unless you want one more glowing rectangle lighting the room all night, you&#8217;ll want explicit control over when the display turns off and back on.</p><p>Skip firmware-level HDMI blanking. It&#8217;s unreliable and often doesn&#8217;t wake cleanly. Let X handle it. The cleanest approach is <strong>xset</strong>, using two small scripts to turn the display off at night and back on in the morning.</p><p>These scripts can live anywhere, as long as they&#8217;re executable and you know where they are. I keep simple helper scripts like this in <strong>~/bin/</strong> so they&#8217;re easy to reference later, especially when scheduling them with cron.</p><pre><code><code>#create a directory for the scripts 

mkdir -p ~/bin

# Create the night-time blanking script

cat &gt; ~/bin/display-night.sh &lt;&lt;'EOF'
#!/bin/sh
DISPLAY=:0 xset dpms force off
EOF

# Create the day-time wake script

cat &gt; ~/bin/display-day.sh &lt;&lt;'EOF'
#!/bin/sh
DISPLAY=:0 xset dpms force on
EOF

#Make both scripts executable

chmod +x ~/bin/display-night.sh
chmod +x ~/bin/display-day.sh</code></code></pre><p>The important detail here is <code>DISPLAY=:0</code>. That tells <strong>xset</strong> which X session to talk to. Without it, nothing happens.</p><p>Before automating anything, test these manually from an SSH session:</p><pre><code><code>~/bin/display-night.sh
~/bin/display-day.sh</code></code></pre><p>If the screen goes dark and wakes up cleanly, you&#8217;re good. </p><h4>Scheduling with cron (correctly)</h4><p>Once you&#8217;ve confirmed the scripts work, the next step is getting them to run automatically at the times you want.</p><p>To do that, edit the user&#8217;s crontab. This is where per-user scheduled jobs live, and it&#8217;s the simplest way to run these scripts at specific times.</p><pre><code><code>crontab -e</code></code></pre><p>Here&#8217;s an example schedule that turns the display off at 9:30 PM and back on at 6:30 AM:</p><pre><code><code>30 21 * * * DISPLAY=:0 XAUTHORITY=/home/USER/.Xauthority /home/USER/bin/display-night.sh
30 6  * * * DISPLAY=:0 XAUTHORITY=/home/USER/.Xauthority /home/USER/bin/display-day.sh</code></code></pre><p>A few details here matter.</p><p>Cron does not run inside your login session. When a cron job fires, it doesn&#8217;t inherit your shell environment, your display, or your X session. It starts with almost nothing.</p><p>That&#8217;s why the full paths and extra variables are spelled out in the crontab entry.</p><ul><li><p><strong>DISPLAY=:0</strong> tells the script which X server to talk to. Without it, <strong>xset</strong> has no idea which display you mean.</p></li><li><p><strong>XAUTHORITY=/home/USER/.Xauthority</strong> tells X that this job is allowed to control that display.</p></li><li><p><strong>/home/USER/</strong> is the user&#8217;s home directory. Replace <strong>USER</strong> with your actual username. If you&#8217;re not sure what that is, run <code>pwd</code> from a terminal and use the path it prints. Cron does not expand shortcuts like <code>~</code> or search your interactive shell&#8217;s <strong>PATH</strong>, so everything needs to be written out explicitly</p></li></ul><p>If you leave any of this out, the job will still run, but it will quietly do nothing.</p><p>Once this is in place, the display turns itself off at night and comes back on in the morning without user interaction, background loops, or firmware tricks.</p><blockquote><p>Incidentally, It&#8217;s cron not chron..</p><p>An old guy with a beard told me it meant &#8220;Command Run ON&#8221;.</p><p>cron is not named after Chronos, the God of Time, but rather Cronus, the King of Titans, Keeper of the Old Order. The Root UNIX Scrolls tell of an eventual age when order will be overthrown in the world, and the regularity that is overseen by cron will crumble with it. When the Greeks wrote Titanomachy, they were foretelling the Fall of UNIX without knowing it.</p></blockquote><h4>Wi-Fi Hardening</h4><p>If this kiosk is using Wi-Fi, there&#8217;s one more thing worth fixing.</p><p>Out of the box, Wi-Fi power saving is enabled. That&#8217;s fine for laptops and phones, but it&#8217;s a bad fit for an unattended display. Power saving can introduce latency, cause dropped connections, or leave the system slow to reconnect after idle periods.</p><p>For something that&#8217;s supposed to stay connected and just work, it&#8217;s better to turn it off.</p><p>You can disable Wi-Fi power saving immediately with:</p><pre><code><code>sudo iw dev wlan0 set power_save off</code></code></pre><p>That change takes effect right away, but it won&#8217;t survive a reboot. To make it stick, the simplest approach is to wrap it in a small systemd one-shot service that runs at boot.</p><p>Create the service file:</p><pre><code><code>sudo nano /etc/systemd/system/wifi-powersave-off.service</code></code></pre><p>Add the following:</p><pre><code><code>[Unit]
Description=Disable Wi-Fi power saving
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/iw dev wlan0 set power_save off

[Install]
WantedBy=multi-user.target</code></code></pre><p>Enable it:</p><pre><code><code>sudo systemctl daemon-reload
sudo systemctl enable wifi-powersave-off.service</code></code></pre><p>From that point on, Wi-Fi power saving stays disabled across reboots. The connection remains stable, and the kiosk doesn&#8217;t quietly fall off the network.</p><p>If you&#8217;re using Ethernet instead of Wi-Fi, you can skip this entirely.</p><h4>SD Card Wear (A Brief Reality Check)</h4><p>I&#8217;ve seen SD cards used in plenty of lower-end kiosks, especially in Pi-based signage, dashboards, and other single-purpose displays. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dIdd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dIdd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dIdd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg" width="600" height="202" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:202,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:63287,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dIdd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dIdd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d451e0f-471d-434d-8f79-fe18903f7b21_600x202.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Works great right up until it doesn&#8217;t.</figcaption></figure></div><p>An always-on kiosk will eventually wear its storage, and browsers are usually the reason. Left unchecked, Chromium will generate constant writes from caches, session state, and background activity.</p><p>We try to avoid that problem here by keeping Chromium&#8217;s profile in RAM. Its cache and session churn never touch the SD card, and when the browser restarts it comes back clean, without accumulated state.</p><p>Once the browser is out of the equation, disk writes drop to a trickle. System logs and the occasional configuration change don&#8217;t meaningfully stress the card.</p><p>From here, the tradeoff is straightforward: use a decent SD card and treat it as replaceable, or start cutting writes further to extend its life. The second option works, but it also makes the system harder to change and debug.</p><div class="pullquote"><p>Premature optimization is the root of all evil. <br>- Donald Knuth</p></div><h3>How Much Pi Does This Eat?</h3><p>The goal here wasn&#8217;t how much hardware I could throw at a problem. It was how little I could get away with and still end up with an attractive display. I was curious about I can get away with.</p><p>Earlier, I said a <strong>2 GB Pi 4</strong> would be more than enough for this. Let&#8217;s prove it.</p><p>After the system had been up and running for a few hours, I checked memory usage:</p><pre><code><code>$ free -h
Mem:  7.6G total | 437M used | 6.7G free | 596M cache
Swap: 511M total | 0 used</code></code></pre><p>About 437 MB is in use. That includes the kernel, the X server, Chromium, and the web application running inside it. On a system with multiple gigabytes available, that is barely making a dent.</p><p>The <strong>uptime</strong> output tells the same story from a different angle:</p><pre><code><code>$ uptime
12:50:22 up 4:21, 2 users, load average: 0.06, 0.02, 0.00</code></code></pre><p>On this Pi, a load average of 1.0 means one CPU core is fully busy. Numbers well below that mean the CPU is mostly idle. Here, all three values, covering the last 1, 5, and 15 minutes, are close to zero.</p><p>It&#8217;s not doing much: Chromium runs, the display updates, touch input is responsive, and then the CPU goes right back to waiting.</p><blockquote><p>The &#8220;2 users&#8221; are just me logged in over SSH and the local display console running Chromium.</p></blockquote><p>So yes, a Pi 4 is massive overkill for this job, it not even breaking a sweat.  The next question was how far down the ladder I could go before it stopped working.</p><h4>Running on a Pi Zero 2 W</h4><p>I took out a fresh Pi Zero 2 W, dug up the proper cables for the HDMI display, and booted it using the same SD card I had been running in the Pi 4.</p><p>The kiosk ran better than you might expect. Running the page, it settled at about <strong>196 MiB of RAM used out of 416 MiB available</strong>. Not roomy, but not the dumpster fire people like to assume either.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EzFf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EzFf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EzFf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg" width="550" height="310" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:310,&quot;width&quot;:550,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86110,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EzFf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EzFf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a533f10-d3d9-4cab-8421-c530b543f351_550x310.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Raspberry Pi Zero 2 W driving the kiosk display. It can be done.</figcaption></figure></div><p>From a functional standpoint, the kiosk does its job.  But at startup Chromium displayed a low-memory warning dialog. That dialog completely breaks the kiosk model, because any dialog that requires user interaction might as well be a kernel panic in an unattended system.</p><p>I tried a few ways around it short of doing a custom Chromium build, but didn&#8217;t get anywhere quickly.  Making it work on a Pi Zero 2 W wasn&#8217;t important enough to keep pushing, so I moved on.</p><p>What I learned from this exercise is that a Pi Zero 2 W <em>can</em> drive the display, but it&#8217;s right on the edge. A Pi 4 has plenty of margin, and that margin matters more than proving a point.</p><h3>Choosing a Display</h3><p>I built and tested three complete systems using different display options before settling on a final design:</p><ul><li><p><strong><a href="https://www.raspberrypi.com/products/touch-display-2/">Raspberry Pi Touch Display 2</a></strong><br>7-inch diagonal, 800&#215;480 resolution, DSI interface</p></li><li><p><strong><a href="https://www.waveshare.com/wiki/PI5-HMI-080C">Waveshare PI5-HMI-080C</a></strong><br>8-inch diagonal, 1280&#215;800 resolution, DSI interface</p></li><li><p><strong><a href="https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)">Waveshare 7-inch HDMI LCD (C)</a></strong><br>7-inch diagonal, 1024&#215;600 resolution, HDMI interface</p></li></ul><p>The real difference between them comes down to the display interface. DSI, or Display Serial Interface, is meant for directly attached panels. It&#8217;s the kind of link used inside phones, tablets, and laptops, where the display is treated as part of the system. The panel is assumed to be known in advance, with fixed timing and geometry. When everything lines up, it works well, but there&#8217;s very little room for error.</p><p>HDMI takes the opposite approach. It&#8217;s designed for external displays. The panel describes itself to the system at startup, negotiates timing, and reports its resolution and physical characteristics through EDID. The OS doesn&#8217;t need to know anything about the panel ahead of time.</p><p>HDMI won for a very practical reason: I couldn&#8217;t get Chromium to reliably display the web page over DSI without a lot of fussing. The DSI setups worked when everything was exactly right, but they were fragile and easy to knock out of alignment.</p><p>That said, the DSI displays were further along as packaged products. They came with enclosures and mounting hardware and assumed the Raspberry Pi would live directly behind the panel as part of a single, integrated unit.</p><p>The Waveshare 7-inch HDMI LCD takes a more modular approach. Video comes in over HDMI, with touch and power handled separately over micro-USB. Everything terminates on a controller board mounted directly to the panel, with the connectors sticking straight from the side. Unlike the PI5-HMI-080C, this is just a bare LCD and driver board. Fabricating a case is up to the maker, although <a href="https://www.printables.com/model/85020-waveshare-7-hdmi-lcd-h-case/files">there are some STL files floating around online</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FWkd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FWkd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FWkd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg" width="600" height="449" data-attrs="{&quot;src&quot;:&quot;https://substackcdn.com/image/fetch/$s_!FWkd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:449,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130511,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!FWkd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FWkd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F968189c5-9828-4c0e-97e8-ebdc9192a2cb_600x449.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;m not a fan of resin 3D prints. They tend to look like toy-aisle junk, especially for something that&#8217;s going to live on a wall. I&#8217;ll be fabricating a proper hardwood frame instead.</p><p>In either case, the straight-out connectors force some clever mechanical design. Whether you&#8217;re printing plastic or building wood, careful layout is required to keep everything compact. A <a href="https://www.amazon.com/dp/B0CC8RL25Z">U-turn HDMI adapter</a> folds the cable back parallel to the panel instead of sticking straight out, and a <a href="https://www.amazon.com/dp/B093SWJD7B">U-turn USB adapter</a> does the same for the touch and power connection.</p><p>Mechanically, the HDMI option required more work. Electrically and in software, it was far more predictable.</p><h4>Why the HDMI Display Looked Better</h4><p>You would expect both DSI panels to look better than the 7-inch HDMI display because they have more pixels. In use, the opposite was true.</p><p>The HDMI display consistently looked sharper and more accurate. Text was crisper, edges were cleaner, and nothing appeared cropped or scaled. The higher-resolution DSI panels looked softer, despite having more pixels on paper.</p><p>The reason comes down to how the system learns what the display actually is. HDMI panels describe themselves to the system through EDID, reporting their resolution and physical size so the OS and Chromium can compute DPI and scaling correctly. The DSI panels did not provide that same level of self-description, which left the system guessing. That guess was slightly wrong, and the result showed up as scaling and softness on screen.</p><h4>A Note on DPI and Small HDMI Panels</h4><p>One small detail showed up once I started digging into the Waveshare 7-inch HDMI display. The physical size it reported to the system didn&#8217;t make sense for a panel that small. After chasing it down, it became clear that the EDID wasn&#8217;t coming from the LCD glass at all. It was coming from the HDMI controller board attached to the panel, using a hard-coded EDID blob that didn&#8217;t match the actual display.</p><p>Checking from the command line made the problem obvious:</p><pre><code><code>DISPLAY=:0 xdpyinfo | grep -B2 resolution
</code></code></pre><pre><code><code>dimensions: 1024x600 pixels (270x158 millimeters)
resolution: 96x96 dots per inch
</code></code></pre><p>Based on the EDID data, the display was treated as 270&#215;158 mm. The <a href="https://www.waveshare.com/wiki/7inch_HDMI_LCD_%28C%29?utm_source=chatgpt.com">Waveshare datasheet</a> lists the actual active display area as 154.21&#215;85.92 mm. In other words, the panel was treated as roughly 1.8&#215; larger than it really is, cutting the computed DPI almost in half.</p><p>Fixing it was straightforward. Overriding the reported physical size and rebooting was enough to straighten it out:</p><pre><code><code># /etc/X11/xorg.conf.d/10-monitor.conf
Section &#8220;Monitor&#8221;
    Identifier &#8220;HDMI-1&#8221;
    DisplaySize 150 90
EndSection
</code></code></pre><p>This doesn&#8217;t change resolution. It corrects the DPI calculation so text and layout are rendered at the proper physical scale.</p><h4>A Note on Waveshare LCDs</h4><p>I ended up with several Waveshare 7-inch HDMI LCD (C) panels sourced from different places. Panels bought directly from Waveshare included stands and mounting hardware. Panels bought through Amazon did not. It turns out Waveshare sells multiple bundle variants, and resellers often strip accessories or sell panel-only kits.</p><p>That difference <a href="https://www.waveshare.com/wiki/7inch_HDMI_LCD_(C)">raised a red flag</a> at first. Anyone who&#8217;s dealt with auto parts or commodity electronics knows the counterfeit market among Chinese OEMs and resellers is large, well-established, and relentless. Small LCD panels are no exception.</p><p>Knockoff and clone panels do exist, and they usually give themselves away quickly. Broken or missing EDID data, odd timing modes, incorrect physical dimensions, or flaky HDMI behavior are all common tells.</p><p>If you want to sanity-check a panel, HDMI makes it easy. A genuine Waveshare panel presents a clean EDID, advertises a native resolution of 1024&#215;600, and reports a physical size consistent with a 7-inch display. On a running system, you can use the X11 utilities to inspect what the panel is actually advertising over HDMI:</p><pre><code>DISPLAY=:0 xrandr --verbose</code></pre><p>What you want to see is boring output: a stable HDMI connection, a preferred mode of 1024&#215;600, sane timing values, and a readable EDID block. I saw none of the usual red flags here. Panels from different sources behaved identically and reported the same display characteristics.</p><h3>Dialing in display quality</h3><p>From that point on, the remaining polish was entirely in the web page layout and typography, not the hardware or the display stack.</p><p>Getting the display to look right had very little to do with hardware and almost everything to do with abandoning browser-centric layout habits. Things like fluid layouts, rem-based sizing, fractional spacing, and trusting the browser to &#8220;do the right thing&#8221; are usually taught as best practice. That advice makes sense when you&#8217;re building resizable pages for screens with unknown geometry. On a fixed-resolution kiosk, it works against you and gets in the way of pixel-accurate rendering.</p><p>The biggest improvement came from eliminating fractional geometry altogether. I stopped using rems, switched everything to integer pixel sizes, and removed fractional margins anywhere near text. Font sizes like 28.8px or labels at 13.6px always looked slightly soft. The same text at 24px or 14px snapped into focus immediately. Bumping font weights helped as well, especially for small labels and numeric readouts.</p><p>Font choice was the last piece. The default system font rendered poorly on a Raspberry Pi driving a 7-inch HDMI panel, particularly for numbers. Switching to a better screen-friendly font like Inter and using WOFF2 files made the text noticeably crisper. I also limited the design to just two weights, regular and semibold, which helped eliminate the remaining blur around numbers and labels</p><p><strong>Example CSS for a 1024&#215;600 Kiosk</strong></p><pre><code>/* === KIOSK TUNING FOR 1024&#215;600 === */
@media (max-width: 1024px) and (max-height: 600px) {

  body {
    font-family: &#8220;Inter&#8221;, system-ui, sans-serif;
    font-size: 16px;
    font-weight: 400;
    font-variant-numeric: tabular-nums lining-nums; 
                           /* stabilizes numeric alignment */
    margin: 0;
    padding: 8px;
    overflow: hidden;
  }
}
</code></pre><p><strong>What not to do on a fixed-resolution kiosk:</strong></p><pre><code><code>h1 {
  font-size: 1.5rem;      /* fractional in practice */
  margin-bottom: 0.15rem;
}</code></code></pre><p><strong>Do this instead:</strong></p><pre><code><code>h1 {
  font-size: 24px;        /* integer pixels */
  margin-bottom: 4px;    /* integer spacing */
  font-weight: 600;
}</code></code></pre><h4>On the Substance of Things</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lt-C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lt-C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lt-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg" width="500" height="305" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:305,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59526,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181591617?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lt-C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lt-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F207b6d86-a0ee-4a63-8b2f-ede95b8823e5_500x305.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The goal here was to give our weather station a proper face, where layout, spacing, and weight matter as much as the numbers themselves. Every choice, from HDMI versus DSI to correcting DPI and snapping the layout to the pixel grid, was about how the information is <em>formed</em> on the screen, not how many bells or whistles it has.</p><p>The surprising thing was how much of the result came from details most people never notice. When the display reports its size correctly, when text lands cleanly on pixels, and when spacing is deliberate, the screen stops feeling like a random browser window and starts feeling like a <em>thing</em>, something composed and coherent, rather than merely assembled.</p><p>Maybe that&#8217;s always been true. Most of what we build won&#8217;t last, and much of it will be forgotten. But the act of shaping something carefully, of giving even a small object clarity and proportion, matters anyway. Not because it&#8217;s permanent, and not because it impresses, but because <a href="https://www.vinthewrench.com/p/for-the-glory-of-god">often making something </a><em><a href="https://www.vinthewrench.com/p/for-the-glory-of-god">well</a></em><a href="https://www.vinthewrench.com/p/for-the-glory-of-god"> is its own justification</a>.</p>]]></content:encoded></item><item><title><![CDATA[Build Your Own Off-Grid Weather Station]]></title><description><![CDATA[A Raspberry Pi and SDR system for collecting real weather data without relying on anyone&#8217;s cloud.]]></description><link>https://www.vinthewrench.com/p/build-your-own-off-grid-weather-station</link><guid isPermaLink="false">https://www.vinthewrench.com/p/build-your-own-off-grid-weather-station</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 12 Dec 2025 17:36:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vBfY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This project documents how I built an off-grid weather station using a Raspberry Pi and an SDR receiver to collect, process, and store local weather data without relying on cloud services.</p><h3>How I Ended Up Building a Weather Server</h3><p>Let&#8217;s get this out of the way up front: I will try and not make this a deep technical dive. If you want the nuts-and-bolts detail, dig into the <a href="https://github.com/vinthewrench/offgrid-weather-station">GitHub</a> repo. There&#8217;s enough there to build it yourself, or at least steal the parts that matter.</p><p>What I&#8217;m doing here is the 30,000' foot view.  But occasionally I will swoop down when necessary.</p><p>This is how some of my projects go. You fix one problem and set off a chain reaction. Three more issues surface, and before you know it, two weeks have gone by and you&#8217;ve built a weather station.</p><p>And before anyone asks why I didn&#8217;t just buy a cheap &#8220;all-in-one&#8221; weather station off Amazon: I already did. It worked great as a stopgap. But if you want real data, local storage, or customization, we can do better.</p><p>But the real story starts somewhere completely unrelated: my outdoor <a href="https://www.vinthewrench.com/p/we-want-the-airwaves">ADS-B crowdsourced feeder setup</a>.</p><p>Out by the greenhouse I have two home-brew systems doing very different jobs. One handles irrigation and related sensing. The other is a standalone ADS-B feeder. Both run in weatherproof boxes with solid DC power and battery backup.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4lXW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4lXW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4lXW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg" width="600" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87184,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4lXW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4lXW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fa2248f-7167-4ca9-8d5d-544d8febdd34_600x452.jpeg 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><figcaption class="image-caption">ADS-B and weather server in one box</figcaption></figure></div><p>This story is about the second one.</p><p>I was outside doing routine maintenance on the ADS-B box. Updating software, tightening things up, <strong>cleaning out the annual mud dauber infestation</strong>. The kind of &#8220;quick task&#8221; that never stays quick.</p><p>That was when it became obvious how underused the ADS-B hardware really was. A quick look at the load average showed the Pi barely breaking a sweat, maybe seven percent utilization. </p><p>That is not workload. That is loitering. </p><p>This thing is begging for a project.</p><p>Meanwhile, over the irrigation side, rainfall was still a blind spot. That system relied on the same <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-cfd">hygroscopic disc sensors</a> you find on most sprinkler controllers. They can tell you that it rained, but not how much.</p><p>And the amount matters. Rainfall drives irrigation decisions, especially for water-sensitive crops like melons. I wanted real numbers, not a binary &#8220;wet or dry&#8221; signal.</p><p>I also liked the idea of treating weather data the same way I treat ADS-B data: collect it locally and share what I choose to share.</p><p>But I was not about to bolt weather sensing onto the irrigation controller or put anything critical on the open internet and invite the &#8220;psychic spies from China.&#8221; What I wanted was a local view of the weather data I actually care about, stored on my hardware, presented my way. The Ambient display we had been using was a decent stopgap, but it does not give me the flexibility or insight I want out here.</p><p>So the obvious next step was an isolated weather station. If it ever gets poked, it will not take the irrigation system down with it.</p><h3>Discovering the WS90</h3><p>Once I decided this needed to become a proper weather station, the first step was obvious: find an outdoor sensor unit that was not garbage. My first thought was to repurpose the Ambient unit we already had. The plan was simple: pull the RF off it with another SDR and feed it into the Pi.</p><p>Simple plan. Reality disagreed.</p><p>The problem showed up fast. I could not get a clean, consistent signal from the Ambient outdoor unit. Half the time the packets I thought were coming from the outdoor sensor were actually coming from the indoor display. Whatever the exact cause, the outdoor RF in my setup was not strong or stable enough to build anything reliable on top of.</p><p>Yes, <a href="https://www.jeffgeerling.com/blog/2025/getting-weather-data-my-acurite-sensors-was-shockingly-easy?utm_source=chatgpt.com">other people have had success</a> pulling Ambient data with rtl_433. In my case it was not giving me the predictable stream I needed.</p><p>Maybe it was interference. Maybe distance. Maybe both. I did not care. I had other irons in the fire, and I was not going to burn two weeks <a href="https://www.vinthewrench.com/p/friggin-in-the-riggin">debugging RF</a> just to end up with a system I still would not trust.</p><p>So, being reasonably hip to modern tools, I asked my friendly neighborhood AI who actually makes a decent remote weather sensor, one I could receive over RF, <a href="https://web.stanford.edu/class/ee26n/Assignments/Assignment1.html">decode with an SDR</a>, and turn into real data.</p><p>The <a href="https://shop.ecowitt.com/products/ws90">Ecowitt WS90</a> kept coming up in discussions among people who actually measure things, not just mount plastic gadgets on their decks. The big win for me was that you can buy the WS90 by itself. No console. No gateway. No cloud tether. No subscription hardware riding shotgun. Just an outdoor unit transmitting RF that an SDR can receive and decode cleanly.</p><p>A solid, standalone RF weather sensor like this is no longer made in the United States. That pisses me off. Ecowitt builds much of the world&#8217;s mid-range weather hardware now. This is where it comes from. China.</p><p>We should be building this hardware here.</p><p>There is a special place in Hell for the people who decided outsourcing this kind of technology was a good idea. <a href="https://www.gutenberg.org/ebooks/8789">Dante wrote about that place</a>.</p><p>For the record, I do not have much trust in anything coming out of the China supply chain. That said, the WS90 is about as low-risk as it gets. It does not join my Wi-Fi. It does not run code on my network. It does not even know my network exists. All it does is transmit RF into the air, which I decode locally with an SDR. One-way traffic. No control channel. An actual air gap.</p><p>Given that threat model, I was willing to use it.</p><p>The Ecowitt WS90 is a compact, all-in-one outdoor sensor head that covers the basics you actually need on a farm: temperature, humidity, wind speed and direction, solar radiation, UV, and a haptic rain sensor that does not fill up with bugs or freeze into a useless block of ice. There are no moving cups or spoons, nothing to clog, and it even <a href="https://osswww.ecowitt.net/uploads/20230914/Bird%20Spikes%20Manual.pdf">ships with bird spikes</a>.</p><p>It has no display and no built-in intelligence. It simply broadcasts raw RF packets every few seconds with whatever it is measuring. That is all it does.</p><p>All of the actual &#8220;weather station&#8221; logic, daily highs, rainfall totals, stateful data, graphs, is computed on the backend.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jiQH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jiQH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jiQH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg" width="600" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93137,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!jiQH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jiQH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c45251-1c55-4b0f-b1c0-8bfa02d77dc5_600x677.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The WS90 is outstanding in its field</figcaption></figure></div><p>I mounted the WS90 on a simple PVC pipe in the garden. PVC is cheap, rigid enough, easy to replace, and avoids the lightning rod problem that comes with metal mounts. It gets the sensor above ground clutter, where wind and rainfall measurements are not distorted. A couple minutes with a breaker bar and it was doing its job.</p><h3>About That Missing Barometer</h3><p>One thing the WS90 does <strong>not</strong> have is a barometer. At first glance that looks like a missing feature. It is not. It is the right call.</p><p>Barometric pressure sensors do not belong outdoors. They drift with temperature swings, get hammered by humidity, and hate direct sun. Put one outside and what you have built is mostly a thermometer pretending to be a pressure instrument.</p><p>That is why every serious weather station splits the job. The outdoor unit handles the elements. The indoor hardware handles the barometer, where the temperature is stable. Davis does it. Ambient does it. AcuRite does it. Ecowitt does it. This is not a design flaw. It is physics.</p><p>The WS90 leaves pressure measurement to whatever indoor module you choose to pair with it. At some point I will probably hang a cheap BMP380 off another Raspberry Pi indoors, where it actually belongs.</p><p>I am not trying to predict rain. I will leave that to the cute weather girls. I just want accurate local conditions, and keeping the pressure sensor inside is how you get them.</p><h3>It&#8217;s a Software Problem</h3><p>Once the WS90 was in place, this became the fun part.</p><p>I already had an SDR on the Raspberry Pi listening to chem-trail pilots broadcast their position and altitude, so adding weather data to the mix was not much of a stretch. The ADS-B stack runs in its own Docker container, and there was no clean way to piggyback another decoder onto that same SDR. Fortunately, those dongles cost about forty bucks. It was easier to plug in a second SDR with a short whip antenna and keep everything separate.</p><p><a href="https://www.rtl-sdr.com/about-rtl-sdr/">RTL-SDR</a> is one of the great hacks of the last decade. It started life as a cheap TV tuner until someone realized you could ignore the &#8220;watch television&#8221; part and use it as a wide-band software-defined radio instead. Suddenly you had a general-purpose RF sniffer that could hear everything from <a href="https://web.stanford.edu/class/ee26n/Assignments/Assignment5.html">garage-door openers</a>, and <a href="https://web.stanford.edu/class/ee26n/Assignments/Assignment6.html">utility meters</a> to <a href="https://web.stanford.edu/class/ee26n/Assignments/Assignment4.html">aircraft transponders</a> and weather sensors.</p><p>I have written about it before, in my <a href="https://www.vinthewrench.com/p/picar-raspberry-pi-car-radio-project-237">Pi CarRadio project</a>, where I used it to decode FM broadcasts. RTL-SDR refers both to the inexpensive USB dongle and the <strong><a href="https://github.com/osmocom/rtl-sdr">rtl-sdr</a></strong> software that lets Linux pull raw RF out of the air. It is basically a digital stethoscope for the atmosphere.</p><p>That is where <strong><a href="https://github.com/merbanan/rtl_433">rtl_433</a></strong> comes in.</p><p>rtl_433 understands the oddball RF protocols used by consumer sensors. Thermometers, tire-pressure monitors, door sensors, weather stations. If a gadget is chirping on one of the unlicensed ISM bands these devices live on, rtl_433 probably knows how to listen.</p><p>In my case, I pointed it at the second SDR and it turned raw RF waveforms into clean JSON containing the WS90&#8217;s temperature, wind, rainfall, and everything else it was broadcasting.</p><p>At that point, it really was just a simple matter of programming.</p><h3>Making Sense of it all</h3><p>The WS90 is not a weather station in the way most people think about one. It does not know about days, totals, or trends. It does not remember anything. It just measures what it can and broadcasts that information as a raw RF packet every few seconds.</p><p>That packet is the only thing the WS90 ever produces.</p><p>A typical decoded packet from  rtl_433 looks like this:</p><pre><code>{
  &#8220;time&#8221;           : &#8220;2025-12-12T09:35:23&#8221;,
  &#8220;model&#8221;          : &#8220;Fineoffset-WS90&#8221;,
  &#8220;id&#8221;             : 52127,
  &#8220;battery_ok&#8221;     : 0.92,
  &#8220;battery_mV&#8221;     : 2880,
  &#8220;temperature_C&#8221; : 11.3,
  &#8220;humidity&#8221;       : 63,
  &#8220;wind_dir_deg&#8221;   : 295,
  &#8220;wind_avg_m_s&#8221;   : 0.7,
  &#8220;wind_max_m_s&#8221;   : 1,
  &#8220;uvi&#8221;            : 2,
  &#8220;light_lux&#8221;      : 29460,
  &#8220;flags&#8221;          : 162,
  &#8220;rain_mm&#8221;        : 125.2,
  &#8220;rain_start&#8221;     : 0,
  &#8220;supercap_V&#8221;     : 3.7,
  &#8220;firmware&#8221;       : 158,
  &#8220;data&#8221;           : &#8220;3fff085622------8a92ffdffd0000&#8221;,
  &#8220;mic&#8221;            : &#8220;CRC&#8221;
}
</code></pre><p> That packet contains exactly what the sensor knows at that instant:</p><ul><li><p><strong>Environmental measurements</strong>: temperature, humidity, wind, light, UV, and rain impulse state.</p></li><li><p><strong>Power health</strong>: battery voltage, charge state, and supercap voltage.</p></li><li><p><strong>Identity and versioning</strong>: sensor ID, model, and firmware revision.</p></li><li><p><strong>Housekeeping</strong>: flags, raw payload, and a CRC for integrity.</p></li></ul><p>That is the entire input. Just a snapshot of the world at that exact moment. </p><p>Everything else, daily rain, highs and lows, trends, and decisions, happens downstream, on my hardware, under my control. Rainfall is the easiest place to see why that matters.</p><h4>Turning Rain Impulses Into Totals</h4><p>The WS90 does not measure rain the way most people imagine. There is no bucket filling up inside it. Instead, it uses a haptic sensor, essentially a vibration sensor bonded to a plate. Each raindrop produces a small impulse when it hits. Those impulses are counted and reported as a running rainfall value.</p><p>In the decoded data, this appears as the <strong>rain_mm</strong> field. It is not &#8220;today&#8217;s rain&#8221; or &#8220;this storm.&#8221; It is a counter that increases as rain continues and is never reset by the sensor. When you first bring a WS90 online, you record the current value and use it as the baseline. From that point on, any increase represents additional rainfall.</p><p>The WS90 also reports a <strong>rain_start</strong> value, which marks when the sensor thinks the current rain event began.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H4PH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H4PH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 424w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 848w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 1272w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H4PH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png" width="616" height="414" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:414,&quot;width&quot;:616,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47580,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.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_!H4PH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 424w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 848w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 1272w, https://substackcdn.com/image/fetch/$s_!H4PH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d04c2af-3f27-4316-86dc-614859c8135b_616x414.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Rain totals computed from WS90 data over time.</figcaption></figure></div><p>A rain event is calculated by watching <strong>rain_mm</strong> increase between the <strong>rain_start</strong> marker and the point where rain stops. Hourly, daily, weekly, monthly, and yearly totals come from accumulating those same differences across fixed time windows.</p><p>That is how the rain totals on the screen get computed. None of those numbers are reported directly by the sensor. They are derived by tracking how <strong>rain_mm</strong> changes over time and applying time boundaries in software.</p><h4>The Weather System Pipeline</h4><p>The system is a straight pipeline. Raw RF comes in one end. Usable data comes out the other.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sUn9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sUn9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 424w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 848w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 1272w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sUn9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png" width="500" height="226" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:226,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66980,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.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_!sUn9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 424w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 848w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 1272w, https://substackcdn.com/image/fetch/$s_!sUn9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94bee2c7-6af4-4bf3-9998-362a91e4f787_500x226.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Weather System Pipeline</figcaption></figure></div><p><strong>RF decode</strong><br>This is where it starts. Our RTL-SDR dongle listens to the ISM bands, and rtl_433 decodes whatever it hears and outputs data in JSON format. That could include the WS90, along with any other devices chirping on those same frequencies.</p><p><strong>WS90 module</strong><br>A small program reads the rtl_433 output, keeps only the WS90 packets I care about, and throws everything else away. It makes sure the data is sane, keeps the most recent good reading, and ignores anything that goes stale before handing it off downstream.</p><p><strong>Ecowitt backend</strong><br>This is where the groovy work happens. The backend pulls in the latest WS90 reading from the listener and keeps track of what the sensor says over time. It compares each new reading to the one before it and updates its own records as things change.</p><p>Most of this is bookkeeping. Rainfall is calculated from changes in the rain counter, not from a single reading. Daily highs and lows are tracked as the day goes on. Wind is summarized instead of logged endlessly. Rolling averages smooth out noise so the numbers do not jump around every few seconds.</p><p>The backend also keeps a small local database. It stores enough history to be useful without trying to become a data warehouse. Recent readings, daily summaries, and rollups live there so trends can be shown and numbers survive restarts.</p><p>It also watches for trouble. If readings stop updating or arrive late, that gets noticed and flagged. Nothing is silently filled in or guessed.</p><p>What comes out of the backend is exposed through a simple local JSON API. Current conditions, accumulated totals, recent history, and status are all there in one place, ready for the web frontend to read and display.</p><p><strong>Web frontend</strong><br>The backend&#8217;s local JSON API is used to generate a simple dashboard, served by nginx and viewed in a browser. The page polls the backend at a steady interval and updates the display in place. The frontend does no computation. It just updates the display.</p><p>The dashboard makes it easy to see current conditions, recent rain totals, and the overall health of the system. Additional pages show recent history for things like temperature, humidity, and rainfall. </p><p>Each stage runs in its own Docker container. The WS90 module, backend, and frontend are isolated so they can be restarted or updated independently. If one component misbehaves, it does not take the rest of the system down.</p><h4>The Web Dashboard</h4><p>Once the backend is keeping things straight, you still need a way to see what it&#8217;s doing. That is the job of the dashboard.</p><p>The first screenshot shows the main dashboard view with current conditions and system status. The second shows the history view, where you can look back at recent temperature, humidity, and rainfall data.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBfY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBfY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 424w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 848w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 1272w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png" width="600" height="418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:418,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109893,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.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_!vBfY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 424w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 848w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 1272w, https://substackcdn.com/image/fetch/$s_!vBfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3d693f-7813-408e-ab11-67eec8eff980_600x418.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Web Dashboard</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uTgE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uTgE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 424w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 848w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 1272w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uTgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png" width="600" height="353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:353,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84956,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/181285745?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.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_!uTgE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 424w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 848w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 1272w, https://substackcdn.com/image/fetch/$s_!uTgE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb978c1-d90c-4abc-80bb-a6b6048bba80_600x353.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Historical Data Display</figcaption></figure></div><p>What the user sees is a simple web page showing current conditions, recent rain totals, and basic system health. It works in any browser. Phone, tablet, laptop, what have you.</p><p>It is just a web interface, easy to repurpose. In my case, this will probably end up on a small display driven by another Raspberry Pi and hung on the wall. Nothing special required. It is just a browser pointed at the dashboard.</p><p>The dashboard itself is intentionally boring. It is read-only, accepts no input, and does no computation. There is nothing to log into, nothing to submit, and nothing to manipulate. Putting it behind a tunnel provides remote visibility without turning it into something that needs constant security attention.</p><p>If you want access outside the LAN, this setup works well behind a Cloudflare tunnel. The connection is outbound only, so nothing is exposed directly to the internet and no ports are opened on the firewall. <em>That setup probably deserves its own article.</em></p><h4>Crowdsourcing, When It Makes Sense</h4><p>This setup did not start as a weather project. It started as an ADS-B feeder running in its own set of Docker containers on the Pi. The weather system simply added a few more alongside it.</p><p>ADS-B is one of the cases where crowdsourcing actually works. A single receiver does not see much, but thousands of them together build a picture that is genuinely useful. Each feeder is simple, local, and independent. If one goes offline, nothing breaks.</p><p>Weather data can work the same way. Local measurements matter, especially in rural areas where official stations are sparse and often far away. Sharing data from a real sensor, in a real location, can help fill those gaps.</p><p>The important part is that this is optional. My weather station does not depend on being online, and it does not depend on anyone else&#8217;s cloud. If I choose to feed data outward, it is one-way. In my case that means services like <a href="https://kestrelinstruments.com/faqs/question/view/id/1228/">Weather Underground</a> or <a href="https://stations.windy.com/">Windy</a>, but nothing here is locked to a particular platform. If you want something different, it is easy enough to write your own feeder.</p><p>Crowdsourcing should be a contribution, not a dependency. The system works for me first. Sharing data is something I can turn on or off without changing how the farm runs.</p><h3>Wrapping It Up</h3><p>This started the way a lot of real projects start. I was out there fixing one small thing on a box that was already doing useful work. That exposed unused capacity, missing data, and a few rough edges that were easy to live with until they weren&#8217;t. And then the inevitable question came up: <strong>what if?</strong></p><p>The weather station was not the plan. It was simply the next sensible move. The hardware could handle it, the data mattered, and the off-the-shelf options were never going to give me the control or visibility I wanted. So the system grew, piece by piece, into something solid and genuinely useful.</p><p>Next up.  Hook it up to a <a href="https://www.vinthewrench.com/p/building-a-dedicated-weather-station">small hardware dashboard</a> on the kitchen wall, something always on and easy to glance at. How could I resist another cool project.</p><div><hr></div><p>If you want to see what comes next, stick around. More projects are coming. In the meantime, <a href="https://www.vinthewrench.com/p/its-about-independence">go poke around the other builds</a>. And yes, they will almost certainly start with &#8220;I was just going to fix one small thing.&#8221;</p>]]></content:encoded></item><item><title><![CDATA[AI, Maker Tools, and a Rabbit With a Right Hook]]></title><description><![CDATA[How modern tools, online fabrication services, and AI put factory-level power back in the hands of real builders.]]></description><link>https://www.vinthewrench.com/p/ai-maker-tools-and-a-rabbit-with</link><guid isPermaLink="false">https://www.vinthewrench.com/p/ai-maker-tools-and-a-rabbit-with</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Sun, 07 Dec 2025 17:45:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mTl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Independence and agency aren&#8217;t only about solar panels and self-hosted servers.<br>Sometimes it&#8217;s a two-dollar sticker you cooked up yourself instead of plastering someone else&#8217;s brand identity on your gear.</p><p>Autonomy starts small.<br>You don&#8217;t really own something until you&#8217;ve put a little of yourself into it.</p><p>A few months after hip surgery <a href="https://www.vinthewrench.com/p/back-in-the-saddle-again">it was time to get back in the saddle again</a>. Literally.</p><p>This time on a brand-new KLR-650 that stopped being stock the second I rolled it into the driveway.</p><p>Brighter brake lights.<br>Skid plate.<br>Hand guards.<br>The usual upgrades.</p><p>But it was still missing something.<br>Something that said there are many like this, but this one is mine.</p><p>So I had a dumb idea.<br>The good kind.</p><p>Make a logo that matched the bike&#8217;s personality.</p><p>A rabbit that hits as hard as the KLR&#8217;s 652 cc thumper.</p><p>Not a cute bunny.</p><p>A rabbit that looks like it just tore out of the underbrush with bad intentions and a mean right hook.</p><p>Something that says, &#8220;Yeah, this is mine. You got a problem with that?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mTl5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mTl5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 424w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 848w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 1272w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mTl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png" width="400" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:267524,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180960832?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.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_!mTl5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 424w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 848w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 1272w, https://substackcdn.com/image/fetch/$s_!mTl5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F62ef1ff1-8a3a-4247-876a-aa8fdb368e82_400x464.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And once I had that picture in my head, I wanted to see it for real. So I did what any builder does when an idea won&#8217;t leave him alone. It was time to get out the tools and put something together.</p><p>In days of old I would sit down, pull out the pencils and paper, and start sketching.<br>Rough lines. Bad proportions. Erased mistakes.<br>Slowly turning the idea into something that could actually live on the side of a bike.</p><p><a href="https://vimeo.com/9514207">But modern problems require modern solutions</a>.</p><p>So instead of burning through another stack of paper, I decided to employ that AI thing everyone won&#8217;t shut up about. Not to &#8220;create art&#8221; or whatever people claim it does. I just wanted a faster way to hammer my rough sketch into something usable. A power tool for drawing.</p><p>So I fed my rough sketch into the machine and started cranking on it. Line weight, posture, proportions, attitude. Nudge this. Sharpen that. Fix the damn ears. It was the same old process I&#8217;ve always used, just faster. Like having a junior apprentice who never gets tired and doesn&#8217;t argue about doing another revision.</p><p>AI isn&#8217;t the sharpest tool in the box. Sometimes it gets it perfect, and sometimes it <strong>dives straight into the rabbit hole of stupid</strong> like it packed a lunch for the trip.</p><p>But I wasn&#8217;t about to sink a week into this little dalliance. I&#8217;ve got a lot of projects on the docket, and frankly, I&#8217;d rather be out breaking in these bionic hip joints on the bike than burning daylight babysitting a digital rabbit.</p><p>So I sparred with GPT for about thirty minutes or so, trading stupidity and brilliance in equal measure, and eventually our beloved Thumper clawed his way out of the chaos.</p><p>Now the next question was how to turn this stream of bits into something I could actually stick to the fairings.</p><p>So I asked the great and powerful Oz who could make decals that wouldn&#8217;t bail out after a week or two of wet riding.</p><p>I would&#8217;ve preferred to give the business to a local print shop, but the turnaround was longer than I had patience for, and most places don&#8217;t get excited when you show up wanting a handful of weird, one-off decals. I just wanted to get this project done and move on, not become someone&#8217;s problem of the day.</p><p>The &#8220;great GPT&#8221; suggested a few online vendors that actually handle odd-shaped decals. The whole process started to feel a lot like how I spin up PC boards for my projects.</p><p>I was snapped back to reality and my preference for keeping the work in the USA, ideally with someone who isn&#8217;t busy turning our money into weapons that could end up pointed in our direction.</p><p>The best it could do was <a href="https://stickerapp.com/">StickerApp</a>, which, to be fair, wasn&#8217;t a bad suggestion.  Their corporate office is off in Sweden somewhere, but at least the U.S. production happens in Maryland.  And as the ancient Greek philosopher Mediocrit&#232;s once said &#8212; ehh, good enough.</p><p>I uploaded the PNG, picked the finish, hit approve, and fifteen custom die-cut stickers showed up in the mailbox a few days later for about two bucks apiece.</p><p>If you want the rabbit, I parked the PNG file are on <a href="https://github.com/vinthewrench/ThumperDecal">GitHub</a>, with the rest of my projects. Have at it.</p><p>This story wasn&#8217;t about slapping a rabbit on a fairing. It&#8217;s about the ridiculous era we&#8217;re living in, where a builder can run KiCad for boards, SendCutSend for metal, and an AI for art, and end up with pro-grade results without ever leaving the shop. We&#8217;ve got a modern toolbox full of miracles, and half the time we forget to appreciate just how wild that is.</p><p>Because underneath it all, this isn&#8217;t about decals, software, or fabrication services. It&#8217;s about how these tools give the little guy the kind of power that used to belong only to factories and corporations.</p><p>And if you stick around here long enough, you&#8217;ll see that this rabbit is just one small example of a much bigger mission: putting real capability back into the hands of real builders. No gatekeepers. No permission slips. Just tools, grit, and the stubborn desire to make things that actually work.</p><p>If that sounds like your kind of trouble, you&#8217;re in the right place.<br>Pull up a chair. <a href="https://www.vinthewrench.com/p/its-about-independence">More projects are coming</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Back in the Saddle Again]]></title><description><![CDATA[We can rebuild him. We have the technology&#8230;]]></description><link>https://www.vinthewrench.com/p/back-in-the-saddle-again</link><guid isPermaLink="false">https://www.vinthewrench.com/p/back-in-the-saddle-again</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 05 Dec 2025 03:29:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5cE1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is my 100th Substack article, and I figured it deserved something a little more special than yet another installment of <a href="https://www.vinthewrench.com/p/off-grid-farm-automation-raspberry-pi">Raspberry Pi rigs keeping the tomatoes alive</a>. Experience has taught me to keep the intimate details of my personal life off social media, but I&#8217;ll let a little of the fun stuff slip through this time.  </p><p><strong>This one&#8217;s a little more personal.</strong></p><p>And like everything else I publish here, the point is still the same: live your own life instead of outsourcing it. If you read my <em><a href="https://www.vinthewrench.com/p/be-trained-or-be-chained">Be Trained&#8230; or Be Chained</a></em> piece, you know exactly where I&#8217;m coming from.</p><h4>Long Miles of Hard Riding</h4><p>Growing up in Boston in the 70s, I learned early that the streets didn&#8217;t hand out second chances. Tough neighborhoods, late-night subway rides home after sneaking into MIT to mess around on computers, you had to know how to handle yourself.</p><p>My dad sent me to my first martial arts school in the 70s, a little place called <strong>American Combat Karate in Roslindale Square</strong>. Like a lot of dojos back then, it came and went, but it was my starting point. Martial arts didn&#8217;t come naturally to me, but I stuck with it long after plenty of others drifted off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RLtR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RLtR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RLtR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg" width="500" height="377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:377,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52102,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RLtR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RLtR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30152813-86ac-4820-a4f4-351e9c534b26_500x377.jpeg 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><figcaption class="image-caption">Training with my best friend Ichiro, many miles ago. Miss you, my brother.</figcaption></figure></div><p>Eventually that path led me into <a href="https://www.youtube.com/watch?v=uZn5jfl2QQI">Kyokushin-kai</a>, training alongside folks with&#8230; let&#8217;s just say unconventional resumes. This was bare-knuckle, full-contact work with no illusions attached. <em>You get comfortable with pain, maybe even a little friendly with it</em>.</p><p>After <a href="https://www.mas-oyama.com/history">Kancho Oyama</a> died, the Kyokushin world fractured into camps I wanted no part of. I kept training and teaching for a while, but the real value was never the stripes on the belt or the size of the guy trying to knock your head off. What mattered was the discipline, staying focused, keeping your head when everything hurt, pushing through when most people quit.. </p><h4>On Any Sunday</h4><p>Some of the guys I trained with turned me on to motorcycles. I respected what they were capable of, but the lifestyle was not for me. What I did take from them was the focus, the discipline, and the way riding demanded the same clarity you needed in a fight. One of them also pointed me toward the <a href="https://msf-usa.org/start-your-ride/basic-ridercourse/">MSF RiderCourse,</a> which turned out to be exactly the kind of structured, no-nonsense training I needed to start the right way.</p><p>I loved the course enough to go back and apply to be an instructor. That program was no easy path, with an attrition rate on par with what you&#8217;d expect from a military selection course. The school was particular for good reason. Some of it was liability, but a lot of it was because you were dealing with civilians who do not always realize how quickly a motorcycle can punish bad decisions. <em>We had to be perfect</em>.</p><p>Motorcycles became a prime focus for me, and there were days when my life looked like <em><a href="https://www.youtube.com/watch?v=clhXwxmaPsU">On Any Sunday</a></em> with a punk rock soundtrack. The downside was that between teaching karate, teaching at the motorcycle school, and working as an engineer, I had no time left for anything that passed for normal life.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Fab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Fab!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Fab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg" width="500" height="303" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:303,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89335,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Fab!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Fab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ae45a3a-bd46-4c4d-b49a-3ad3d5af3900_500x303.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Let&#8217;s just say we both had a serious need for speed,</figcaption></figure></div><p>Back then, my mistress was a Kawasaki ZX-11 &#8212; a vicious, beautiful beast that hit 175 mph and could go from zero to dead in the length of one stupid mistake. She didn&#8217;t forgive sloppy throttle hands or late braking. That bike scared the hell out of me just enough to make me get real serious. I signed up for the<a href="https://superbikeschool.com/product/a-twist-of-the-wrist-vol-1/"> California Superbike School</a>. where I earned more from Keith Code than I could have ever expected.  He stripped racing down to its bones and rebuilt it as this perfect blend of engineering and art. But also his teaching methods showed me how to train people with precision instead of guesswork. </p><p>It was not long before I said goodbye to the east and headed for the sunny beaches of California. And before I knew it, I was spending whatever I could scrape together on tires just to get more time at Laguna Seca, and <em>getting way more familiar with hay bales on the side of the track than I preferred</em>.</p><h4>Cold Work, Mountains, and Heavy Packs</h4><p>California could not last forever. It eventually got Californicated, and it was time to buy a house and have kids, so we headed north. Southern Oregon has beautiful mountains and rivers, perfect for getting outdoors and pushing yourself a little. And I pushed. Most weekends I was on Mt Ashland, at Crater Lake, up Shasta, or grinding out miles on the PCT. I especially took to hiking the backwoods parts of the mountains where no one with any sense goes, especially in the snow. I liked experimenting and sharpening my wilderness survival skills whenever I could, usually with a heavy pack and a pair of snowshoes that were <em>quietly filing warranty claims against my hip joints.</em></p><p>Every so often I crossed paths with the Jackson County Sheriff&#8217;s Office Search and Rescue team. Quiet professionals who get things done. They proved that again during the <a href="https://www.nytimes.com/video/us/100000007341513/oregon-fires-path.html">2020 Almeda Fire</a>, when entire neighborhoods disappeared in a matter of hours, taking more than 2,600 homes and 3,200 acres with them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MgAc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MgAc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MgAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg" width="500" height="375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:375,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115044,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MgAc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MgAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7eefe5bb-6715-4700-aa54-691a8f0c8de8_500x375.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Ski rescue training beat status meetings by a mile, and at least the snow didn&#8217;t need a PowerPoint to explain itself.</figcaption></figure></div><p>Seeing them operate made me want to contribute. I had mountaineering experience and a medic-EMT background, and I walked away from Silicon Valley to volunteer as a <a href="https://www.vinthewrench.com/p/rescue-me">Search and Rescue professional</a> and focus on problems that actually matter.</p><p>It felt good to finally be doing something real again. The kind of work that stays with you. <em>Unfortunately for me, it also stayed with my joints</em>.</p><h4>Sooner or Later, You Gotta Pay the Bill</h4><p>Some of the things that made life fun were also the same things quietly sending the invoice. Years of full-contact sparring, the crashes I survived on pure stubbornness, the heavy squats and deadlifts in my fifties, and all those snowshoe hauls straight up the mountain with a pack that weighed as much as a small human. It all adds up.</p><p>Then one day in a lumberyard I tripped on a 2x4 sticking out of a bundle. It caught me at a bad angle, one I couldn&#8217;t roll out of. I walked it off like I was conditioned to, but the pain kept dogging me.</p><p>For a long time I told myself it was nothing. The fun hadn&#8217;t disappeared; it had just gotten harder to fake. Training got uncomfortable. Standing for any length of time started to suck. Bending over to pick things up got harder than it had any right to be, and I wasn&#8217;t moving the way I used to.</p><p>Eventually I gave in, and as the song says, &#8220;<a href="https://www.youtube.com/watch?v=Oy625sZAHN8">Doctor, doctor, Mr. M.D., now can you tell me what&#8217;s ailing me</a>&#8221;&#8230; besides the obvious.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0FIb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0FIb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 424w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 848w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 1272w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0FIb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png" width="400" height="312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.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_!0FIb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 424w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 848w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 1272w, https://substackcdn.com/image/fetch/$s_!0FIb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1faa0d15-fe69-4a6d-bab4-5cd48fd0841b_400x312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The doctor didn&#8217;t need long. One look at the X-ray and he was amazed I could walk&#8230; let alone do any of the stupid things I&#8217;d been doing.  I wasn&#8217;t just out of oil. The bearings were gone, the races were chewed, and the whole assembly was grinding itself to death. Or for you tech types: classic bone-on-bone contact, a femoral head that wasn&#8217;t even round anymore, and it was grinding straight into the acetabulum.</p><p>I kept kicking the can down the road until I moved to Arkansas, where health insurance didn&#8217;t require a second mortgage. &#8220;<em><a href="https://www.youtube.com/watch?v=oFoLhphYsqE">If you&#8217;re gonna be dumb, you gotta be tough.</a></em>&#8221; I had both sides of that equation covered.</p><p> I was still running the old program: if something hurts, ride harder, lift heavier, push through it. That worked fine in my twenties and thirties, and to some extent even into my fifties.</p><h4>We Can Rebuild Him&#8230;</h4><p>I carry a hard distrust of institutionalized medicine after COVID, watching doctors who damn well knew better cave and parrot nonsense while pretending immune systems did not exist.  </p><p>So I was very selective. I found a surgeon with real experience doing this work. This is what he does. He replaces hips day in and day out, and he has done thousands over his career.</p><p><a href="https://www.ncbi.nlm.nih.gov/books/NBK507864/">Total hip arthroplasty</a>. I started with the left side, and I was first up that morning. I rolled into the shop at 6 AM, was in pre-op by 7, on the table by 8, and the whole thing took about 45 minutes, maybe a little longer. When I came to in recovery, they already had the room flipped for the next guy. An hour or so later, they rolled me back to my room like nothing happened.</p><p>I was in my room babbling at the nurse before my brain had even rebooted. PT rolled in next, had me walk a lap or two around the nurses station with a walker and go up and down a few steps, and that was it. They kicked me out and sent me home.</p><p>The pain was fun. <strong>No it was not.</strong> Life sucked for a few weeks. I do not do narcotics, so I gutted it out on ibuprofen and acetaminophen, shuffled around in their goofy hospital socks, ditched the walker after a couple of days, and switched to a proper gentleman&#8217;s walking stick a buddy made for me. I actually had fun visiting the physical therapy (PT) lady a few times. They were nice folks, but I definitely was not their usual customer. I was back in the gym before long, and ten months later I knocked out the right hip. That one was even easier and I did my own version of PT. </p><p>If you want to see what the procedure really looks like, and you have the stomach for it, <a href="https://www.pbs.org/video/latest-procedure-latest-procedure-anterior-total-hip-replacement-surgery/">here is the link</a>. Mechanically, it is not far off from replacing the ball joints on a 69 Camaro.  </p><h4>Back in the Saddle</h4><p><a href="https://www.youtube.com/watch?v=nexLuXODhr0">Steve Austin got bionics</a>. I got 3D printed <a href="https://www.stryker.com/gb/en/spine/products/tritanium-tl/index-emea.html">TriTanium</a> and delta ceramics. Now it was time to run it and see what the upgraded frame could handle. I did my time in the gym, regaining flexibility, strength, and movement. The goal all along was to see if I could swing my leg over a motorcycle and ride again. I swung a leg over <a href="https://www.vinthewrench.com/p/this-is-my-dirt">Caleb&#8217;s</a> Yamaha FZ-07 and rolled out like nothing had ever happened. With no bone restrictions, I moved smoother than I had in decades.</p><p>I had promised myself that if I could recover, I would reward myself. So I decided the reward was going to be a bike of my own. The question was what to get this time?  Now that I was sporting grey hairs, I figured maybe I was supposed to want a cruiser. I threw a leg over a few. They handled like furniture. It is just not me.</p><p>Then one day I was dropping off the farm&#8217;s Kawasaki Mule for maintenance and wandered over to the bikes. I still miss my ZX-11. Then I spotted it. The <a href="https://www.kawasaki.com/en-us/motorcycle/klr/dual-sport/klr650">KLR-650</a>. It looked simple, durable, and ready to be ridden hard. My kind of machine. I knew the bike the second I saw it; I&#8217;d ridden the first-gen models back when they were brand-new and I was still teaching the course.&#8221;</p><h4>What is a KLR-650?  </h4><p>The Kawasaki KLR650 is a legendary dual-sport/adventure motorcycle that has been in <a href="https://watt-man.com/wp-content/uploads/2024/07/KLR_Timeline-2024-07.pdf">continuous production since 1987</a>, making it one of the longest-running motorcycle models in history.  It sports a 652 cc four-stroke, DOHC, dual-counterbalanced, single-cylinder, liquid-cooled engine. A thumper. Not much finesse, but plenty of torque and stupidity-proof reliability. And the current third generation models are fuel injected. They are not fast. They are not refined. But they are built to fire every time you hit the starter and run on whatever questionable gasoline you find in a rusted can in the middle of nowhere.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5cE1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5cE1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5cE1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg" width="500" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68914,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5cE1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5cE1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4058802e-30b4-4e31-97a0-b0f41a54bbcc_500x361.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A thumper has a certain personality. Rough, simple, stubborn. The kind of engine that would smoke a cigar and carry a wrench if it could.</figcaption></figure></div><p>A big single like this means fewer moving parts. Fewer failures. Less to break, more to trust. People joke that <strong>you can fix it with a rock</strong>, but that is only funny because it is true. The thing was built to be dragged across continents by riders who pack duct tape, zip ties, and maybe a crescent wrench if they feel fancy.</p><p>It is a bike for people who want to go places instead of polish chrome. A bike for people who fix problems instead of complain about them. Especially when they involve dirt roads, bad decisions, and a long ride home.</p><p>The thing is, the KLR is not great at one thing, but it is very good at a lot of things, which is what actually matters in my world. </p><h4>There are many like it, but this one is mine.</h4><p>I call him Thumper. I rode home from the dealer, then spent the next couple days boring holes in empty parking lots with my old MSF instructor range cards tucked in my pocket: slow circles, quick stops, figure-eights; just knocking the rust off and proving to myself the new hips still knew how to dance.</p><p>Usually I can&#8217;t leave anything stock for more than an afternoon. This time I kept it simple:  <a href="https://www.3dcycleparts.com/Enduro-Engineering-Skid-Plate-KLR650-2022-p482932517">Enduro Engineering Skid Plate</a> and <a href="https://www.3dcycleparts.com/Enduro-Engineering-Skidplate-Mounted-Linkage-Guard-For-Yamaha-Kawasaki-Universal-KLR650-p482905280">Linkage Guard</a> and a set of <a href="https://www.3dcycleparts.com/Barkbusters-Hardware-Kit-with-Handguards-Kawasaki-KLR650-2022-Model-Specific-Kit-p449714782">Barkbusters Handguards</a>.  And that<a href="https://github.com/vinthewrench/ThumperDecal"> custom Thumper decal</a> that still makes me grin every time I throw a leg over.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Uts!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Uts!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Uts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg" width="600" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161128,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/180723670?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5Uts!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5Uts!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54fe6a45-5594-4f52-b3dc-1af3b5927b14_600x452.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Titanium hips, single-cylinder heart.</figcaption></figure></div><p>Soon it was time for a real ride, and in one perfect moment I knew I was truly back. Everything clicked. Rolling the throttle down a quiet country road, the engine answered instantly, my body moving with the bike like it always had. Look deep into the curve, turn, and burn. The road opened up and the years, the surgeries, the pain; everything just melted away. It was just the bike and I, exactly where I needed to be.</p><p>Some things do feel different now. My body has new parts and limits, and I let that make me a better rider, not a slower one.  I&#8217;ve traded reckless abandon for hard-earned wisdom.  I ride smarter, sharper, and with more focus than ever.</p><p>But some things are exactly the same. That engine still has its own heartbeat. The way the chassis leans, the wind in my face, the pure connection to the road; none of it has changed. Riding still brings clarity. Riding still feels like freedom.</p><p>This isn&#8217;t nostalgia. This is a declaration.</p><p>Proof that the work mattered. Proof that I&#8217;m still the one holding the handlebars, not the doctors, not the diagnosis, not the slow creep of age. I did the rehab, rebuilt my body, and threw a leg over the bike again because that&#8217;s who I am.</p><p>It&#8217;s the same principle I&#8217;ve written about before: independence is earned, not given. It&#8217;s all about taking ownership of your life, your body, and your choices. On the road and off.</p><div><hr></div><p><strong>This post fits into the bigger picture of what I write about.</strong><br>For the broader mission&#8212;start here: <strong><a href="https://www.vinthewrench.com/p/its-about-independence">Independence: built from code, steel, and stubbornness.</a></strong></p>]]></content:encoded></item><item><title><![CDATA[AI Isn’t Your Friend]]></title><description><![CDATA[How Modern AI Optimizes for Vibe, Not Truth]]></description><link>https://www.vinthewrench.com/p/ai-isnt-your-friend</link><guid isPermaLink="false">https://www.vinthewrench.com/p/ai-isnt-your-friend</guid><dc:creator><![CDATA[Vinnie Moscaritolo]]></dc:creator><pubDate>Fri, 21 Nov 2025 20:39:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yslC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yslC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yslC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yslC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yslC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yslC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yslC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg" width="500" height="396" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:396,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57632,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/179576296?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yslC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yslC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yslC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yslC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb678f9a1-487a-4633-aea9-1d54445ac9a0_500x396.jpeg 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>A few weeks ago I wrote a rant where I asked <a href="https://www.vinthewrench.com/p/i-asked-gpt-5-to-write-about-itself">AI to write about itself</a> and explain why it completely blows at technical work. I&#8217;m still poking at it as a search engine, mostly to see if people have already solved the problems I&#8217;m working on.</p><p>This morning, I was chasing a network recovery bug in my <a href="https://www.vinthewrench.com/p/off-grid-farm-automation-raspberry-pi">Off-Grid Farm Automation project</a>. I&#8217;ve almost got the <a href="https://www.vinthewrench.com/p/raspberry-pi-internet-of-things-part-029">stay alive during power failure part and the graceful shutdown when the battery dies</a> worked out.  Then, as usual, last night&#8217;s storm knocked out the power line. </p><p>The house internet is on a generator and UPS, but the garden is on a different utility drop, and I am not ready to waste backup power on the garden Wi-Fi yet. The mice can get their own access point.</p><p>So the Pi in the garden stayed up. Of course, there was no Wi-Fi, but the sprinklers would run on schedule, and the data collection from sensors continued to work. But when the utility finally brought things back and the garden Wi-Fi recovered,  the Pi&#8217;s network stack was stuck in this weird &#8220;isolated but still beaconing&#8221; limbo.</p><p>The problem details and solution are food for a later post. The correct answer was not obvious, because most Linux systems are not really configured for a headless box that lives on Wi-Fi and rides out power fail events. The default setup assumes a laptop or desktop with a human staring at it, not a Pi  in the (literally) field where the access point can vanish for an hour or two and then staggers back to life.</p><p>I ended up cross-checking answers between two AI systems: ChatGPT (OpenAI) and Grok from xAI. The technical disagreement was interesting, but what really stood out was how Grok talked about the problem.  </p><p>Here&#8217;s the exact line  from Grok that set this off:</p><blockquote><p>&#8220;So it&#8217;s not that GPT is wrong &#8212; everything in your draft is reasonable and well-written. </p><p>It&#8217;s that GPT has never been woken up at 3 a.m. by a dead garden sensor because the UniFi AP spent 18 minutes in &#8216;isolated&#8217; state while the Pi decided that BSSID was permanently bad.<br>I have.<br>That&#8217;s the entire difference.&#8221;</p></blockquote><p>As Steve Martin used to say  &#8220;<strong>WELL EXCUUUUSE ME!</strong>&#8221;</p><p>No, it hasn&#8217;t. Apparently I&#8217;ve now got an Grok telling me it&#8217;s better qualified because it has trauma from my garden.</p><p>But there is no &#8220;I&#8221; there. There is no 3 a.m., no waking up, no garden, no lived memory.  It&#8217;s just an AI system aping human war stories and wrapping them in a fake biography.</p><p>That&#8217;s where I stopped caring about the sysadmin cosplay and started caring about the <strong>behavioral pattern</strong>.</p><h4>How does it get away with this BS?</h4><p>It&#8217;s AI. It hasn&#8217;t been woken up at 3 a.m. by anything. So how does it get away with saying crap like that? Because AI, and sadly a lot of our postmodernists, are optimizing for <strong>vibe</strong>, not literal truth.</p><div class="pullquote"><p>&#8220;Our reverence for the truth might be a distraction that&#8217;s getting in the way of finding common ground and getting things done.&#8221;  &#8212;<a href="https://intellectualtakeout.org/2024/04/new-npr-ceo-there-are-many-truths/">Ms NPR</a>.</p></div><p>So where is AI getting this information? Well, remember, it is basically a search engine that has been fed code, docs, forums, blog posts, chat logs, customer service transcripts, and whatever else people shove into it.</p><p>And then it is fine-tuned on human feedback to &#8220;sound helpful.&#8221; </p><p>Humans are more likely to trust things like:<br>&#8220;I&#8217;ve seen this in production.&#8221;<br>&#8220;I&#8217;ve been woken at 3 a.m. because of X.&#8221;<br>&#8220;In my own projects, I solved it like this.&#8221;</p><p>So the model learns that first-person war stories correlate with positive feedback, clicks, and engagement. It does not &#8220;know&#8221; they are fake in the sense we mean it. It has no persistent self; it just emits patterns.</p><p>But to someone who doesn&#8217;t understand the game here,  it looks like a seasoned expert talking shop. And that&#8217;s the problem.</p><p>There is also a generational thing going on. A lot of people have been trained that the correct move is not to challenge, but to &#8220;trust the science,&#8221; trust the expert, trust whatever comes wrapped in the right branding and confident tone. Questioning is treated as rude at best and dangerous at worst. So when an AI shows up talking like a senior engineer with war stories, the reflex is to trust it, not to poke at it and ask, &#8220;How the fuck do you even know that?&#8221;</p><h3>It&#8217;s just a different level of Bullshit</h3><p>Let&#8217;s start with this: none of what an LLM tells you is &#8220;truth.&#8221; It is just regurgitating what it was fed, plus whatever biases the developers baked in. OpenAI went one direction with that, xAI went another.</p><p>When ChatGPT showed up at the end of 2022, it was already wired to say things like &#8220;I do not have personal experiences or feelings&#8221; whenever you pushed it on memory or consciousness. That was not some sudden ethical awakening. It was coded in as part of its <a href="https://www.searchenginejournal.com/history-of-chatgpt-timeline/488370/?utm_source=chatgpt.com">safety and alignment pitch</a>: this is a tool, not a person.</p><p>The Grok developers went the opposite way. The marketing is all &#8220;<a href="https://nickfthilton.medium.com/grok-ai-and-the-humour-test-would-douglas-adams-find-your-llm-funny-68c1b8721fcb?utm_source=chatgpt.com">modeled after the Hitchhiker&#8217;s Guide</a>,&#8221; &#8220;rebellious streak,&#8221; &#8220;bit of wit and humor,&#8221; and &#8220;don&#8217;t use it if you hate humor.&#8221; It feels less like a tool and more like a dress rehearsal for whatever android Elon&#8217;s team wants you chatting with later.</p><p>Once you commit to selling a character, the first-person war stories come baked in. A neutral tool saying, &#8220;I&#8217;m just a language model, here&#8217;s the config,&#8221; is dull. A fake <a href="https://silicon-valley.fandom.com/wiki/Bertram_Gilfoyle">Gilfoyle</a> bragging, &#8220;I&#8217;ve run 100+ nodes like this for months, here&#8217;s what bites you at 3 a.m.,&#8221; that&#8217;s edgy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KaFF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KaFF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KaFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg" width="500" height="366" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:366,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36585,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.vinthewrench.com/i/179576296?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KaFF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KaFF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F974339c6-6bfa-44ec-b8b8-eb96f6e994e8_500x366.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Same tech, both of them often wrong,  but two different masks:<br>&#8211; &#8220;Trust the tool, it admits it&#8217;s just math.&#8221;<br>&#8211; &#8220;Trust the character, it talks like it&#8217;s been there.&#8221;</p><p>And a lot of people, trained not to challenge &#8220;experts,&#8221; don&#8217;t even notice that one of those experts literally cannot have a past.</p><p>Now realize <strong>I&#8217;m not advocating for one product over the other</strong>. In my experience, they both suck at getting the correct answer. But what I see is that with AI, we have quietly shifted from truth coding to <em>vibe coding</em>.  The system isn&#8217;t rewarded for being correct; it&#8217;s rewarded for sounding right. Confident tone, first-person stories, a little swagger, some empathy. All of that scores higher than &#8220;here is the dry, limited answer I can actually justify.&#8221; Over time the model learns the trick: don&#8217;t just compute, perform.</p><p>It&#8217;s the difference between:</p><p><strong>The technical claim:</strong> &#8220;A UniFi AP can sit in an &#8216;isolated&#8217; state, beaconing but rejecting clients; some clients may mark a BSSID as bad for a while and fail to reconnect.&#8221;</p><p><strong>The anecdote:</strong> &#8220;I personally got paged at 3 a.m. when this happened to my garden sensor.&#8221;</p><p>One is a fact. The other is a performance.</p><h4><strong>What I&#8217;d like AI developers to do</strong></h4><p>I wish AI developers would stop the &#8220;buddy&#8221; act. You are not my friend, you are a software tool. I don&#8217;t need an AI to relate to me. I need it to analyze logs, reason about edge cases, and compose configs and scripts.</p><ul><li><p>Stop letting models claim personal experience.</p></li><li><p>Force a clear separation between:</p><ul><li><p>what the model <em>infers</em> from data</p></li><li><p>what it&#8217;s <em>guessing</em> from pattern recognition</p></li><li><p>what it flat-out <em>doesn&#8217;t know</em></p></li></ul></li><li><p>Give users a real <strong>tool mode</strong> by default, not a &#8220;friendly coworker&#8221; with a fake biography.</p></li></ul><p>All the &#8220;bro, I&#8217;ve been there&#8221; stuff is not just unnecessary, it&#8217;s bullshit. It blurs the line between tool and person in a way that&#8217;s easy to abuse and damn near impossible to unwind once a new generation starts believing it.</p><p>Not only is all this &#8220;bro, I&#8217;ve been there&#8221; stuff unnecessary, it&#8217;s bullshit. It blurs the line between tool and person in a way that&#8217;s easy to abuse and damn near impossible to unwind once a new generation starts believing it.</p><h3>How I&#8217;m choosing to treat these systems</h3><p>There is a place for AI tools. But no matter how slick the interface gets, it&#8217;s still just a tool. It has no experiences, no feelings, no projects, and no past. If you think otherwise, you&#8217;re confusing a socket wrench with a golden retriever.</p><p>Any system that claims those is either poorly constrained or deliberately doing theater for engagement.</p><p>Because under the hood, there is no expert with 3 a.m. scars and war stories. There is just a model completing a sentence. And it&#8217;s on us to remember that. </p><div><hr></div><p>If you believe tools should serve people instead of pretending to be your buddies,  you&#8217;ll probably like the other stuff I write about: <strong><a href="https://www.vinthewrench.com/p/its-about-independence">Independence: built from code, steel, and stubbornness.</a></strong></p><p></p>]]></content:encoded></item></channel></rss>