<?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[Gustave's Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://helium24.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!KG1O!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcbcd0d4-9ac8-4d10-b15b-f7a48eefa8eb_3072x3072.jpeg</url><title>Gustave&apos;s Substack</title><link>https://helium24.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 02 Jun 2026 04:52:01 GMT</lastBuildDate><atom:link href="https://helium24.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Gustave Granroth]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[helium24@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[helium24@substack.com]]></itunes:email><itunes:name><![CDATA[Gustave Granroth]]></itunes:name></itunes:owner><itunes:author><![CDATA[Gustave Granroth]]></itunes:author><googleplay:owner><![CDATA[helium24@substack.com]]></googleplay:owner><googleplay:email><![CDATA[helium24@substack.com]]></googleplay:email><googleplay:author><![CDATA[Gustave Granroth]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Photo Journey #1 ]]></title><description><![CDATA[A technology focus]]></description><link>https://helium24.substack.com/p/photo-journey-1</link><guid isPermaLink="false">https://helium24.substack.com/p/photo-journey-1</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Wed, 25 Feb 2026 05:53:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!oC2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Background</h2><p>Since receiving my first camera, I have taken roughly 15,000 photos. With the move towards digital cameras (and digitization of my film negatives), these take up around 100 GB<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> of storage space.</p><p>That's a lot of photos.</p><p>This is the first post about those photos, focusing on the technology used to capture them.</p><h2>The Film Era</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x6HP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x6HP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x6HP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg" width="1456" height="993" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:993,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4757874,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.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_!x6HP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x6HP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc948354a-8933-4964-a465-dcf03cc2942e_4464x3044.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">Rock Island State Park, WI. Circa 2002. Overexposed, even with software correction.</figcaption></figure></div><p>My first cameras were film cameras. At the time, digital cameras couldn't match the resolution of film. The camera and optics itself were only ordinary consumer quality, but with 35mm film those cameras took somewhat decent photos.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>I've digitized this photo at around 4000x3000 pixels, which is somewhat equivalent to a 12 MP (Megapixel) digital photo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bX3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bX3p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bX3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg" width="1456" height="937" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:937,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4077199,&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;:false,&quot;internalRedirect&quot;:&quot;https://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.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_!bX3p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bX3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57c90514-295d-497a-9147-c359bd474d6b_4708x3030.jpeg 1456w" sizes="100vw"></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 snowplow at the <a href="https://en.wikipedia.org/wiki/Mid_Continent_Railway_Museum">Mid Continent Railway Museum</a> in North Freedom, WI. Circa 2004. As a testament to my poor photo skills at the time I've selected this photo, even with the faint edges of my finger in the frame. Other photographs from this era are worse.</figcaption></figure></div><h2>The Transition Era</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F90j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F90j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!F90j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!F90j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!F90j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F90j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:535340,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.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_!F90j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!F90j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!F90j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!F90j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78ddd219-91e4-466f-8bcd-87722af95a7e_1600x1200.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 school canoing trip. From April 2006.</figcaption></figure></div><p>Around 2005, I got a Fujifilm FinePix A330. This ~1-3 MP<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> digital camera had equivalent optics to my film camera, but the pixel resolution was strictly worse than what 35mm film would capture.</p><blockquote><p>Film and digital cameras use very different principles to capture a scene into a photograph, resulting in different inaccuracies in the captured photographs.</p><p>However, as a rough rule of thumb, 35mm consumer-grade film (with equivalent lenses) can capture a scene about as good as a 12 MP digital camera. 20 MP digital cameras are roughly equivalent to professional film cameras, and around the level of detail that the human eye can perceive.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p></blockquote><p>Despite capturing photos that couldn't be magnified as much as film photos, I primarily used this camera until ~2011. I found the ability to view, delete, and retake digital photos quite helpful, resulting in me becoming a better photographer through rapid iteration. Having a digital camera was also much cheaper than having to periodically buy and develop film, even if the camera itself was more expensive upfront.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QIZR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QIZR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QIZR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:688074,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.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_!QIZR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!QIZR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e1fc23b-12bb-4b20-90ab-bb032048bf00_2016x1512.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 sibling soccer game. From April 2006. Notably, this camera was able to capture the action with only a slight blurring of the rightmost players.</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_!MUTZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MUTZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MUTZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:718388,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.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_!MUTZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MUTZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2951f69c-8264-46f7-8d29-573b81244b67_2016x1512.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">Badlands National Park, SD. From July 2006. As with most cheap (and old) digital cameras, landscape photos during the day were the easiest to take, resulting in the best photographs.</figcaption></figure></div><h2>The Digital Camera Era</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fpgm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fpgm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fpgm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1416921,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.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_!fpgm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!fpgm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310e9888-bb55-4346-8ac4-3143e8cd8fae_4320x3240.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">Preparing for Independence Day fireworks at Kirkland's Marina Park, WA. From July 2012.</figcaption></figure></div><p>After succumbing to dirt and water damage, I replaced the Fujifilm FinePix A330 with a GE A1456W in 2012. This ~13 MP camera was my first digital camera with decent resolution, and a sensor good enough to take quality twilight photographs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dA0K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dA0K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dA0K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1854883,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.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_!dA0K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dA0K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc3df9b6a-f39c-4efd-bd51-79116cc5eb91_4320x3240.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">Mt. Rainier, WA. From August 2012.</figcaption></figure></div><p>This was still clearly not a professional camera, but it took better photos than cell phones could at the time.</p><blockquote><p>For reference, the <a href="https://en.wikipedia.org/wiki/Nokia_Lumia_920">Nokia Lumina 920</a>, which I received in 2013, had worse optics and a smaller (~8 MP) resolution.</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_!y7BC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y7BC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 424w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 848w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y7BC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1321242,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.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_!y7BC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 424w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 848w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!y7BC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65617f57-1acf-42bc-bb21-1fd792f0b1b2_3240x4320.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">Easy Pass, WA. From October 2014. This was the hike where I learned that mirrorless cameras exist, and are quite portable.</figcaption></figure></div><p>I didn't keep the GE camera for very long.</p><blockquote><p>The GE camera wasn&#8217;t a bad camera, but it also wasn&#8217;t good enough to be competitive (GE no longer produces consumer digital cameras). It did have some features harder to find today, such as using rechargeable AA batteries instead of vendor-specific battery packs.</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_!jRmx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jRmx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jRmx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1555906,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.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_!jRmx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!jRmx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9ecab21-b2ba-4750-952b-d95b78117490_5456x3064.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 duck in the lake, viewed from a distance via an interchangeable telephoto lens. From June 2015.</figcaption></figure></div><p>In 2015, I upgraded to a mirrorless <a href="https://en.wikipedia.org/wiki/Sony_%CE%B15000">Sony &#945;5000</a>, with a much better resolution (~20 MP), bigger sensor (<a href="https://en.wikipedia.org/wiki/APS-C">APS-C</a>), and quality optical components. This was my first digital camera with interchangeable lenses, my first camera where it clearly outperformed my own eyesight ... and the last digital camera that I have bought.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rfq9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rfq9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rfq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1330763,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.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_!rfq9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rfq9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35bbda30-3f38-45fc-8ec0-31375f122695_5456x3064.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">This was also the first digital camera I had that could photograph stars. From June 2015.</figcaption></figure></div><p>After this point in time, continual improvements in camera technology over the next ten years were not as drastic as the prior ten years, at least not in standalone digital cameras.</p><h2>The Phone Era</h2><p>Over the past decade, the capabilities of standalone digital cameras have made their way into phones. With a <a href="https://www.amazon.com/Sony-SEL1855-mount-18-55mm-F3-5-5-6/dp/B01III61KS">18-55mm telephoto lens</a>, the Sony &#945;5000 is still superior at capturing nature at a distance<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>. However, mid-tier to flagship cellphones can now capture better<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> wide-angle photos than my dedicated digital camera.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oC2j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oC2j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 424w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 848w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 1272w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oC2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3239323,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.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_!oC2j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 424w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 848w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.heic 1272w, https://substackcdn.com/image/fetch/$s_!oC2j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26c3a40b-af81-4d8a-a228-2bd63156d47a_4032x3024.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><figcaption class="image-caption"><a href="https://www.wta.org/go-hiking/hikes/naches-peak-loop">Naches Peak Loop</a>, WA. From an iPhone SE (2020), taken October 2022. Slightly oversaturated, which is only really noticeable when compared to photos from other devices.</figcaption></figure></div><p>The most noticeable jump to me was from 2019 to 2023, when I transitioned from a <a href="https://en.wikipedia.org/wiki/Moto_X4">moto x4</a> (with a 12 MP sensor roughly equivalent to the GE A1456W) to an <a href="https://en.wikipedia.org/wiki/IPhone_SE_(2nd_generation)">iPhone SE (2020</a>) (with a better 12 MP sensor), to a <a href="https://m.gsmarena.com/google_pixel_7_pro-11908.php">Pixel 7 Pro</a> (with a ~50 MP<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> telephoto and main sensor).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DGRo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DGRo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DGRo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg" width="1456" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3738801,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.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_!DGRo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DGRo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe65779ff-798a-4d18-8235-e783e49d87d5_4080x3072.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">Breckenridge, CO. From the Pixel 7 Pro main camera, captured February 2024.</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_!UVNj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UVNj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UVNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg" width="1456" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2253589,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.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_!UVNj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UVNj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf3412de-6adf-4f6b-9386-5e98720dd546_4080x3072.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 same mountains in the prior image, but viewed with the Pixel 7 Pro telephoto camera. Although this is greater zoom than the main camera can provide, there is a subtle loss in color quality compared to the prior image.</figcaption></figure></div><blockquote><p>I'm somewhat clumsy when it comes to cell phones. Technically all three phones are still in working condition, but with minor functional damage.</p><p>Due to my clumsiness, I've replaced the Pixel with a <a href="https://m.gsmarena.com/oneplus_13r-13548.php">OnePlus 13R</a>. That phone has an equivalent main camera, but lacks the 5x optical telephoto camera that the Pixel had.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SnIq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SnIq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SnIq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6697668,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.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_!SnIq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!SnIq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26876b3e-ae27-4f64-b041-04eb74390990_4096x3072.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">Flowers at <a href="https://www.olbrich.org/visit">Olbrich Botanical Gardens</a>, WI. From June 2025. The OnePlus 13R oversaturates photos even more than iPhones do, resulting in the excessively vibrant colors in this image.</figcaption></figure></div></blockquote><h2>The Future Era</h2><p>Personally, I find it very valuable to still have a standalone digital camera. Although I don't use it as much as I used to, the digital camera allows for much more customization and control of the photography process.</p><p>When it is time to replace my &#945;5000, I expect to move towards something more specialized, in order that the replacement camera can do more things that modern cell phones cannot do. With that in mind, I do expect to continue to focus on cell phones with decent cameras, although hopefully my current phone will be more durable than the phones before 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_!cSCS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cSCS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cSCS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg" width="1456" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1681255,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.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_!cSCS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cSCS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b87a5c3-622d-4cd1-b586-af825600b2b9_4080x3072.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">Ocean Shores, WA. From July 2024 with the Pixel 7 Pro.</figcaption></figure></div><h3>AI Predictions</h3><p>It behooves me to, in a section about the future, discuss AI.</p><p>Generative AI technology is getting really good. This has started to be a problem, because generated (fake) and authentic (real) photographs are becoming harder to tell apart.</p><p>For example, here's the same rotary snowplow from the first section, but with Google's Nano Banana<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> image model prompted to &#8220;add snow&#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_!7oy4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7oy4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7oy4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg" width="1280" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:722926,&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://helium24.substack.com/i/188723043?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.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_!7oy4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7oy4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6066ae3d-a44e-4105-8cfc-4011e9db4ce7_1280x800.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">Google does add a small star as a watermark, but otherwise this looks convincingly real.</figcaption></figure></div><p>Excessive image manipulation has always been a problem (i.e., &#8220;photoshopping&#8221;), but AI tooling allows for large-scale, bulk changes that otherwise would be impractical.</p><p>I expect initiatives such as <a href="https://c2pa.org/">C2PA</a> to continue to roll out. These initiatives attempt to provide digital provenance, essentially proving that a photo is authentic. General modifications are still allowed, but either are tracked or break that provenance.</p><blockquote><p>However, only a <a href="https://c2paviewer.com/supported-devices">limited number</a> of flagship devices currently support this technology, and there is only currently niche support for viewing and verifying the digital signatures associated with these images.</p></blockquote><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Due to some quirks with my sorting methodology, roughly 5-10% of that storage is consumed by videos.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>The quality of my early film and digital photos was limited also by the photographer (me) and not only the technology. I've improved at taking photos over time, just as the technology has improved too.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Most of my photos with this camera are lower resolution, because I could fit more of them on the small <a href="https://en.wikipedia.org/wiki/XD-Picture_Card">xD storage card</a> I had.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Film resolution is determined by the size of the film, and the size of the light-sensitive grains on the film. With large quality film, film cameras can still capture photographs rivaling those of digital cameras. However, that film is expensive, along with equivalent quality optical hardware.</p><p>Standard consumer 35mm film is smaller than that quality film, with enough grain to provide a good balance of low-light performance and total resolution quality. </p><p>Digital camera resolution is determined by the size of the sensor and individual pixels on that sensor. Larger sensors allow for larger pixels at the same total MP, which reduces noise and improves low-light performance. Due to improvements in electronics, modern digital cameras can have a large enough sensor<em> with </em>enough<em> </em>pixels to perform as well as film.</p><p>From my own experience, a digital camera resolution of 12 MP is equivalent, if not better than the film cameras I have used. Further increases in resolution up to 20 MP provide for extra detail, beyond that which I can perceive without binoculars. Beyond 20 MP for digital cameras, increases in resolution have diminishing returns, generally require enhanced (expensive) optics to result in better photographs.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>The &#945;5000 is also still somewhat better at low-light photography. However, the last two cell phones that I&#8217;ve purchased are now beginning to adequately capture photos of stars.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>"Better&#8221; is very subjective. To be more precise, modern cell phones have better software, better (but smaller) sensors, and worse (also smaller) optics. Combined, I&#8217;ve been able to take photographs with cell phones that, in several scenarios, more closely approximate reality than my older digital camera.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>50 MP sounds impressive, but that extra resolution is generally used for improved noise reduction, better dynamic range, and image stabilization. Both the Pixel and OnePlus phones <em>can</em> take full 50 MP resolution photos, but by default capture 12 MP images.</p><p>From footnote 4, I generally opt for the lower resolution, because those other tangential benefits are worth it (resulting in better photos).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>FYI using Google Nano Banana is currently <em>free</em> (with limits) by using the <a href="https://support.google.com/messages/answer/16711976?hl=en">Remix feature</a> in the default messaging app.</p><p>For more intensive use, there are <a href="https://gemini.google/subscriptions/">paid plans</a>, but at a price point cheap enough where everyone can generate whatever they want, making generated AI content commonplace.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Microcontroller project design]]></title><description><![CDATA[Software, Electronics, and Hardware]]></description><link>https://helium24.substack.com/p/microcontroller-project-design</link><guid isPermaLink="false">https://helium24.substack.com/p/microcontroller-project-design</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Tue, 17 Feb 2026 19:49:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9If9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the spectrum of software that I write, microcontroller software is the most unique. It's still firmly a software project, yet also includes aspects of electronics design and mechanical construction.</p><p>Here is what I have learned over time from several<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> microcontroller projects.</p><h2>Physical limitations exist</h2><h3>Software</h3><p>With microcontrollers, developed software is operating closer to the edges of what that hardware can do. This is a natural environment for more lower level languages (predominantly the C/C++ programming languages<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>), because those languages are very efficient, and easy to manipulate memory bits and bytes in.</p><p>Efficiency is important because inexpensive microcontrollers have less storage space for compiled computer code (~32 kB), and run slowly (~16 MHz). More higher level languages exist (<a href="https://circuitpython.org/">CircuitPython</a>, <a href="https://en.wikipedia.org/wiki/Parallax_Propeller">Spin</a>), but those do tend to perform less well and also are somewhat obscure (making debugging harder).</p><h3>Electronics</h3><p>There also are hard limits about what the electrical hardware can do. There are only so many analog and digital outputs of a microcontroller, which can only power a relatively small amount of external circuitry.</p><blockquote><p>Electrical behavior can also be unforgiving. You can attempt to drive a stepper motor directly from a microcontroller, but run the risk of frying the microcontroller in the process. There's nothing preventing you from wiring that together though, or accidentally shorting power and ground, or mixing up input and output wiring, or &#8230;</p><p>For the basics of electronics, I recommend picking up an <a href="https://www.adafruit.com/product/3588?gad_source=1&amp;gad_campaignid=21079227318&amp;gbraid=0AAAAADx9JvQZxSV5XQPTT1y7xIKMQ5rKm&amp;gclid=CjwKCAiAwNDMBhBfEiwAd7ti1CZyf9yShFZzuBRJzXXKYBRPC0eBBZ7-Su8APW_JClWeSz9nd9tdLRoCC2kQAvD_BwE">electronics kit</a>. For a more detailed overview, I recommend &#8220;<a href="https://www.barnesandnoble.com/w/practical-electronics-for-inventors-fourth-edition-paul-scherz/1122324251">Practical Electronics for Inventors</a>&#8221; (<em>Paul Scherz &amp; Simon Monk</em>), which is a large (but very informative) book on the topic.</p></blockquote><h3>Mechanics</h3><p>Lastly, microcontroller projects also involve some amount of mechanical design work. This can be surprisingly difficult, especially if you want to make something kidproof(or)waterproof. Simply wiring up the project and coding it on a breadboard is helpful for prototyping, but generally not polished (or stable) enough for production 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_!9If9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9If9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9If9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9If9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9If9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9If9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6493811,&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://helium24.substack.com/i/184157126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.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_!9If9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9If9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9If9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9If9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F766c6762-00ef-4d46-ae5b-7aef03887647_3072x4096.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 home CO&#8322;, temperature, and pressure monitoring circuit, mechanically mounted on a wooden display board. From 2023.</figcaption></figure></div><p>I've had some success with 3D printing cases for more complex projects.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Az_q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Az_q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Az_q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg" width="1456" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2020220,&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://helium24.substack.com/i/184157126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.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_!Az_q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Az_q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bcecaf7-a516-467b-9e3f-2307e314964d_3122x2298.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 coil winder with potentiometer for speed control, display to indicate revolutions, and stepper motor driver, all on a custom PCB and 3D printed mounting board. From 2016.</figcaption></figure></div><h2>Prototype everything</h2><p>Getting everything right the first time is hard. Prototyping helps ensure that each piece works before you start combining them together.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XmR5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XmR5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XmR5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:969368,&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://helium24.substack.com/i/184157126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.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_!XmR5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XmR5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5748074b-9bbb-4614-8c84-d3a1b26ff523_2592x1456.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 breadboard wiring together an Arduino Nano V3 to an OLED display, testing only that display.</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_!cs5B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cs5B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cs5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5306892,&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://helium24.substack.com/i/184157126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.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_!cs5B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cs5B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49cff785-0943-4721-aa55-7ec600fa099d_4032x3024.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 more complex breadboard wiring together an Arduino Nano, CO&#8322; sensor, and an OLED display.</figcaption></figure></div><p>Prototyping also ensures that all the electronic wiring is correct before assembling that wiring into something more tangible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2TM9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2TM9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2TM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg" width="1456" height="1038" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1038,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1525522,&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://helium24.substack.com/i/184157126?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.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_!2TM9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2TM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d508ab0-3025-44d6-be3e-8d2fd332cb82_2216x1580.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 same CO&#8322; sensor and OLED display mounted on a <a href="https://en.wikipedia.org/wiki/Perfboard">perfboard</a> with an ambient temperature+pressure sensor too. Notably, the Arduino Nano has been replaced by a WiFi-capable ESP32 microcontroller, still on the breadboard.</figcaption></figure></div><p>Through prototyping, you may also find your project to be good enough during that process. For example, although I've ordered custom PCBs for some projects, more recently I've been able to skip the cost (and delay) involved by getting the prototypes to that &#8220;good enough&#8221; stage.</p><blockquote><p>To see the complexity and delay involved with custom PCB design, see <a href="https://helium24.net/projects/hardware/millboard">this article</a>.</p><p>Although no longer in fashion, I do prefer <a href="https://en.wikipedia.org/wiki/Wire_wrap">wire wrapping</a> for the intermediate stage after breadboards, but before going to PCBs.</p></blockquote><h2>Consider Cost vs Conveniences </h2><p>For each project, determine what the ultimate goals are for that project. Using an <a href="https://www.adafruit.com/category/17">Arduino</a> or component <a href="https://www.elechouse.com/elechouse/images/product/PN532_module_V3/PN532_%20Manual_V3.pdf">breakout board</a> will cost more than buying a microcontroller or component chip directly. However that extra cost provides a lot of convenience, which might be worthwhile depending on the project at hand.</p><blockquote><p>Arduino development includes its own <a href="https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE">development environment</a>, which simplifies programming the microcontroller, interfacing with external components, and is popular enough to have extensive online documentation.</p></blockquote><p>Buying pre-built components also lowers the skill floor for a microcontroller project, which is already considerable. </p><h2>Be prepared for inconsistencies </h2><p>Because this is a more esoteric programming area, be prepared to encounter issues. For example, I started developing for an Arduino Uno R4, not realizing that using I<sup>2</sup>C communication also uses analog pins 4 and 5.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>Generally, I expect documentation to be <em>mostly</em> right, <em>usually</em> quite technical, and provided libraries (if any) <em>often</em> arcane.</p><blockquote><p>I've recently encountered this with a PN532 NFC card reader breakout board. It works just fine if you read a card but do so directly, blocking anything else from happening <em>until</em> a card is ready.</p><p>Putting the device into <a href="https://forums.adafruit.com/viewtopic.php?t=40185">interrupt mode</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> starts entering the realm where documentation is sparse, and the library calls to do so don't fully operate as expected.</p></blockquote><h2>Have fun</h2><p>If approached correctly, microcontroller projects can be especially rewarding. I don't intend for &#8220;have fun&#8221; to be condescending, but rather to point out that there's an ocean of learning available within this space. Being able to properly explore that ocean helps if you enjoy the exploration and learning process.</p><p>I've found microcontroller projects to be interesting specifically because there is no lack of exploration possibilities, along with there being a wide variety of potential projects one can do with them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>For an example of my more recent projects (those from the last 5 years), see <a href="https://github.com/GuMiner/microcontroller-experiments">this link</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I expect C/C++ to remain the predominant microcontroller programming language, but <a href="https://github.com/avr-rust/ruduino">Rust development</a> for microcontrollers is starting to become more common.</p><p>However Rust is a substantially more complex software language than C, so while it may replace lots of C++ code, I don't expect Rust to become the future language for all microcontroller development.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>This is <a href="https://docs.arduino.cc/tutorials/uno-r4-minima/cheat-sheet/#i2c">documented</a>, but not particularly clearly. It's also inconsistent with other Arduino boards, which don't have those analog and digital pins as shared.</p><p>More problematically is that to better accommodate this sharing, the I<sup>2</sup>C pull-up resistors were <a href="https://forum.arduino.cc/t/i2c-sensor-working-on-uno-r3-not-r4-wifi/1180450/7">removed in the UNO R4</a> compared to the UNO R3. That removal makes using I<sup>2</sup>C communication harder than &#8220;plug the two wires of a component into the Arduino&#8221;, which starts to defeat the purpose (convenience) of buying an Arduino in the first place.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>If setup properly, interrupts allow for the PN532 module to signal to the Arduino that a card is present, interrupting normal processing of the code on that Arduino.</p><p>The Arduino Nano V3 has two pins (D2 and D3) that can be configured to detect signal changes via <code>attachInterrupt()</code> (<a href="https://docs.arduino.cc/language-reference/en/functions/external-interrupts/attachInterrupt/">link</a>).</p></div></div>]]></content:encoded></item><item><title><![CDATA[Antenna Simulation with OpenEMS]]></title><description><![CDATA[For better OTA (over-the-air) TV reception]]></description><link>https://helium24.substack.com/p/antenna-simulation-with-openems</link><guid isPermaLink="false">https://helium24.substack.com/p/antenna-simulation-with-openems</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Sun, 08 Feb 2026 23:34:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HrAh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Problem</h2><p>Due to where I currently live, I'm far away from the main TV broadcasters, with the geology of the area (that is, hills) interfering with TV reception.</p><p>I wanted to improve the channels my TV could receive. Although I don't frequently watch these channels, I find it useful to have access to all the major networks<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> from time-to-time<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, without relying on the Internet.</p><h2>Existing Solutions</h2><p>The default antennas built into TVs I've had were bad enough to be ignorable.</p><p>Adding an indoor TV antenna did help, but reception was still very hit or miss, with only some channels/networks coming through.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f29V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f29V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 424w, https://substackcdn.com/image/fetch/$s_!f29V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 848w, https://substackcdn.com/image/fetch/$s_!f29V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!f29V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f29V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg" width="1264" height="1246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1246,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:260431,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.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_!f29V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 424w, https://substackcdn.com/image/fetch/$s_!f29V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 848w, https://substackcdn.com/image/fetch/$s_!f29V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!f29V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd2ec243d-1eca-4064-846b-875912433b0f_1264x1246.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">A sample of the indoor RCA antenna I tried. <a href="https://target.scene7.com/is/image/Target/GUEST_21890a47-98b5-45bd-b179-28eb07d265f5">Source</a></figcaption></figure></div><p>Instead of buying a more expensive outdoor antenna indoors, I decided to try and make my own antenna instead.</p><h2>Designing antennas</h2><p>Before making an antenna, how does one design one?</p><h3>Concepts</h3><p>A full discussion on the electromagnetics of antennas is well beyond the scope of this article. To summarize heavily, antennas capture the energy of electromagnetic waves traveling through space.</p><p>Measuring how well antennas work is based on how antennas match to the frequency of those waves, and the circuitry that can detect those waves.</p><h4>Frequency</h4><p>Antennas are designed to work for a given frequency range. For the TV stations I want to receive, I need an antenna that works for a wideband range of 186 MHz to 572 MHz.</p><blockquote><p>MHz == megahertz, aka 1,000,000 cycles/second.</p></blockquote><p>This antenna also needs to capture electromagnetic energy from the direction that the TV stations are. For where I am, that means I need the antenna to selectively receive 186-572 MHz frequencies within a 30&#176; angle. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HrAh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HrAh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HrAh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101166,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.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_!HrAh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!HrAh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d03f9a3-8dc3-4982-a3eb-84f277b2e8b1_800x800.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><h4>Circuitry </h4><p>For a TV antenna I want to target an impedance of 300 &#937; across the frequency range. Impedance matching ensures that the energy the antenna captures is transmitted to the TV, and not reflected back to the antenna.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V3E0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V3E0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 424w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 848w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 1272w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V3E0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png" width="848" height="633" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:633,&quot;width&quot;:848,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84423,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.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_!V3E0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 424w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 848w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.png 1272w, https://substackcdn.com/image/fetch/$s_!V3E0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd764b4b6-1de0-4879-a553-f0a2d77e3eb0_848x633.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>This is usually represented in VSWR (voltage standing wave ratio), where values of 2 or lower translate to ~90% of the captured energy going from the antenna to the TV.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0ZWz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0ZWz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0ZWz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png" width="640" height="480" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:480,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27462,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.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_!0ZWz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 424w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 848w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.png 1272w, https://substackcdn.com/image/fetch/$s_!0ZWz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a8591bb-1f36-49dd-8d9f-52e2525aff97_640x480.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>Interestingly, the VSWR chart and far-field chart are all that is needed to evaluate whether an antenna is good or not.</p><blockquote><p>But wait, isn't bigger better?</p><p>A TV antenna is capturing a minuscule amount of the electromagnetic energy transmitted from the TV station. A bigger antenna can capture more energy, but simply making an antenna bigger will make it <em>worse</em> if not designed properly.</p><p>Because the minimum decent size for a TV antenna at 186 MHz is ~0.806 meters<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, anything larger starts to become impractical.</p><p>These charts (and the analysis I&#8217;m doing) also ignores polarization (i.e, how the electromagnetic field is oriented) altogether. This is acceptable because DTV signals are usually horizontally polarized, and the antenna designs are also horizontal. As such, the 2D far-field chart is good enough, without me needing to take into account the polarization of the received electromagnetic field or generate 3D plots of the antenna reception performance.</p></blockquote><h3>Design</h3><p>I'm not starting completely from scratch -- there are several different wideband antenna designs already well known and documented.</p><p>The two designs I have investigated are spiral antennas (which are wideband, but bi-directional) and log-periodic antennas (which are wideband and omnidirectional, but harder to build).</p><h2>Simulating Antennas</h2><h4>4nec2</h4><p>Previously, I have used <a href="https://www.qsl.net/4nec2/">4nec2</a> to simulate a few different TV antenna designs. 4nec2 is a quite powerful and free to use<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> <a href="https://www.nic.funet.fi/pub/ham/antenna/NEC/swindex.html">NEC-2 </a>implementation, with a heavy focus towards amateur radio antenna design.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DCBq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DCBq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DCBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg" width="2569" height="2862" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2862,&quot;width&quot;:2569,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2329379,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff242588a-0008-46da-ac0f-bcc2e9d9f3b2_4032x3024.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_!DCBq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DCBq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F747f06a1-cbdf-47e4-83b4-1d74019806bb_2569x2862.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 spiral, wideband TV antenna I simulated with 4nec2 and built, December 2018</figcaption></figure></div><p>NEC-2 is <a href="https://en.wikipedia.org/wiki/Numerical_Electromagnetics_Code">quite dated</a> (having been originally designed for mainframe computers), which makes the format for designing a simulation quite more convoluted<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>. In addition, this is also a wire-based simulator, which is quite efficient, but makes representing antenna dishes or other solid surfaces more difficult.</p><p>However, I have managed to successfully use this program to simulate a <a href="https://en.wikipedia.org/wiki/Spiral_antenna">spiral</a> antenna (shown above), and a <a href="https://en.wikipedia.org/wiki/Log-periodic_antenna'">log-periodic</a> antenna (below). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Iui!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Iui!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Iui!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg" width="2407" height="3928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3928,&quot;width&quot;:2407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3420344,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1555639b-68d3-440f-95ba-3b55f7f9ab07_3024x4032.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_!4Iui!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4Iui!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1314193-fed5-4802-b452-336ac0711e8a_2407x3928.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 log-periodic antenna I also simulated with 4nec2 and built, July 2022.</figcaption></figure></div><h4>OpenEMS</h4><p>In contrast, <a href="https://openems.readthedocs.io/en/latest/intro.html">openEMS</a> is a direct electromagnetic field solver, simulating electromagnetic behavior in a 3D grid. This is much more computationally intensive<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>, but also much more generic. As long as each grid square is small enough, any shape I like can be simulated.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FgCw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FgCw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 424w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 848w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 1272w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FgCw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png" width="1456" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:327011,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.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_!FgCw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 424w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 848w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.png 1272w, https://substackcdn.com/image/fetch/$s_!FgCw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1118e761-11b0-4055-8aa5-e5b931bfa6f1_2059x893.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 log-periodic antenna, in 3D grid-form (left) and the designed form (right). </figcaption></figure></div><blockquote><p>Note that the 3D grid form is more coarse, but still somewhat<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a>  the same shape.</p><p><em>The 3D grid-form is exported via </em><code>debug_pec</code><em> in </em><code>FDTD.Run(Sim_Path, debug_pec=True)</code><em>, and visualized with <a href="https://www.paraview.org/">ParaView</a>. The original 3D design is visualized with <a href="https://github.com/thliebig/AppCSXCAD">AppCSXCAD</a>, which ships with openEMS.</em></p></blockquote><p>I've recently started to use openEMS so I can improve upon my current antenna design and more programmatically simulate the designed antennas.</p><h3>Setup</h3><p>Install openEMS, and the Python extensions.</p><ul><li><p>openEMS: <a href="https://openems.readthedocs.io/en/latest/install/index.html">https://openems.readthedocs.io/en/latest/install/index.html</a></p></li><li><p>Python extensions: <a href="https://openems.readthedocs.io/en/latest/python/install.html">https://openems.readthedocs.io/en/latest/python/install.html</a></p></li></ul><p>Once complete, you should have a Python virtual environment with both the openEMS and CSXCAD packages installed.</p><blockquote><p><em>What is Python?</em></p><p><em>Python</em> is an modern computer language, useful for prototyping and projects of all sizes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><p><em>What is a Python virtual environment</em>?</p><p>A <em>Python virtual environment</em> allows you to install Python dependent packages to a folder, without installing them to the whole computer.</p><p>Virtual environments are generally recommended so that different projects with different (potentially conflicting) dependencies can coexist on the same computer.</p></blockquote><h3>Configure</h3><p>I had some difficulty with the installation, and had to manually set the install paths (Windows), and install + library paths (Linux)</p><h4>Windows</h4><pre><code>$Env:OPENEMS_INSTALL_PATH="C:\Users\%USERNAME%\Desktop\Programs\openEMS-v36"
$Env:CSXCAD_INSTALL_PATH="C:\Users\%USERNAME%\Desktop\Programs\openEMS-v36"</code></pre><h4>Linux</h4><pre><code>export OPENEMS_INSTALL_PATH="$HOME/opt/openEMS"
export CSXCAD_INSTALL_PATH="$HOME/opt/openEMS"
export LD_LIBRARY_PATH="/usr/local/lib:$HOME/opt/openEMS/lib/"</code></pre><p>Assuming the openEMS Python packages are accessible, the Python library import step for both systems then should work:</p><pre><code>from CSXCAD import CSXCAD
from openEMS import openEMS</code></pre><h3>Verify</h3><p>Before simulating something more complicated, I simulated a much simpler dipole antenna instead.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!19dV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!19dV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 424w, https://substackcdn.com/image/fetch/$s_!19dV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 848w, https://substackcdn.com/image/fetch/$s_!19dV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 1272w, https://substackcdn.com/image/fetch/$s_!19dV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!19dV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png" width="1075" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:1075,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97339,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.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_!19dV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 424w, https://substackcdn.com/image/fetch/$s_!19dV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 848w, https://substackcdn.com/image/fetch/$s_!19dV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.png 1272w, https://substackcdn.com/image/fetch/$s_!19dV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca39bc04-55a5-4e3b-8c1c-52fde873fc9e_1075x402.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 dipole antenna is two equal-length wires connected to the receiver in the center. The frequency that this antenna works well at is based on the total wire length.</figcaption></figure></div><p>Despite the simplicity of the antenna, simulating this antenna requires setting up all the parameters for a much more complicated antenna. If setup successfully, simulating this antenna should match the theoretical expectations for 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_!O6kR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O6kR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 424w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 848w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 1272w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O6kR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png" width="867" height="632" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:632,&quot;width&quot;:867,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69831,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.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_!O6kR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 424w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 848w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.png 1272w, https://substackcdn.com/image/fetch/$s_!O6kR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff62d893a-d337-45ce-85f8-67a17c5a5556_867x632.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">As expected, a dipole antenna has a simple impedance, with a maximum based on the antenna length.</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_!dxI5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dxI5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dxI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82269,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.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_!dxI5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!dxI5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8cb0423-0175-4c19-b24d-30c108aa3031_800x800.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">As expected, a dipole antenna radiates perpendicular to the antenna. Of note, this is a relative percentage chart, and <em>not</em> a dB (decibel aka logarithmic) chart that is more commonly used. </figcaption></figure></div><h2>Simulation Details</h2><h3>Structure</h3><p>With the Python openEMS extension, the entire simulation (antenna, space the antenna is in, simulation structure, result processing, etc) is defined in Python. Using Python is convenient for me, because it allows for quick debugging and iteration, along with being a computer language I am familiar with.</p><p>The remainder of this article goes over the test log-periodic simulation Python code, in detail. </p><h3>Details</h3><p>First, I add in Python imports, specifically openEMS, CSXCAD (geometry), numpy (math), matplotlib (charting), and built-in Python packages.</p><pre><code>import os, tempfile

import matplotlib.pyplot as plt
import numpy as np

from CSXCAD import CSXCAD

from openEMS import openEMS
from openEMS.physical_constants import *</code></pre><p>Set the unit to millimeters, define the center frequency, and the width. The total frequency range is <code>f0-fc</code> to <code>f0+fc</code></p><pre><code>unit = 1e-3

# AKA, 168 MHz to 608 MHz, Hi-V to UHF
f0 = 397.0e6
lambda0 = round(C0/f0/unit)  # Wavelength in mm
fc = 211e6</code></pre><p>Define the simulation size. It has to be at least as big as the largest wavelength<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a>, but also decently far enough away from the antenna structure itself (wavelength/4 <a href="https://github.com/thliebig/openEMS-Project/discussions/413">from here</a>).</p><p><code>SetGaussExcite </code>uses the previous frequency information to define the wideband simulation.</p><p>Lastly, this also sets up how the wall edges are simulated, where I&#8217;ve gone for accuracy over speed. </p><pre><code># This is a rather wide frequency range, so go overkill on box size
SimBox = np.array([2.0, 2.0, 8.0])*2.0*lambda0

FDTD = openEMS()
FDTD.SetGaussExcite(f0, fc)

# MUR is faster, but do PML_* everywhere for better accuracy
FDTD.SetBoundaryCond( ['PML_8', 'PML_8', 'PML_8', 'PML_8', 'PML_8', 'PML_8'] )</code></pre><p>Create a geometry instance and associate it with the simulation. Also compute the minimum cell size for geometry, which is also based on wavelength <a href="https://wiki.openems.de/index.php/FDTD_Mesh.html">as specified here</a>.</p><pre><code>CSX = CSXCAD.ContinuousStructure()
FDTD.SetCSX(CSX)
mesh = CSX.GetGrid()
mesh.SetDeltaUnit(unit)

max_res = np.floor(C0 / (f0+fc) / unit / 20)

# Go even smaller to properly account for the small dipoles and wires in my antenna, which are smaller than they really should be, but it is what I have already physically built.
dipole_min_res = 3.2  # Radius, mm
supporting_wire_min_res = 0.4 # Also radius, in mm</code></pre><p>With all that information, define the 3D grid structure by specifying where (in x, y, and z) there need to be lines that break apart cells into smaller cells.</p><p>Specifically, this logic ensures that the spiral connecting wire is at a very high resolution, the dipoles are at a medium resolution, and outer air is at a low resolution.</p><pre><code>center_feed_radius = 10

# These are both precomputed in a later step and then stored here
antenna_z_range = 592
antenna_y_range = 540

mesh.AddLine('x', [-center_feed_radius, center_feed_radius])
mesh.AddLine('y', [-center_feed_radius, center_feed_radius])
mesh.AddLine('z', [-antenna_z_range, antenna_z_range])

mesh.SmoothMeshLines('x', supporting_wire_min_res)
mesh.SmoothMeshLines('y', supporting_wire_min_res)
mesh.SmoothMeshLines('z', supporting_wire_min_res)

mesh.AddLine('x', [-antenna_y_range, antenna_y_range])
mesh.AddLine('y', [-center_feed_radius , center_feed_radius])

mesh.SmoothMeshLines('x', dipole_min_res)

mesh.AddLine('x', [-SimBox[0]/2,  SimBox[0]/2])
mesh.AddLine('y', [-SimBox[0]/2,  SimBox[0]/2])
mesh.AddLine('z', [-SimBox[0]/2,  SimBox[0]/2])

mesh.SmoothMeshLines('x', max_res)
mesh.SmoothMeshLines('y', max_res)
mesh.SmoothMeshLines('z', max_res)</code></pre><p>Using the CSXCAD geometry system, define the antenna dipoles and connecting wire</p><pre><code>antenna_metal = CSX.AddMetal('antenna')
wire_lengths = [
    53, # Smallest, 1
    61,
    79,
    97,
    121,
    150,
    180,
    230,
    280,
    335,
    413  # Largest, 11
]

wire_separation = [
    41, # From 1-2
    50,
    59,
    75,
    91,
    111,
    135,
    179,
    203,
    238
]

antenna_x = []
antenna_y = []
antenna_z = []

# Center the antenna. This is *important*, because proper far-field analysis assumes the antenna structure is centered.
current_pos_z = sum(wire_separation) / 2.0
start_pos_z = current_pos_z

HELIX_HALF_TURNS = 12 # To represent a helix, use 24 line segments for each 360 degree circle.
for i, wire_length in enumerate(wire_lengths):
    # Symmetrical dipoles
    antenna_metal.AddWire(np.array([
        np.array([center_feed_radius, center_feed_radius + wire_length]),
        np.array([0.0, 0.0]),
        np.array([current_pos_z, current_pos_z])]), dipole_min_res)
    antenna_metal.AddWire(np.array([
        np.array([-center_feed_radius, -(center_feed_radius + wire_length)]),
        np.array([0.0, 0.0]),
        np.array([current_pos_z, current_pos_z])]), dipole_min_res)

    if i &lt; len(wire_separation):
        # Create the curved pieces to the next part of the dipole
        helix_points = np.linspace(0, np.pi, HELIX_HALF_TURNS)
        x_points = center_feed_radius*np.cos(helix_points)*1.05
        y_points = center_feed_radius*np.sin(helix_points)*1.05
        z_points = current_pos_z - (helix_points/np.pi)*(wire_separation[i])
        antenna_metal.AddWire(np.array([x_points, y_points, z_points]), supporting_wire_min_res)

        # and do the same thing for the offset dipole too
        helix_points = np.linspace(np.pi, 2*np.pi, HELIX_HALF_TURNS)
        x_points = center_feed_radius*np.cos(helix_points)*1.05
        y_points = center_feed_radius*np.sin(helix_points)*1.05
        z_points = current_pos_z - ((helix_points - np.pi)/np.pi)*(wire_separation[i])
        antenna_metal.AddWire(np.array([x_points, y_points, z_points]), supporting_wire_min_res)

        # Move up
        current_pos_z = current_pos_z - wire_separation[i]</code></pre><p>Define a feed port, which is where the antenna signal is received. openEMS simulates transmitting from our antenna by powering the feed port, which (because antennas are symmetrical systems) then simulates how well the antenna does at <em>receiving</em> the same signal.</p><p>This feed port partially overlaps the antenna structure, which ensures that it connects to it. It has a higher &#8220;priority&#8221; so that the feed port is prioritized and replaces the antenna, instead of the antenna replacing the feed port.</p><pre><code>offset = 12
port_spacing = center_feed_radius + offset
start = [-port_spacing, -1, start_pos_z - 5]
stop  = [port_spacing, 1, start_pos_z + 5]

feed_resistance = 300  # ohms
port = FDTD.AddLumpedPort(1, feed_resistance, start, stop, 'x', 1.0, priority=5)</code></pre><p>Lastly, ensure that the near field information is captured, save the antenna structure, and run the simulation.</p><pre><code>nf2ff = FDTD.CreateNF2FFBox(opt_resolution=[lambda0/15]*3)

# For debugging purposes, write the antenna to a file
CSX_file = os.path.join(Sim_Path, 'log-periodic.xml')
CSX.Write2XML(CSX_file)

FDTD.Run(Sim_Path)</code></pre><p>Once the simulation completes, graph it! This section uses the port information to graph the VSWR:</p><pre><code># Use 501 points for the frequency range
freq = np.linspace(f0 - fc, f0 + fc, 501)
port.CalcPort(Sim_Path, freq)

Zin = port.uf_tot / port.if_tot
s11 = port.uf_ref / port.uf_inc

vwsr = (1 + np.abs(s11)) / (1 - np.abs(s11))

## Plot VSWR, saving the plot to a file too
plt.figure()
plt.plot(freq/1e6, vwsr, 'k-', linewidth=2)
plt.grid()
plt.title('VSWR')
plt.xlabel('frequency (MHz)')
plt.ylabel('VSWR')
plt.savefig(os.path.join(Sim_Path, 'vwsr.png'))</code></pre><p>And lastly, compute the <a href="https://wiki.openems.de/index.php/NF2FF.html">far-field antenna information</a> and graph the antenna directivity over multiple frequencies.</p><pre><code>theta = np.arange(0.,360.,2.)
phi = np.array([0])

# Define a few frequencies of interest
nf2ff_res = nf2ff.CalcNF2FF(Sim_Path, [f0 + fc/2, f0 - fc/2, f0, f0-fc/4, f0+fc/4], theta, phi)

plt.figure(figsize=(8, 8))
ax = plt.subplot(111, projection='polar')
theta_rad = np.deg2rad(theta)
for freq_idx in range(len(nf2ff_res.freq)):
    powerPlot = nf2ff_res.E_norm[freq_idx]/np.max(nf2ff_res.E_norm[freq_idx])
    ax.plot(theta_rad, powerPlot[:,phi==0], linewidth=2, label=f'$|E|$ {nf2ff_res.freq[freq_idx]/1e6}')

ax.set_title('Far field patterns')
ax.legend()
ax.grid(True)
plt.savefig(os.path.join(Sim_Path, 'polar-pattern.png'))

# Show all the plots generated so far
plt.show()</code></pre><p>And that&#8217;s it! I&#8217;ve personally reordered this structure somewhat (because once the simulation is complete, you can skip the <code>FDTD.Run(&#8230;)</code> step to read the prior results and perform different charting+analysis). However, this is essentially the steps I&#8217;ve used to simulate the log-periodic antenna I have in openEMS, and what I plan to use for future simulations.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>(alphabetized) ABC, CBS, FOX, NBC, PBS</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>These times include major events, such as elections, where different networks have different projections. Additionally, if friends or family want to visit and watch football, usually one of the major networks will cover the game.</p><blockquote><p>Because only <strong>one</strong> of the major networks will usually cover NFL games, that increases the importance to me of ensuring I can receive <strong>all</strong> major networks.</p><p>A great current example is the 2026 winter Olympics, which are only broadcast this year on NBC.</p></blockquote></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\frac{c (speed.of.light)}{186 MHz \\star 2 (half.dipole)}=0.806 meters&quot;,&quot;id&quot;:&quot;UVZJSLHKAN&quot;}" data-component-name="LatexBlockToDOM"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Free to use, but closed-source. 4nec2 is also Windows-only, although it can run on Linux with Wine.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>This is a sample NEC file for 4nec2 that I redid in 2022. I tried to use variables to make it somewhat readable, but the file structure and contents are still quite arcane.</p><pre><code>CM Log Periodic UHF/VHF antenna design
CM Gustave Granroth 6-26-2022
CE
SY MinFreq = 176
SY MaxFreq = 618
SY FreqSteps = (MaxFreq - MinFreq) / 10
SY ZPos = 0
SY WireSegments = 7
SY FeederSegments = 3
SY TubeRadius = 0.003175 'Copper tubing
SY WireRadius = 0.000511 'Magnet wire
SY HalfSpacing = 0.01 'Configurable properties start here
SY HL9 = 0.038 '= 0.426, long boom
SY HL8 = 0.038
SY HL7 = 0.038
SY HL6 = 0.038
SY HL5 = 0.038
SY HL4 = 0.038
SY HL3 = 0.038
SY HL2 = 0.038 
SY HL1 = 0.038
SY HL0 = 0.121 'Say ten booms total, this is the short boom
SY SP0 = 0.1
SY SP1 = 0.1
SY SP2 = 0.1
SY SP3 = 0.1
SY SP4 = 0.1
SY SP5 = 0.1
SY SP6 = 0.1
SY SP7 = 0.1
SY SP8 = 0.1
SY SP9 = 0.1
GW&#9;1&#9;3&#9;&#9;&#9;&#9;0&#9;&#9;-HalfSpacing&#9;ZPos&#9;&#9;0&#9;&#9;HalfSpacing&#9;&#9;ZPos&#9;WireRadius&#9;'Driver
GW&#9;2&#9;WireSegments&#9;SP0&#9;&#9;-HL0&#9;&#9;&#9;ZPos&#9;&#9;SP0&#9;&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom1,L
GW&#9;3&#9;WireSegments&#9;SP0&#9;&#9;HalfSpacing&#9;&#9;ZPos&#9;&#9;SP0&#9;&#9;HL0&#9;&#9;&#9;&#9;ZPos&#9;TubeRadius&#9;'Boom1,R
GW&#9;4&#9;WireSegments&#9;SP0+SP1&#9;-(HL0+HL1)&#9;ZPos&#9;&#9;&#9;SP0+SP1&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom2,L
GW&#9;5&#9;WireSegments&#9;SP0+SP1&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1&#9;HL0+HL1&#9;ZPos&#9;TubeRadius&#9;'Boom2,R
GW&#9;6&#9;WireSegments&#9;SP0+SP1+SP2&#9;-(HL0+HL1+HL2)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom3,L
GW&#9;7&#9;WireSegments&#9;SP0+SP1+SP2&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2&#9;HL0+HL1+HL2&#9;ZPos&#9;TubeRadius&#9;'Boom3,R
GW&#9;8&#9;WireSegments&#9;SP0+SP1+SP2+SP3&#9;-(HL0+HL1+HL2+HL3)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom4,L
GW&#9;9&#9;WireSegments&#9;SP0+SP1+SP2+SP3&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3&#9;HL0+HL1+HL2+HL3&#9;ZPos&#9;TubeRadius&#9;'Boom4,R
GW&#9;10&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4&#9;-(HL0+HL1+HL2+HL3+HL4)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom5,L
GW&#9;11&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4&#9;HL0+HL1+HL2+HL3+HL4&#9;ZPos&#9;TubeRadius&#9;'Boom5,R
GW&#9;12&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;-(HL0+HL1+HL2+HL3+HL4+HL5)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom6,L
GW&#9;13&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;HL0+HL1+HL2+HL3+HL4+HL5&#9;ZPos&#9;TubeRadius&#9;'Boom6,R
GW&#9;14&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;-(HL0+HL1+HL2+HL3+HL4+HL5+HL6)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom7,L
GW&#9;15&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;HL0+HL1+HL2+HL3+HL4+HL5+HL6&#9;ZPos&#9;TubeRadius&#9;'Boom7,R
GW&#9;16&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;-(HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom8,L
GW&#9;17&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7&#9;ZPos&#9;TubeRadius&#9;'Boom8,R
GW&#9;18&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;-(HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7+HL8)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom9,L
GW&#9;19&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7+HL8&#9;ZPos&#9;TubeRadius&#9;'Boom9,R
GW&#9;20&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;-(HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7+HL8+HL9)&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;-HalfSpacing&#9;ZPos&#9;TubeRadius&#9;'Boom10,L
GW&#9;21&#9;WireSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;HL0+HL1+HL2+HL3+HL4+HL5+HL6+HL7+HL8+HL9&#9;ZPos&#9;TubeRadius&#9;'Boom10,R
GW&#9;22&#9;FeederSegments&#9;SP0&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder2,L
GW&#9;23&#9;FeederSegments&#9;SP0&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder2,R
GW&#9;24&#9;FeederSegments&#9;SP0+SP1&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder3,L
GW&#9;25&#9;FeederSegments&#9;SP0+SP1&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder3,R
GW&#9;26&#9;FeederSegments&#9;SP0+SP1+SP2&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder4,L
GW&#9;27&#9;FeederSegments&#9;SP0+SP1+SP2&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder4,R
GW&#9;28&#9;FeederSegments&#9;SP0+SP1+SP2+SP3&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder5,L
GW&#9;29&#9;FeederSegments&#9;SP0+SP1+SP2+SP3&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder5,R
GW&#9;30&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder6,L
GW&#9;31&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder6,R
GW&#9;32&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder7,L
GW&#9;33&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder7,R
GW&#9;34&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder8,L
GW&#9;35&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder8,R
GW&#9;36&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder9,L
GW&#9;37&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder9,R
GW&#9;38&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder10,L
GW&#9;39&#9;FeederSegments&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0+SP1+SP2+SP3+SP4+SP5+SP6+SP7+SP8+SP9&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder10,R
GW&#9;40&#9;FeederSegments&#9;0&#9;-HalfSpacing&#9;ZPos&#9;&#9;&#9;SP0&#9;-HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder2,L
GW&#9;41&#9;FeederSegments&#9;0&#9;HalfSpacing&#9;ZPos&#9;&#9;&#9;&#9;SP0&#9;HalfSpacing&#9;ZPos&#9;WireRadius&#9;'Feeder2,R
GE&#9;0
GN&#9;-1
EK
EX&#9;0&#9;1&#9;2&#9;0&#9;1&#9;0&#9;0&#9;'First wire overall, with tag 1
FR&#9;0&#9;0&#9;0&#9;0&#9;566&#9;0
EN</code></pre></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Simulating the sample log-periodic antenna takes 8 minutes (AMD Ryzen AI Max+ 395) to 18 minutes (Intel Core i9-14900HX), with ~54 million total grid squares (cells). For comparison, simulations in 4nec2 with equivalent hardware complete in under a minute.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>A more precise 3D grid results in the following design view and 3D mesh view:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!25x_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!25x_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 424w, https://substackcdn.com/image/fetch/$s_!25x_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 848w, https://substackcdn.com/image/fetch/$s_!25x_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 1272w, https://substackcdn.com/image/fetch/$s_!25x_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!25x_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png" width="1456" height="925" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:925,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:665403,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.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_!25x_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 424w, https://substackcdn.com/image/fetch/$s_!25x_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 848w, https://substackcdn.com/image/fetch/$s_!25x_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.png 1272w, https://substackcdn.com/image/fetch/$s_!25x_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff745948f-b4c2-47f1-9435-172f24d4f2f8_1729x1098.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">Design view of the log-periodic antenna. Note that in the background, the grid is more detailed to account for the wire sizes of the antenna itself.</figcaption></figure></div><p>Using this more precise mesh extends the computation time even further, from 10 minutes to ~240 minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S74B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S74B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 424w, https://substackcdn.com/image/fetch/$s_!S74B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 848w, https://substackcdn.com/image/fetch/$s_!S74B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 1272w, https://substackcdn.com/image/fetch/$s_!S74B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S74B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png" width="1442" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1442,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62741,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.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_!S74B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 424w, https://substackcdn.com/image/fetch/$s_!S74B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 848w, https://substackcdn.com/image/fetch/$s_!S74B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.png 1272w, https://substackcdn.com/image/fetch/$s_!S74B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2e0adce-c04e-484e-9d8c-e95fc5d06dfa_1442x920.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">Mesh view of the log-periodic antenna, with ~364 million total grid squares (cells)</figcaption></figure></div><p>Admittedly, this mesh is suboptimal, in that I am using too small grid cells and throwing computer time (and RAM) at the problem, instead of making the mesh more detailed only where it needs to be so.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JJfs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JJfs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 424w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 848w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JJfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png" width="1456" height="1015" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1015,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:272112,&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://helium24.substack.com/i/186556023?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.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_!JJfs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 424w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 848w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!JJfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a9a8ddd-1027-406f-bdba-7eb248b8158c_1475x1028.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 3D grid squares (cells) are only visible when zoomed in with this higher-resolution simulation.</figcaption></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p> Python has some features that make it more challenging to use for large projects and slower, but those are outside the scope of this post. For more information on Python, see <a href="https://www.python.org/">https://www.python.org/</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>As a reminder, the wavelength is inversely proportional to the frequency (see footnote 3).</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Factorio Designs]]></title><description><![CDATA[What this game is and how my gameplay has evolved]]></description><link>https://helium24.substack.com/p/factorio-designs</link><guid isPermaLink="false">https://helium24.substack.com/p/factorio-designs</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Sun, 01 Feb 2026 23:16:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fKfw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>What is Factorio?</h2><p>Factorio is a factory simulation game. The goal of the game is to go from the starting planet to a point in space<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>, which requires producing several game items to perform.</p><p>At the beginning, items can be produced by hand, but rapidly start requiring specialized machines to produce (i.e., smelting iron ore into into iron plates), along with belts+trains to automate bulk production</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fKfw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fKfw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 424w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 848w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 1272w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fKfw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png" width="612" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&quot;width&quot;:612,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:790933,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.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_!fKfw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 424w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 848w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.png 1272w, https://substackcdn.com/image/fetch/$s_!fKfw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09958adc-1ada-4198-9b3a-b962e99316e1_612x983.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">A sample of the production process in Factorio. Belts+Inserters (top) are inserted into the Assemblers, which produce Green Science (bottom).</figcaption></figure></div><p>This bulk production is what makes Factorio a factory simulator. For example, building the rocket silo (which is necessary to build rockets to go to space) requires massive amounts of several items, which themselves are made up of other items.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nvlE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nvlE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nvlE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg" width="893" height="1473" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1473,&quot;width&quot;:893,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:560818,&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;:false,&quot;internalRedirect&quot;:&quot;https://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.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_!nvlE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nvlE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83e45da-3c6c-41de-aa42-eeed687c2e99_893x1473.jpeg 1456w" sizes="100vw"></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 rocket silo and the recipe for construction. Even the required 100 pipes take multiple steps to construct, going from iron ore &#8594;iron plate &#8594;pipes. <a href="https://wiki.factorio.com/Rocket_silo">Source</a>.</figcaption></figure></div><p>To complicate matters further, there are also enemies in Factorio. These enemies are attracted to the pollution created by the factory components, destroying the factory if not otherwise protected. As such, some of the factory production has to go towards defense, in addition to factory expansion and resource extraction.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</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_!3CPB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3CPB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 424w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 848w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 1272w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3CPB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png" width="462" height="246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a24439a0-21d6-4796-87f8-a704f692ec53_462x246.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:246,&quot;width&quot;:462,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:237442,&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;:false,&quot;internalRedirect&quot;:&quot;https://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.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_!3CPB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 424w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 848w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 1272w, https://substackcdn.com/image/fetch/$s_!3CPB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa24439a0-21d6-4796-87f8-a704f692ec53_462x246.png 1456w" sizes="100vw"></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">Factory defense, with a tank defending against a wave of &#8216;biters&#8217;.</figcaption></figure></div><h2>Factory design</h2><p>Because Factorio is a factory simulator, factory design is really what the game is about. Personally, I enjoy the bounded puzzles that come about from this structure. Factorio&#8217;s emphasis on automation and problem solving also makes this a more <a href="https://tech.yahoo.com/general/articles/factorio-silicon-valley-tycoons-elon-111534178.html">commercial education game</a> than usual, although it still is definitely a recreational video game.</p><h3>Early designs </h3><p>In the beginning, playing Factorio is an exercise in discovery. My early factory designs reflected that, where resources are plumbed all over the place to flow to the machines where they were necessary. I didn't use drones, and also struggled to properly route trains to avoid signaling deadlocks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_EsE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_EsE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 424w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 848w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 1272w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_EsE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png" width="1456" height="1140" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1140,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4912063,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.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_!_EsE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 424w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 848w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.png 1272w, https://substackcdn.com/image/fetch/$s_!_EsE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74e5ef31-e0ab-42f3-a59a-9ddce33a24b0_1583x1239.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">One of my early Factorio factory designs, although calling this &#8216;designed&#8217; is somewhat of a stretch.</figcaption></figure></div><blockquote><p>Factorio drones will automatically build planned factory sections using stored resources. They can help with literal Copy+Paste of pieces of the map, but are most useful copying stored sections for reuse.</p><p>However, using drones requires building drones. There are also limitations as to where and how drones work, so there's a moderate upfront cost to start using drones at all.</p></blockquote><h3>Intermediate Designs</h3><p>Over time, I swapped to a &#8220;main belt&#8221; design, with minimal drone usage. This resulted in a more ordered (and productive) factory, although with still a moderate amount of manual (non-automated) creation of the factory itself.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YFWB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YFWB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 424w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 848w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YFWB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png" width="1343" height="1272" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1272,&quot;width&quot;:1343,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4582402,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.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_!YFWB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 424w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 848w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!YFWB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd3993ca-bdc4-4701-b74f-c57c69256cff_1343x1272.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 main belt (center), with copy-pasted drone-created copper plate smelters (left and lower left)</figcaption></figure></div><blockquote><p>Zooming out a bit shows a more iconographic view of the same map</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nbyp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nbyp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 424w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 848w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 1272w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nbyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png" width="1456" height="1152" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1152,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:467383,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.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_!Nbyp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 424w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 848w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.png 1272w, https://substackcdn.com/image/fetch/$s_!Nbyp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8625d70-bc08-484a-9d96-a3ec1c5ac060_1503x1189.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">For reference, the copper smelters in the prior field are in the middle-left of this image. Of note, the upper part of this image shows copy-pasted drone-created solar power fields.</figcaption></figure></div></blockquote><p>This point in time is roughly when I bought the <a href="https://store.steampowered.com/app/645390/Factorio_Space_Age/">Space Age expansion</a>. This expansion added space travel, with space ships and new planets to explore.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BmJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BmJd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 424w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 848w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 1272w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BmJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png" width="634" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:634,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1156164,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.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_!BmJd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 424w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 848w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.png 1272w, https://substackcdn.com/image/fetch/$s_!BmJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9f76bfb-41b3-465f-87d2-5708031c66f2_634x970.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">One of my early spaceship designs heading off to somewhere.</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_!Aod3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Aod3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Aod3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png" width="1030" height="1080" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1080,&quot;width&quot;:1030,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2023349,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.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_!Aod3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 424w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 848w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!Aod3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b00a9a6-6b62-4c06-b6b3-2c3ec4b2bcb3_1030x1080.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 stationary space station in the process of delivering cargo (center rocket) to the planet it is orbiting.</figcaption></figure></div><p>I also began experimenting with even larger, more automated base expansion at this time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H9HJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H9HJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 424w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 848w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 1272w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H9HJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png" width="1189" height="1144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1144,&quot;width&quot;:1189,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1175161,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.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_!H9HJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 424w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 848w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.png 1272w, https://substackcdn.com/image/fetch/$s_!H9HJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d64e1a2-a25c-4650-b06e-ee730a42ce4d_1189x1144.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 grid pattern here is formed by drone hubs, which control drones in their area of operations. In-game, I can remotely instruct drones to add a point in the grid, thereby expanding the base.</figcaption></figure></div><p>These designs were sufficient for me to finish Factorio (and Factorio with the Space Age expansion), which put a pause in my factory designing for a while.</p><h3>Current Designs</h3><p>More recently (~late 2025), I began revisiting Factorio with the goal of further automating factory production. That has resulted in new designs with a similar, but much different grid structure.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qoGF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qoGF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 424w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 848w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 1272w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qoGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png" width="1252" height="1211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1211,&quot;width&quot;:1252,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:398568,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.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_!qoGF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 424w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 848w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.png 1272w, https://substackcdn.com/image/fetch/$s_!qoGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfab3e3c-1be4-4e6c-999d-0b3f617bcebc_1252x1211.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 high-level view of my current factory structure.</figcaption></figure></div><p>This grid structure is formed with drone hubs, that themselves enclose a train network. Adding a new grid square automatically links those rails (and any components within it) to the rail 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_!mq0a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mq0a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 424w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 848w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 1272w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mq0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png" width="1456" height="1041" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0788e28-6612-44b4-be68-302e0d898490_1640x1172.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1041,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:610412,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.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_!mq0a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 424w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 848w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.png 1272w, https://substackcdn.com/image/fetch/$s_!mq0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0788e28-6612-44b4-be68-302e0d898490_1640x1172.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 more detailed view of the train network. The circled yellow bits are identical, with the same trains bringing in material (Iron + Copper) and taking away products (Green Circuit).</figcaption></figure></div><p>This has made base expansion more practical, because I can directly copy+paste trains (moving resources around) with their stations (processing those resources into new products). There are some caveats with this design<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, but overall I&#8217;m glad with the simplicity and increase in automation that this has provided.</p><h2>Final thoughts</h2><h4>Tips</h4><p>Most of the tips I've learned from this game come from experimentation (which I highly recommend) or <a href="https://youtube.com/@trupen">Trupen</a> on YouTube (especially some of his longer, more generic videos).</p><p>Other than the pithy &#8220;have fun&#8221; tip, I personally recommend using keyboard shortcuts, to more easily shuffle resources and copy machine settings around.</p><h4>Game Comparison</h4><p>Factorio is now the most played game in my Steam library, surpassing my playtime in <a href="https://store.steampowered.com/app/212680/FTL_Faster_Than_Light/">FTL: Faster than Light</a> by roughly 50 hours. Factorio has building aspects similar to <a href="https://en.wikipedia.org/wiki/SimCity_3000">Sim City 3000</a>, <a href="https://store.steampowered.com/app/255710/Cities_Skylines/">Cities: Skylines</a>, and <a href="https://en.wikipedia.org/wiki/RollerCoaster_Tycoon">RollerCoaster Tycoon</a>. However, it also has notable resource constraints and the need to balance expansion and defense, similar to <a href="https://en.wikipedia.org/wiki/Civilization_IV">Civilization IV</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> and <a href="https://wz2100.net/">Warzone 2100</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>. It's a game I find decently replayable, with manageable complexity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1ttJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1ttJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 424w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 848w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 1272w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1ttJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png" width="1281" height="781" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:781,&quot;width&quot;:1281,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2176965,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.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_!1ttJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 424w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 848w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.png 1272w, https://substackcdn.com/image/fetch/$s_!1ttJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ce5dd93-7598-4647-a666-4207bc2243f5_1281x781.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 sample of that replayability would be adder-controlled recyclers, new to my most recent playthrogh. These ensure that recyclers slow down (i.e., are temporarily disabled) when the recycling sorting loop is too full.</figcaption></figure></div><p>Factorio does lack a narrative, or story beyond that which you infer it to be. It's not a <a href="https://en.wikipedia.org/wiki/Mass_Effect">Mass Effect</a> or <a href="https://store.steampowered.com/agecheck/app/1086940/">Baldur&#8217;s Gate 3</a>, nor would it be a <a href="https://en.wikipedia.org/wiki/The_Elder_Scrolls_V:_Skyrim">Skyrim</a>. It's also not a combat focused FPS, such as the <a href="https://store.steampowered.com/sale/crysis/La">Crysis</a> or <a href="https://www.xbox.com/en-US/games/halo-the-master-chief-collection">Halo</a> series. That is to say, this isn't the only video game that I will continue to play, but is is one I continue to enjoy.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Winning the base game (without the Space Age expansion) occurs by launching your first rocket to  space, which is simpler (but still quite complicated) compared to winning the game with the expansion.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>There is an option to disable enemies, but that results in a reduced gameplay experience, especially with the Space Age expansion. In a sense, the default Factorio experience is similar to the &#8220;normal&#8221; (and not '&#8220;peaceful&#8221;) <a href="https://www.minecraft.net/en-us/about-minecraft">Minecraft</a> gameplay mode, although with fewer benefits from the enemies themselves.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Caveats:</p><ul><li><p>Trains can&#8217;t detect when they need to refuel (without mods), so there&#8217;s a special &#8216;refueling&#8217; stop that each train needs to visit somewhat frequently.</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_!2POg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2POg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 424w, https://substackcdn.com/image/fetch/$s_!2POg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 848w, https://substackcdn.com/image/fetch/$s_!2POg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 1272w, https://substackcdn.com/image/fetch/$s_!2POg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2POg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png" width="1456" height="1232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1232,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:554448,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.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_!2POg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 424w, https://substackcdn.com/image/fetch/$s_!2POg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 848w, https://substackcdn.com/image/fetch/$s_!2POg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.png 1272w, https://substackcdn.com/image/fetch/$s_!2POg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F156ce63f-c7c3-4703-9e97-10203ab27308_1645x1392.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">Because each train (eventually) visits the refueling stop, this stop is a good way to investigate the status of all ~90 trains at once.</figcaption></figure></div><ul><li><p>Trains prefer the closest free stop, so if there&#8217;s a shortage of Iron and multiple trains delivering Iron to multiple destinations, those destinations aren&#8217;t served equally.</p><ul><li><p>In other words, this design doesn&#8217;t work well when there are resource shortages, because parts of the factory operate optimally and some parts not at all. My earlier &#8220;main belt&#8221; based designs result in a factory that overall performs sub-optimally during resource shortages. </p></li></ul></li><li><p>There&#8217;s a decent amount of unused space in some of the grid squares.</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_!ne8r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ne8r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ne8r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png" width="1255" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1255,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3134660,&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://helium24.substack.com/i/185556781?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.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_!ne8r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ne8r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a95297-1a69-4940-b3f5-70d16944a837_1255x1024.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 uranium ore processing grid square, which has underutilized space.</figcaption></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>For reference, Civilization IV is quite old now. Civilization V was (and is) enjoyable, but modified many core mechanics. Civilization VI added some back, but also added a new tech boost mechanism that I dislike. Civilization VII was released in early 2025, so I haven't had the chance yet to try that game out.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Warzone 2100 is free, and <a href="https://store.steampowered.com/app/1241950/Warzone_2100/">installable via Steam</a> now too (for free). It's a quite decent game, if somewhat dated, with the most <a href="https://betaguide.wz2100.net/research.html?tree=1">gigantic tech tree</a> I've seen in a game.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Code Reviews]]></title><description><![CDATA[What code reviews are and why they are done]]></description><link>https://helium24.substack.com/p/code-reviews</link><guid isPermaLink="false">https://helium24.substack.com/p/code-reviews</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Mon, 26 Jan 2026 22:28:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KG1O!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcbcd0d4-9ac8-4d10-b15b-f7a48eefa8eb_3072x3072.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Code reviews are an interim step when writing computer code to implement a process change. Generally, these reviews are a blocking step where other coworkers approve code changes before those changes officially flow into the existing (official) code storage.</p><blockquote><p>For more information on coding itself, see my previous post </p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;accb33c1-caa5-457f-82df-eae086b9e3ce&quot;,&quot;caption&quot;:&quot;From my perspective, coding is:&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;What is coding?&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:422607628,&quot;name&quot;:&quot;Gustave Granroth&quot;,&quot;bio&quot;:&quot;A personal blog about life and technology.&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcbcd0d4-9ac8-4d10-b15b-f7a48eefa8eb_3072x3072.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-01-13T01:12:49.307Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!PHZ-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://helium24.substack.com/p/what-is-coding&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:183749663,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7177335,&quot;publication_name&quot;:&quot;Gustave's Substack&quot;,&quot;publication_logo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!KG1O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcbcd0d4-9ac8-4d10-b15b-f7a48eefa8eb_3072x3072.jpeg&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div></blockquote><h2>Purpose</h2><p>If I was to summarize code reviews into two core values, I would choose &#8220;experience and trust&#8221;.</p><h3>Experience</h3><p>For all developers, code reviews provide a space for other developers to detect flaws before those flaws impact customers. Code reviews don't take the place of manual or automated testing, because that's something all developers should be doing anyways for their changes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> Flaws that make their way into code reviews tend to be situations that testing hasn't caught, incorrect solutions to the problem, structural flaws in the code change itself, or general clarity issues.</p><p>For newer and more inexperienced developers, code reviews allow for those developers to learn from more experienced developers on how to write better code. While more tenured and experienced developers should have fewer flaws in their code changes<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, mistakes will happen and there is always the ability to learn from others.</p><h4>Testing gaps</h4><p>Even with good test coverage<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, there can be rare situations that code doesn't properly handle. These are either known software situations, unknown technical limitations, or knowledge gaps.</p><blockquote><p><strong>Known software situations: </strong>Dividing by zero, using data that has already been deleted, trying to modify data that is in the process of being modified, etc.</p><p><strong>Technical limitations</strong>: Using feature XYZ, which is only supported in version 1.3 of ABC, not version 1.2<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p><strong>Knowledge Gaps</strong>: Updating code in section A requires a corresponding change in section B, Alice and Bob only accept changes in section C with prior approval, etc.</p></blockquote><p>Code reviews ensure that these gaps are detected, to fix problems before users encounter them.</p><h4>Incorrect solutions</h4><p>Due to the ambiguity inherent in translating ideas into the structural process of code, the code submitted for review may solve the wrong problem.</p><p>From my experience writing software, the best defense against this problem is ensuring code reviews are small. Even if a small code change<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> doesn't solve the root problem, the incremental step helps other reviews ensure the changes are progressing to the right solution.</p><h4>Structural flaws</h4><p>Similar to incorrect solutions, structural problems can happen in code that otherwise is fully functional. Usually, structural problems consist of code that solves the original problem, but either doesn't generalize to similar problems or isn't designed to support further modification.</p><h4>Clarity issues</h4><p>Lastly, functional code for review can be unclear. While clarity isn't a flaw in and of itself, lack of clarity increases the likelihood for future flaws to be introduced.</p><p>To improve clarity, teams I have worked with have guidelines for style (see <a href="https://xn--gckvb8fzb.com/tabs-vs-spaces-the-war-is-over/">spaces vs tabs</a>), enforced manually or with automated tooling. Personally, I'm in favor of automated style management, but if that isn't an option (or there are conflicting &amp; inconsistent style preferences) I prefer staying <em>consistent</em> with any existing code that I am changing.</p><h3>Trust</h3><p>The other core reason for code reviews is to ensure that at least one other coworker sees a change before it is actually made official. This reflects a more modern increase in trust management (i.e., &#8220;<a href="https://en.wikipedia.org/wiki/Trust,_but_verify">trust but verify</a>&#8221;), along with a more broader awareness of computer security.</p><h4>Trust Management</h4><p>As an industry, having mandatory code reviews is still a relatively new concept<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>. While I believe code reviews are generally beneficial, using them as an access control mechanism solves a tangential problem.</p><blockquote><p>The more direct problem is &#8220;why would an untrustworthy individual be granted access to make code changes at all&#8221;?</p><p>With open source projects, often the broad public can submit code changes, but only trusted/verified maintainers can perform the review and approve those code changes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> </p><p>For corporate projects, usually code changes are restricted to a core group of team members. Although all team members of that group should be trusted, requiring another reviewer avoids compliance issues, and ensures that someone else does in fact formally review a code change.</p></blockquote><h4>Security</h4><p>Having mandatory code reviews ensures that multiple individuals are required to make any changes, which avoids attacks from a single compromised individual (<a href="https://www.itsecurityguru.org/2021/03/23/it-admin-sentenced-after-mass-deleting-company-accounts/">example</a>). With larger companies and broad access groups, this policy does improve the overall security posture and prevent <a href="https://www.sonatype.com/blog/cve-2024-3094-the-targeted-backdoor-supply-chain-attack-against-xz-and-liblzma">supply chain attacks</a>.</p><h2>AI</h2><p>How does the advent of LLMs+AI affect code reviews?</p><p>AI will certainly increase the number of code reviews, but also brings up the question of what counts as &#8220;review&#8221;.</p><p>Generally, I believe that all AI-generated code should be human reviewed. AI code reviewers can assist with the review process, along with automated testing.</p><blockquote><p>I've recently been convinced that AI-generated code should have full code coverage, because generating and verifying that coverage is an automated process that AI can generally iterate well on.</p><p>This code coverage alone doesn't prove code correctness though. For more information on that, see footnote 3.</p></blockquote><p>However, I still think there should be a human reviewer, because otherwise the AI code reviewer (and company behind the AI model performing the review) effectively is operating as a full employee. Trusting an AI reviewer alone introduces the liability and security issues previously discussed in the &#8220;Trust&#8221; section.</p><h2>Ending Thoughts</h2><p>It is important for me to call out that code reviews are intended to result in better code. When I was a newer developer, I remember feeling discouraged at the amount of comments from the code reviews I would submit. Those comments are not intended to be personal attacks, or a reflection of competency, but rather are to improve the current code and code that you later write.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Modern code reviews systems can be setup to run automated testing as part of the review process. However, those tests should still pass <em>before</em> code reviews are submitted for other humans to review.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>More experienced developers will naturally make fewer mistakes, but that doesn't mean that they will make <em>zero</em> mistakes. Code quality is generally inversely correlated with coding velocity. A more experienced developer is expected to be more productive, at a sufficiently good quality level.</p><p>What defines &#8220;sufficiently good&#8221; depends heavily on the project and team. Some projects and teams do require near-perfection, but that level of precision is generally only necessary in safety critical applications. Accepting some level of risk (along with procedures to manage that risk) often significantly improves productivity.</p><blockquote><p>A good analogy for this concept comes from mechanical engineering. Machining parts with looser tolerances is cheaper and faster compared to machining high precision parts. Industrial manufacturing necessities some level of inaccuracy and managing that inaccuracy for economical results.</p></blockquote></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Good test coverage is subjective due to a number of factors. </p><p>One good industry metric is &#8220;test coverage&#8221;, which measures code statements that are executed by test code. Generally, it is well understood that 0% coverage (that is, no automated tests) is bad.</p><p>However, test coverage alone isn't enough. For example, the following (contrived), example has 100% test coverage, but the code itself doesn&#8217;t actually do <code>x+y</code>:</p><pre><code><code>// Code</code>
<code>Add(x, y):</code>
<code>  return 4</code>

<code>// Test</code>
<code>TestAdd():</code>
<code>  abort if Add(2,2) is not 4</code></code></pre><p>For human developers, targeting ~60-80% code coverage generally ensures that core functionality and edge cases are tested, while not adding too much overhead and incentivizing a multitude of poor quality (but technically accurate) tests like those above.</p><p>Because LLMs+AI can iterate for as long as costs allow, targeting much higher coverage levels is more practical. However, the onus is still on a human reviewer to ensure that those tests are accurate, and not equivalently poor quality.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>I'm trying to avoid excessive technical language, but an example of this would be using XPath features supported in <a href="https://en.wikipedia.org/wiki/XPath_2.0">XPath 2.0</a>, but not 1.0. The C# programming language only supports XPath 1.0 by default, although the documentation on that limitation <a href="https://learn.microsoft.com/en-us/dotnet/api/system.xml.xmlnode.selectsinglenode?view=net-10.0">isn't very clear</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>&#8220;small&#8221; is also subjective, but personally I want to aim for something that is under 10 files. Small code changes also promote an <a href="https://agilemanifesto.org/principles.html">Agile methodology</a>, although small code changes are also beneficial for non-Agile code development processes.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>To be more precise, before ~2013 code changes I made didn't strictly require review, although it was frowned upon to make &#8220;major&#8221; changes without another reviewer. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>This process is likely going to change in the near future because AI generated code reviews are overwhelming open source maintainers, causing some projects to <a href="https://arstechnica.com/security/2026/01/overrun-with-ai-slop-curl-scraps-bug-bounties-to-ensure-intact-mental-health/">make process changes already</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Clothing Preferences]]></title><description><![CDATA[And why I don't like rayon/bamboo viscose]]></description><link>https://helium24.substack.com/p/clothing-preferences</link><guid isPermaLink="false">https://helium24.substack.com/p/clothing-preferences</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Wed, 21 Jan 2026 00:41:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cgDC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Preferences</h2><p>I like my clothing like I <a href="https://helium24.substack.com/p/comparing-cars">like my cars</a>: delightfully boring. In general, this means functional clothing matching the social setting I am in, without conveying any overtly political or social messages with that clothing.</p><p>In practice, achieving all of those goals is actually quite difficult. I've expanded upon why in each section below.</p><blockquote><p>I also dislike the clothes buying process, resulting in a tendency to reuse clotheing matching my preferences until that clothing is past its lifespan.</p><p>Because of that, I am exceedingly grateful for my family, who know that I enjoy receiving clothing for birthdays and Christmas.</p></blockquote><h3>Political messaging</h3><p>Over the last several years face masks, white polo shirts, red shirts, and red hats have become partially politicized. These aren't all clothing items I would normally wear, but do mean I can't blindly wear clothing to work without <em>checking</em> that it won't inadvertently convey a message.</p><p>Because I really don't want my clothing to reflect any political views I have, I am extremely cautious to avoid any implications from what I wear. For example, I avoid wearing  jeans with a yellow polo, because that matches the <a href="https://en.wikipedia.org/wiki/Flag_of_Ukraine">Ukrainian flag</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_!c8OE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c8OE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 424w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 848w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 1272w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c8OE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png" width="960" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:668,&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://helium24.substack.com/i/183937875?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.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_!c8OE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 424w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 848w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.png 1272w, https://substackcdn.com/image/fetch/$s_!c8OE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2b10cc4-ba7e-4092-87c8-515c733109ad_960x640.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">The Ukrainian flag (<a href="https://en.wikipedia.org/wiki/Flag_of_Ukraine">Wikipedia</a>)</figcaption></figure></div><p>Similarly, I avoid white shoes, jeans, and a red polo because unless it is Independence Day (July 4th), those colors are potentially conflated with the <a href="https://en.wikipedia.org/wiki/Flag_of_the_United_States">American flag</a> and <a href="https://en.wikipedia.org/wiki/Flag_of_Russia">Russian flag</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_!rcyx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rcyx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rcyx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg" width="960" height="506" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:506,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60138,&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://helium24.substack.com/i/183937875?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c6cc831-5cff-43fc-beb6-ea7b6c9cb7df_960x506.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_!rcyx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 424w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 848w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!rcyx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d30a9f0-fc85-4e5a-9aa5-cd77d20f4984_960x506.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 American flag (<a href="https://en.wikipedia.org/wiki/Flag_of_the_United_States">Wikipedia</a>)</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_!ZSk0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZSk0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 424w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 848w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZSk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png" width="960" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14695,&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://helium24.substack.com/i/183937875?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb18a5dcf-eb9b-43f2-a0d8-95492e662c2a_960x640.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_!ZSk0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 424w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 848w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.png 1272w, https://substackcdn.com/image/fetch/$s_!ZSk0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67824fcd-0aab-4ab0-b1f1-d1743a38e2a4_960x640.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 Russian flag (<a href="https://en.wikipedia.org/wiki/Flag_of_Russia">Wikipedia</a>).</figcaption></figure></div><h3>Social messaging</h3><p>Because clothing does reflect upon the wearer, there are minimal standards I need to have. Specifically, this means that the clothing I wear can't be too expensive, too worn, too fancy, or too simple.</p><h4>Too expensive </h4><p>I'm not a fashionista. While I do enjoy quality clothing, anything too expensive<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> doesn't accurately reflect my personality and starts becoming a fashion statement instead of boring.</p><h4>Too worn</h4><p>At the other end of the spectrum, any clothing too worn stops being sufficiently functional. Similarly, although deliberately worn clothing can be a fashion statement, it's not one I would like to pull off and also would be categorized as &#8220;not boring&#8221; clothing.</p><h4>Too fancy</h4><p>To me, this means wearing clothing appropriate for the occasion. On the fancy end of the spectrum this currently means no suits at work<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, but always suits at weddings. Similarly, expensive watches<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> are both too expensive and too fancy, but watches in general (especially functional sports watches) are appropriate.</p><h4>Too simple</h4><p>Excessively simple clothing can also convey a social statement. In particular, this means that basic white sneakers are no longer part of my clothing repertoire.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cgDC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cgDC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cgDC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg" width="1618" height="1246" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1246,&quot;width&quot;:1618,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:276226,&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://helium24.substack.com/i/183937875?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17627774-3906-492a-87d0-97b23b851218_2780x1264.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_!cgDC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cgDC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20247dd5-eebd-42bc-a26d-5dc6031001d1_1618x1246.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">&#8220;Suburban dad&#8221; sneakers. <em>From Google Gemini Nano Banana AI</em> </figcaption></figure></div><p>This preference also means that I prefer to be dressed for the occasion, neither over-dressed nor under-dressed.</p><h3>Functional clothing </h3><p>Lastly, I want clothing I own and use to be functional. Although men's clothing is usually functional<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>, there are certain aspects of clothing that can make it more or less functional.</p><h4>Cut</h4><p>Some cuts of mens clothing are more stylish, but less functional. For example, jeans can come <a href="https://www.levi.com/US/en_US/clothing/men/jeans/c/levi_clothing_men_jeans">in multiple styles</a>, some of which fit my body type better.</p><blockquote><p>Personally for jeans, I prefer the &#8220;basic&#8221; or &#8220;relaxed&#8221; styles, because those tend to offer a good fit without being too restrictive or baggy.</p></blockquote><h4>Material</h4><p>Another indication of functionality for the clothing I wear is the material it is made of. In brief, I prefer wearing cotton fabrics.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p>I do have (and wear) clothing made of other materials (polyester, wool, etc). However, I do prefer cotton because it is comfortable, breathes well, is reasonably durable, and is decently priced.</p><p>However, I generally don't prefer wearing synthetic cloth-based clothing. In particular, I dislike rayon/bamboo viscose, because that fabric feels unnaturally plastic, and doesn't dry consistently in a dryer load.</p><blockquote><p>Bamboo viscose is essentially rayon, derived (with heavy chemical processing) from bamboo instead of other plants. The confusion over this newer fabric has resulted in the <a href="https://www.ftc.gov/bamboo-textiles">FTC clarifying</a> that only fabric actually made from bamboo fibers can be called &#8220;bamboo&#8221;</p></blockquote><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/p/clothing-preferences?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thank you for reading my thoughts on this matter.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/p/clothing-preferences?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/p/clothing-preferences?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Such as a <a href="https://www.prada.com/us/en/p/stretch-cotton-t-shirt/UJN712_1YDP_F0009_S_211?utm_campaign=GoogleShopping_US&amp;utm_medium=CPC&amp;utm_source=Google&amp;utm_content=PMax&amp;s_kwcid=AL!8549!3!!!!x!!&amp;gclsrc=aw.ds&amp;gad_source=1&amp;gad_campaignid=15775671799&amp;gbraid=0AAAAADgVuh_fdOsytz0dKgar2no6mfxST&amp;gclid=Cj0KCQiAyP3KBhD9ARIsAAJLnnbodamVpzMFinqoCxCZQr3ALpmejwB9UvNOzcnUXG0IPN2qMhOKbscaAlv7EALw_wcB">$1,000 t-shirt</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>I work in tech. Wearing a suit means you are interviewing (most likely), are from Legal/HR/non-engineering (moderately likely), or from NYC/a past suits-required environment (rarely likely).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Watches deserve their own article. In brief, both <a href="https://www.apple.com/watch/?afid=p240%7Cgo~cmp-14645533083~adg-184511038985~ad-787535736450_kwd-12631510~dev-m~ext-~prd-~mca-~nt-search&amp;cid=wwa-us-kwgo-applewatch-noncore_watchfam-watch_general-watchfamily_hero_wny_122525-AppleWatch-AppleWatch-General-iwatch">Apple</a> and <a href="https://www.garmin.com/en-US/c/wearables-smartwatches/">Garmin</a> have decent smart watches, but anything beyond their mid-tier options starts entering the &#8220;too fancy/too expensive&#8221; arena.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Unlike women's clothing, which tends to be more stylized at the expense of usable pockets, comfort, and so on.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Cotton has a bad reputation for hiking, but it does quite well if it doesn't get too wet from sweat or rain. Even if it does get wet, I've usually preferred a wet shirt to a synthetic shirt, opting to instead carry a replacement shirt to change into at the end of a hike.</p></div></div>]]></content:encoded></item><item><title><![CDATA[What is coding?]]></title><description><![CDATA[An exploration of the software creation process]]></description><link>https://helium24.substack.com/p/what-is-coding</link><guid isPermaLink="false">https://helium24.substack.com/p/what-is-coding</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Tue, 13 Jan 2026 01:12:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PHZ-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>From my perspective, coding is:</p><ul><li><p>How I translate general ideas into concrete structural processes</p></li><li><p>The process of writing human-readable text to describe those processes</p></li><li><p>Part of my job as an industrial software developer<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p></li></ul><p>Before I discuss coding further, it's worthwhile to see what the rest of the Internet defines coding to be.</p><blockquote><p><strong>Computer programming</strong> or <strong>coding</strong> is the composition of sequences of instructions, called programs, that computers can follow to perform tasks</p><p><em><a href="https://en.wikipedia.org/wiki/Computer_programming">Wikipedia</a>, directly referencing <a href="https://web.archive.org/web/20200429195646/https://yearofcodes.tumblr.com/what-is-coding">Shaun Bebbington</a></em></p></blockquote><blockquote><p>Coding is telling a computer what to do, in a way that, with a bit of translation, it can understand.</p><p><em><a href="https://subjectguides.york.ac.uk/coding/introduction#s-lg-box-15566109">University of York</a></em></p></blockquote><h2>Why do we need coding?</h2><p>This sounds like a straightforward question, but it somewhat summarizes how far general computing devices have come in the last several decades.</p><p>Coding allows a general computing device to perform many different tasks, based on the program installed on that device. Phones and computers are the most well-known examples nowadays, with their plethora of apps for banking, gaming, music, and so on.</p><p>Coding has become prevalent in our lives partly because computers have become cheaper, smaller, and faster; all-around better. There are great historical examples of how computers used to be larger<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, more expensive, and specialized, but for this article I'll discuss dishwashers!</p><h3>The dishwasher</h3><p>The first dishwasher I can remember using was entirely electromechanical. You'd turn the switch to the desired cleaning setting, and it'd slowly rotate to the <em>Off </em>state, going through the rinse-clean-rinse-dry process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nhU0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nhU0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nhU0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg" width="1456" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:458822,&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://helium24.substack.com/i/183749663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.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_!nhU0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nhU0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1fcefc6-acaf-4451-8c92-d2a06cab9f81_2534x700.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 sample of an electromechanical dishwasher. <a href="https://appliancetvoutlet.com/product/frigidaire-full-console-dishwasher-wfl5563/?srsltid=AfmBOorEtFMqRQpeeu0V6Q5j2lQo4hDFyp7Q7OO-0JkxXMPSmz92YC2a">Source</a>.</figcaption></figure></div><p>At the time, this was the efficient (and cheap) design, with the operating decisions (how long to rinse, clean, etc) defined by the mechanical clock triggered by the dial.</p><p>However, as computers have become cheaper, modern dishwashers have removed those mechanical controls<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>, generally opting for buttons (or a capacitive panel with button stickers). Coding allows the computer in the dishwasher to perform the necessary steps to clean the dishes.</p><blockquote><p>It can be odd to think of a dishwasher as having a computer, but <em>something</em> has to control how that dishwasher operates. That computer doesn't need to be especially complicated or powerful, because there's not that much data a dishwasher needs to process or store.</p><p>For example, a hobbyist friendly microcontroller (computer-on-a-chip) is currently <a href="https://www.digikey.com/en/products/detail/microchip-technology/ATTINY45-20PU/735465">~$1.50</a>. It doesn't look like a computer, but it has enough complexity to <a href="https://www.arduinoslovakia.eu/blog/2017/12/attiny85---blik?lang=en">blink a light</a>, <a href="https://github.com/ChrisMicro/AttinySound">act as a synthesizer</a> ... or run a dishwasher.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zcdQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zcdQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 424w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 848w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 1272w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zcdQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp" width="200" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2906,&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://helium24.substack.com/i/183749663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.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_!zcdQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 424w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 848w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 1272w, https://substackcdn.com/image/fetch/$s_!zcdQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618fc831-5cd3-47a9-910c-f8499ff35544_200x200.webp 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">What the ATtiny45 microcontroller looks like (<a href="https://www.digikey.com/en/products/detail/microchip-technology/ATTINY45-20PU/735465">source</a>). For reference, each chip is approximately the size of a penny.</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_!-PZd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-PZd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-PZd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg" width="1456" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:250671,&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://helium24.substack.com/i/183749663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.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_!-PZd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-PZd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0432b98-f4e3-4aea-9804-60de46a8e533_2312x820.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">What each pin does (<a href="https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet-Summary.pdf">reference</a>). VCC &amp; GND are power, with the remaining pins heavily customizable based on the programmed software.</figcaption></figure></div></blockquote><h2>Why do computers need coding?</h2><p>Computers need code because computers themselves are essentially complicated calculators, with more inputs, storage, compute power, and outputs</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R9sE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R9sE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R9sE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg" width="1456" height="353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:353,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89627,&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://helium24.substack.com/i/183749663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.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_!R9sE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!R9sE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf37fe1d-cf17-4f51-9aba-e4e42f35a96b_2271x550.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Basic calculator block diagram.</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_!PHZ-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PHZ-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PHZ-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg" width="1456" height="371" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:371,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116017,&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://helium24.substack.com/i/183749663?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.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_!PHZ-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHZ-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd04c05b9-c35e-42a6-93aa-88ce5f428d55_2592x661.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">Phone block diagram. Both diagrams are generated with <a href="https://mermaid.live/edit">Mermaid</a> and simplify the internal phone/calculator workings.</figcaption></figure></div><p>How computers work really deserves its own article, but in brief, computers need code to orchestrate what happens inside the machine to control its outputs based on its inputs and stored data.</p><h2>What is coding?</h2><h3>Translating general ideas</h3><p>At work or home, coding usually begins with a problem. That problem (&#8220;customer ABC can't do XYZ&#8221;, &#8220;I want to graph data DEF programmatically&#8221;) serves as the baseline for determining what to code.</p><p>With analysis, each problem is broken down into smaller, manageable pieces that can each be solved to complete the underlying problem. This analysis process also serves to triage and prioritize the problem, clarify any assumptions, and prepare the problem for implementation.</p><blockquote><p>In a work context, this translation and analysis process breaks a problem from &#8220;single person+experienced developer&#8221; to &#8220;multiple people+junior developers&#8221;. As developers grow in experience, being able to subdivide problems and hand them off to others is a key part of their growth.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p></blockquote><h3>Writing human-readable text</h3><p>Writing code, despite being the most visible part of the software development process, is only ~20-30%<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> of the job.</p><p>Any code I (or an AI<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>) creates has to at least work. However, that's an insufficiently low bar for industrial software. At a minimum, I expect any code I create or review to work, be tested in some form, have a sufficient explanation, and be consistently clear (in line with related existing code)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a>.</p><p>The most important aspect in code production is clarity. Clarity is important because for large software projects, other people (or myself years later) need to be able to comprehend the changes I make.</p><h4>How can functional code be unclear?</h4><p>Computers operate by executing machine instructions. These instructions are extremely basic, so there exist a wide variety of software languages to abstract away those instructions and provide for some common functionality.</p><p>Functional code can be unclear because software languages provide for different means of accomplishing the same task.</p><blockquote><p>Even when using machine instructions (assembly language), there are different ways to solve several problems.</p><p>For example, <code>2*3</code> can be done via multiplication, but performing <code>3+3</code> has the same result.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p></blockquote><h3>Part of my job</h3><p>Lastly writing code solve problems, but those problems themselves come from some overarching goal.</p><p>Work provides a structure with goals, which has guided my growth in software development over the years. This career has expanded my understanding of coding well beyond what it was when I first started working. Essentially, I feel better able to answer the question of &#8220;what is coding?&#8221; through having has the experiences and career I have had so far.</p><p>Although my experience won't be applicable to everyone, I believe that achieving goals through programming is a universal part of what coding can be.</p><h2>Epilogue</h2><p>As a final thought, I hope it is not too surprising for this article to discuss <em>what is coding</em> without showing <em>code examples.</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a></p><p>After all, this isn't an article on <em>how to code</em> (or <em>how to read code</em>), both of which are lengthy enough to deserve their own article.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>I've worked as a software developer for nearly 15 years. I prefer &#8220;industrial software developer&#8221; as a title over &#8220;programmer&#8221; or &#8220;coder&#8221;, because there is substantial engineering and design inherent in the job. Conversely, I don't prefer  &#8220;software engineer&#8221;, because this field isn't consistent, ossified, or credentialed enough to justify the &#8220;engineer&#8221; title. Using &#8220;professional engineer&#8221; (or even &#8220;engineer&#8221;) is also a protected term in some jurisdictions, similar to title protections in the medical field.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Such as the <a href="https://www.seas.upenn.edu/about/history-heritage/eniac/">ENIAC</a>, which was a general purpose computer, but not a very portable one.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Modern cars also are trending towards fewer mechanical buttons, because capacitive buttons (and touchscreens) are just so much cheaper than they used to be.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>This was explained to me years ago as being a force adder vs multiplier. As an example of that concept, see <a href="https://www.marclittlemore.com/be-a-force-multiplier/">this article</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>20-30% is the rough estimate for coding I use when explaining my job to other people. While that seems low, 20-30% still represents a substantial amount of total output.</p><p>This percentage tends to go down at higher seniority. I was closer to 80% of my time spent on coding early in my career, but I was also slower and worse at using that time to produce quality output.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>As a reminder, my general rule of thumb is that if I use AI for writing, coding, or image generation, I attribute that usage to the specific AI.</p><p>The utility of AI coding models deserves its own blog post, but in general through my own experimentation I've been able to apply these models more than the anti-AI haters, but less than the pro-AI evangelists.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>This isn't a fully exhaustive list of all requirements that code has to satisfy to solve any problem. In part, this is because there is no global standard checklist for good code, due to the rapid change inherent in this field and differing requirements for different projects.</p><p>For a good example of the change in this field and differing requirements, compare <a href="https://bits.logic.inc/p/ai-is-forcing-us-to-write-good-code">this code testing article</a> with <a href="https://www.functionize.com/blog/the-myth-of-100-code-coverage">this one</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>This is a non-silly example because addition is generally faster than multiplication (depending on hardware), and several applications require fast code (games, simulations, etc).</p><p>An even faster approach would be doing <code>3 &lt;&lt; 1</code>, which is a <a href="https://en.wikipedia.org/wiki/Arithmetic_shift">bitwise left shift</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>Computer science textbooks tend to either choose a <em>language</em> (C, Java, Python, Haskell, etc), or use pseudocode (a generalization of software languages) for examples.</p><p>I haven't used either here because even pseudocode is too technical for the scope of this article.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Setting up a WireGuard VPN]]></title><description><![CDATA[To access your local home network remotely]]></description><link>https://helium24.substack.com/p/setting-up-a-wireguard-vpn</link><guid isPermaLink="false">https://helium24.substack.com/p/setting-up-a-wireguard-vpn</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Thu, 08 Jan 2026 22:16:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!B-FL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="callout-block" data-callout="true"><p>This article discusses creating a VPN connection to your local home network, not how to use a commercial VPN service for anonymity or to access the internet from other countries.</p></div><h3>Background</h3><p>My home network setup currently looks something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sHxt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sHxt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 424w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 848w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 1272w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sHxt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png" width="841" height="470" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:470,&quot;width&quot;:841,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27430,&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://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.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_!sHxt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 424w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 848w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.png 1272w, https://substackcdn.com/image/fetch/$s_!sHxt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7db150fb-7cb3-4617-9944-42c640eb5d11_841x470.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">My home network, a <a href="https://mermaid.js.org">Mermaid </a>diagram generated with <a href="https://ollama.com/library/qwen3-coder:30b-a3b-q8_0">Qwen3 </a>assistance</figcaption></figure></div><p>Crucially, the home router limits connectivity with the outside world. Only Minecraft players can directly access my home Minecraft server, because the router is configured to let that traffic from the Internet through.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8wtx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8wtx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8wtx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg" width="1263" height="1720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1720,&quot;width&quot;:1263,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:174454,&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;:false,&quot;internalRedirect&quot;:&quot;https://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.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_!8wtx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8wtx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bac19c3-94d3-4e52-8361-953ec2e48eaa_1263x1720.jpeg 1456w" sizes="100vw"></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>For my friends, this is sufficient. My friends can directly access my Minecraft server using this configuration, with their network connection to my server looking something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pPpW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pPpW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 424w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 848w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 1272w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pPpW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png" width="1456" height="196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:196,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42138,&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;:false,&quot;internalRedirect&quot;:&quot;https://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.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_!pPpW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 424w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 848w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 1272w, https://substackcdn.com/image/fetch/$s_!pPpW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c11156e-e818-49a5-9e8e-3f19f2adb971_2003x269.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">How my friends directly connect through the router, to my Minecraft server. <a href="https://mermaid.js.org/">Mermaid </a>diagram also generated with <a href="https://ollama.com/library/qwen3-coder:30b-a3b-q8_0">Qwen3 </a>assistance.</figcaption></figure></div><p>Recently though, I've wanted to access more locally hosted resources<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>  from my home network over the internet. For more comprehensive access to my home network, I setup WireGuard VPN.</p><h3>What does WireGuard do?</h3><p>WireGuard provides a somewhat easy (but quite technical) means to connect multiple devices to a secondary &#8220;virtual private network&#8221; (aka &#8220;VPN&#8221;). The end result is to connect my over-the-internet remote device to that network, and my server to that same virtual network.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JrvP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JrvP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 424w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 848w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 1272w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JrvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png" width="1456" height="194" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:194,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65074,&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://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.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_!JrvP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 424w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 848w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 1272w, https://substackcdn.com/image/fetch/$s_!JrvP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7a5b3e7-0b63-4ee3-aa96-8f3b7b861abc_2327x310.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption">Adding the VPN connection to the previous <a href="https://mermaid.js.org/">Mermaid </a>diagram.</figcaption></figure></div><p>This connection allows my remote device to access my local home devices through the virtual network, as if my remote device were another device on my local home network.</p><h3>Setup</h3><h5>Installation</h5><p>For the at home server, install WireGuard using the instructions <a href="https://www.wireguard.com/install/">here</a>. </p><p>Assuming the remote device is a phone, download the <a href="https://play.google.com/store/apps/details?id=com.wireguard.android">Android app</a> or <a href="https://itunes.apple.com/us/app/wireguard/id1441195209?ls=1&amp;mt=8">iPhone app</a>.</p><h5>Configuration - General</h5><p>Select a port, such as <code>34567</code><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, for WireGuard usage. Forward that port through your router to the home server IP (assumed to be as <code>10.95.1.121</code>), using whatever configuration mechanism your router manufacturer has provided.</p><p>Determine your home network internet IP (assumed to be <code>73.74.75.76</code><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>).</p><p>Generate the public/private encryption keys for the server, using the following command. </p><pre><code>$ wg genkey &gt; server.private_key  # private key saved in "server.private_key"
$ wg pubkey &lt; server.private_key
PUBLIC_KEY_OUTPUT_HERE</code></pre><p>Lastly, choose a virtual network prefix, such as <code>10.12.12.</code><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p>With all of this general configuration out of the way, we can now configure a client.</p><h5>Configuration - Client</h5><p>Assuming this is the first client, assign it ID 2, resulting in a virtual IP of <code>10.12.12.2/24</code><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p>Using the configuration details from the last section, configure the client. As an example, in the Android application the configuration would look like:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d17F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d17F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d17F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d17F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d17F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d17F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg" width="1264" height="2550" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2550,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:417967,&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://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.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_!d17F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d17F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d17F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d17F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd59d87a-82bd-4d7c-bb43-55acd89bc289_1264x2550.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>This configuration assumes that the client is allowed to connect to anything through the VPN, with &#8220;Allowed IPs&#8221; set to<code> 0.0.0.0/0</code>.</p><p>Copy the &#8220;Public key&#8221; generated in the client, for use in setting up the server.</p><h5>Configuration - Server</h5><p>Using the general configuration details and client public key, configure the server.</p><p>For Linux, create <code>/etc/wireguard/wg0.conf</code> as root and edit it as follows<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>:</p><pre><code><code>[Interface]
# Aka the server IP, but also allowing for 10.12.12.2,3,4,etc.
Address = 10.12.12.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp191s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp191s0 -j MASQUERADE
ListenPort = 34567
PrivateKey = SERVER_PRIVATE_KEY
[Peer] # Allow the client to connect to the VPN
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.12.12.2/32</code></code></pre><p>This configuration allows the server to forward traffic over the local Ethernet connection (<code>enp191s0</code>) and only allows the server to connect to the client (<code>10.12.12.2/32</code>)</p><h5>Enable</h5><p>Enable the server by running:</p><pre><code>sudo wg-quick up wg0</code></pre><p>Enable the client by toggling the VPN switch</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kqjv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kqjv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kqjv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg" width="1263" height="403" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:403,&quot;width&quot;:1263,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35341,&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://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.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_!Kqjv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Kqjv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed9c0def-a622-4572-af57-e61a16c959ac_1263x403.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>If everything is correct the server should show</p><pre><code><strong>interface: wg0</strong>
  public key: SERVER_PUBLIC_KEY
  private key: (hidden)
  listening port: 34321

peer: PEER_PUBLIC_KEY
  allowed ips: 10.123.45.165/32</code></pre><p>: and the client should show:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B-FL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B-FL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B-FL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg" width="1149" height="854" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:854,&quot;width&quot;:1149,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105503,&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://helium24.substack.com/i/182890511?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.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_!B-FL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B-FL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9458b0e-d490-4c03-8428-ca3c6672d875_1149x854.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><h3>Results</h3><p>After all of this setup, in your phone&#8217;s browser-of-choice you can now go to <code>10.95.1.121</code>, and access anything on that computer as if you were at home!</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Specifically, <a href="https://ollama.com/">Ollama</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>All numbers (ports, IPs, etc) are pseudorandom selections used for demonstration purposes and not my own home network settings.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Publicly facing IPs do change (unless you are paying extra for a static IP). However, from my experience this IP changes infrequently enough (~yearly) that I assume it is static and update my client configuration when it changes.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Choosing a prefix that starts with &#8216;10.&#8217; is convenient because that is reserved for &#8220;<a href="https://en.wikipedia.org/wiki/Reserved_IP_addresses">local communications within a private network</a>&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>The &#8220;/24&#8221; at the end specifies that the first 24 bits are unchanged. In practice, this means that the remaining eight bits <em>can </em>change, signifying a range of <code>10.12.12.0-255</code>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>The <code>PostUp/PostDown</code> sections are pulled nearly verbatim from <a href="https://davidshomelab.com/access-your-home-network-from-anywhere-with-wireguard-vpn/">this post</a>. While similar, I created this specific post partly because I simplified the setup further. I also went through a different workflow because I configured the WireGuard VPN client forAndroid and not another Linux PC. </p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Are heat pumps worth it?]]></title><description><![CDATA[Running the numbers with current fuel prices]]></description><link>https://helium24.substack.com/p/are-heat-pumps-worth-it</link><guid isPermaLink="false">https://helium24.substack.com/p/are-heat-pumps-worth-it</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Sun, 04 Jan 2026 19:15:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!loQk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>History</h2><p>Back in 2023, we paid for an upgrade to our house&#8217;s HVAC system. At the time, we installed an air conditioner because my math indicated it made the most economic sense.</p><p>Were my calculations correct?</p><h2>What is a heat pump?</h2><p>A heat pump is essentially a reversible air conditioner. In addition to cooling the house in the summer (by transferring the heat outside), heat pumps heat the house in the winter (by transferring the heat inside).</p><p>Heat pumps are more efficient than a resistive heater (aka, a space heater (or toaster)) because they use electricity to move existing outdoor heat indoors. Moving existing energy (heat) takes less electricity than converting electricity directly into heat.</p><h2>Calculations</h2><h4>Fuel costs</h4><p>As of late 2025, PSE (Puget Sound Energy) <a href="https://www.pse.com/en/pages/rates/schedule-summaries#sort=%40documentdate%20descending">charges</a> approximately $0.20 per kWh of electricity,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> and $1.66 per therm of natural gas.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><h4>Resistive heating </h4><p>Each therm is equivalent to <a href="https://en.wikipedia.org/wiki/Therm">29.3 kWh</a> of heat. Although resistive heating is essentially 100% efficient, replacing 120 therms of natural gas heating ($<code>1.66*120/0.95=$210</code>)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> with resistive heating (<code>$0.20*29.3*120=$703</code>) is not economical.</p><p>However, this does give a minimum bar for what <em>would</em> be economical. A heat pump that is 3.4x as efficient ($<code>703/$210=3.35</code>) would start being competitive with natural gas heating.</p><h4>Heat pump heating</h4><p>How efficient then, can heat pumps be?</p><p>Heat pump efficiency is measured in &#8220;Heating Seasonal Performance Factor&#8221; (HSPF), which is roughly a <a href="https://en.wikipedia.org/wiki/Heating_seasonal_performance_factor">3.41 multiplier</a> over how much more efficient a heat pump is.</p><p>For example, the heat pump I compared back in 2023 had a HSPF of 9.5, which corresponds to roughly 2.8x as efficient.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oTqh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oTqh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oTqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg" width="1011" height="1315" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1315,&quot;width&quot;:1011,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:444635,&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://helium24.substack.com/i/183311539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.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_!oTqh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 424w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 848w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!oTqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fceebef-2446-4f01-b805-ceaaf0dd7e87_1011x1315.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>With that number alone, choosing the Carrier A/C unit over the heat pump was worthwhile in 2023. The Carrier A/C unit was cheaper, and using the Bosch heat pump to heat the house would have cost more than natural gas heating.</p><p>However, if we had instead purchased the most efficient heat pump on the market, that would be roughly 4.0x (<code>13.5/3.41</code>) as efficient.</p><h4>Is that enough?</h4><p>A 4.0x efficiency gain is above the 3.4x minimum bar, but that results in a monthly cost of around $176 for 120 therms. This is only a $34 savings over natural gas, which results in ~$4k of savings in 20 years.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p>Unfortunately, that savings isn't enough. The <em>less efficient</em> Bosch unit quoted to me was $4.5k more expensive than the basic Carrier A/C unit, and the most efficient unit on the market certainly would cost much more.</p><h2><strong>Other considerations</strong></h2><p>If heat pumps are generally more expensive, why would someone ever choose to install one?</p><h5>Price Projections</h5><p>Over time, if natural gas is expected to be more expensive (or electricity cheaper), heat pumps begin to make more sense.</p><h5>Carbon Emissions</h5><p>Heat pumps generally contribute to decarbonization, because electricity is not only produced from fossil fuels. In the next decade, PSE electricity will <a href="https://www.pse.com/en/about-us/Sustainability">be net zero</a> (offsetting any emissions produced).</p><p>In my opinion, the push to decarbonization will generally raise natural gas prices, eventually making heat pumps the logical (economic) choice. However, that will only be the case if electricity costs don't also continue to rise.</p><p>Therefore, because A/C units generally last 20<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> years, it made the most sense to choose the A/C unit back in 2023, waiting until ~2043 to reevaluate the economic and environmental aspects again.</p><h5>Flexibility</h5><p>Because heat pumps are less efficient at freezing temperatures, installation will usually include a backup heat source. Having a heat pump allows for the flexibility of using electricity for whole home heating, in addition to natural gas.</p><h5>Style</h5><p>Lastly, choosing a heat pump is a choice. You may chose to install a heat pump <em>because you want to</em>, irrespective of the logical reasons behind that choice.</p><p>Being able to make a choice is one aspect of what makes us human. This may be an expensive choice, but having an opinion and making a choice based on that opinion is, ironically, logical.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This electricity cost amortizes taxes and the minimum residential connection charge over our typical monthly usage. </p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{multline}\n\\frac{(0.177\\frac{$}{kWh}*600 kWh+$7.49)*1.067 (taxes)}{600 kWh}\n\\\\\n=\\sim0.202\\frac{$}{kWh}\n\\end{multline}&quot;,&quot;id&quot;:&quot;JSWZVMWXIO&quot;}" data-component-name="LatexBlockToDOM"></div><p>Crucially, this is the <em>cheapest</em> price we pay. Any usage below 600 kWh causes taxes and fees to be more impactful, and any usage above 600 kWh is charged Tier 2 (more expensive) prices.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!loQk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!loQk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 424w, https://substackcdn.com/image/fetch/$s_!loQk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 848w, https://substackcdn.com/image/fetch/$s_!loQk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!loQk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!loQk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg" width="1262" height="740" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:740,&quot;width&quot;:1262,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:117572,&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://helium24.substack.com/i/183311539?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.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_!loQk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 424w, https://substackcdn.com/image/fetch/$s_!loQk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 848w, https://substackcdn.com/image/fetch/$s_!loQk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!loQk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94e18a22-0622-42ae-86dc-a6cedee676f5_1262x740.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">Monthly cost per kWh based on usage.</figcaption></figure></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>This natural gas cost amortizes taxes and the monthly connection charge, <em>in addition</em> to the <a href="https://ecology.wa.gov/air-climate/climate-commitment-act">carbon reduction credit</a>. This credit offsets some of the relatively high rates caused from the carbon reduction program itself.</p><p>Unlike electricity usage natural gas usage fluctuates wildly over the year, from a low of ~8 therms to a high of ~150 therms. The carbon reduction credit also varies, being lower in the summer and higher in the winter.</p><p>For a relatively fair comparison, I've chosen 120 therms of usage, and the winter credit, which is when most of the natural gas I use is used.</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{multline}\\frac{(1.576\\frac{$}{therm}*120 therms+$14-$16.7)*1.067}{120 therms}\n\\\\\n=\\sim1.658\\frac{$}{therm}\n\\end{multline}&quot;,&quot;id&quot;:&quot;VPRZLOLAKC&quot;}" data-component-name="LatexBlockToDOM"></div></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>A modern condensing furnace is over 95% efficient at burning natural gas, but not completely efficient. There are further heat losses in the ventilation ducts of the house, but those losses will be roughly consistent for all heating types.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><code>$34*6 months/year of heating*20 years=~$4,000</code></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>This is somewhat optimistic: 15 years is probably a more likely lifespan of our current unit.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Essentially, &#8220;cause and effect&#8221;.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Comparing cars]]></title><description><![CDATA[How to choose what to choose]]></description><link>https://helium24.substack.com/p/comparing-cars</link><guid isPermaLink="false">https://helium24.substack.com/p/comparing-cars</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Wed, 31 Dec 2025 22:01:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P3zL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In 2021, I started planning to replace my car, a 2009 Honda Civic Hybrid.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> In 2023, I bought a replacement car, a 2021 Nissan Leaf S Plus.</p><p>Why did it take me so long to swap cars?</p><h1>Criteria </h1><h2>Utility</h2><p>With my current career and group activities, I need a car to commute and for occasional weekend excursions.</p><blockquote><p>For reference, public transit is nearly non-existent near my address. I'm even remote enough to be out of the Sound Transit <a href="https://www.soundtransit.org/sites/default/files/documents/stdistrictmap07_10.pdf">RTA tax zone</a>, which will be discussed more later in this post.</p></blockquote><p>Commuting generally consists of three 60 mile round trip journeys every week, or roughly 9,000 miles every year.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>Occasional weekend excursions vary in length and occurrence, but I'd estimate that at 2,000 miles every year.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> Unlike commuting, these trips generally involve multiple passengers and gear, requiring sufficient seating and cargo space to perform.</p><blockquote><p>More specifically, this means a minimum of four seats, with ski gear (winter) or camping equipment (summer) fitting inside the vehicle.</p></blockquote><h2>Aesthetics</h2><p>Because vehicles are a substantial investment, I also want whatever I buy to also be something I like. What that means for me is that I want a neutral &#8220;boring car&#8221;, instead of a vehicle that makes a personal or political statement.</p><p>This preference excludes sports cars, pickup trucks, and certain brands entirely (BMW, Tesla<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>) from my consideration.</p><h2>Simplicity</h2><p>I also want any vehicle that I own to be easy to operate and maintain. Simplicity excludes more brands (Kia<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a>, Jeep<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a>), newer models (which are more likely to have unexpected issues), or older vehicles (which will need more extensive maintenance).</p><h2>Cost</h2><p>Lastly, because vehicles are expensive, I want to ensure that I am getting what I am paying for. This excludes several high-end luxury brands, but <em>doesn't</em> exclude more expensive vehicles with luxury trims or features.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P3zL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P3zL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P3zL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg" width="1264" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90007,&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://helium24.substack.com/i/182748618?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.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_!P3zL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 424w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 848w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!P3zL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9baa3625-c14a-423c-af14-7b1c308c6b8a_1264x720.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><h3>Does cost exclude EVs?</h3><p>No, although it doesn't mean paying several $thousand extra for an EV is worthwhile.</p><p>My 2009 Honda Civic costed every year:</p><ul><li><p>~$1,250 to fuel<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\frac{11,000 \\frac{miles}{year}*4 \\frac{$}{gal}}{35 \\frac{miles}{gal}}=\\sim$1250/year&quot;,&quot;id&quot;:&quot;TDHUXBIRVZ&quot;}" data-component-name="LatexBlockToDOM"></div></li><li><p>~$700 to insure</p></li><li><p>~$300 in maintenance (oil, tires, service, etc.)</p></li><li><p>~$150 in licensing (WA tabs)</p></li><li><p><strong>~$2,400/year</strong> in total</p></li></ul><p>For comparison, my 2021 Nissan Leaf S Plus costs every year:</p><ul><li><p>~$500 to fuel<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\frac {11,000 \\frac{miles}{year}}{3.5 \\frac{miles}{kWh}}*\\frac{$0.16}{kWh}=\\sim$500/year&quot;,&quot;id&quot;:&quot;CDKWHUDOUS&quot;}" data-component-name="LatexBlockToDOM"></div></li><li><p>~$1,000 to insure</p></li><li><p>~$100 in maintenance (tires, service, etc.)</p></li><li><p>~$400 in licensing</p><ul><li><p>EVs are charged an extra <a href="https://dol.wa.gov/vehicles-and-boats/vehicles/vehicle-registration/calculate-vehicle-tab-fees">$225 yearly</a> in WA state.</p></li></ul></li><li><p>~<strong>$2,000/year</strong> in total</p></li></ul><p>Over ten years, that adds up to roughly $4,000 in savings. However, there were relatively few EVs that were only $4,000<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> more expensive than their non-EV equivalents, and even fewer now that cheaper EVs are no longer <a href="https://dol.wa.gov/vehicles-and-boats/vehicles/taxes-and-fees/tax-exemptions-alternative-fuel-vehicles-and-plug-hybrids">exempt from WA state&#8217;s ~10% sales tax</a>.</p><blockquote><p>If you live in the Sound Transit RTA tax zone, the <a href="https://dol.wa.gov/vehicles-and-boats/vehicles/taxes-and-fees/regional-transit-authority-rta-tax">1.1% tax rate</a> on the &#8220;depreciated&#8221; MSRP value <em>massively</em> penalizes expensive vehicles (which depreciate faster than the official schedule). For cheaper EVs, the difference between a $30,000 EV and a $25,000 gas car is ~$50/year in licensing fees, which is less of a concern though.</p></blockquote><blockquote><p>EVs also tend to have a lower resale value+depreciate faster. This generally isn't a concern for me because I plan on keeping whatever I buy long enough that its resale value will be quite small anyways.</p></blockquote><h1>Selection</h1><p>With all that criteria in mind, the main reason I didn't swap to a newer car sooner is because I <em>didn't need to.</em> The Honda Civic was sufficiently efficient that it didn't make sense to replace that car prematurely.</p><p>Once I began looking at replacement cars, this criteria didn't substantially filter down the viable options (there are several affordable, four seat boring vehicles). One reason I went with the Nissan Leaf is because restricting my search to EVs substantially narrowed down the field of options, while also giving me the opportunity to test out using an EV for a longer period of time.</p><blockquote><p>The only other viable EV option meeting my criteria was the Chevrolet Bolt. Other vehicles that didn't meet the cut at the time include the Tesla Model 3, Hyundai Kona, and Hyundai Ioniq 5.</p></blockquote><p>Once I had decided upon either the Chevrolet Bolt or Nissan Leaf, the question became one of availability. I ended up with the Leaf because both vehicles were relatively comparable, but the Leaf was easier to purchase.</p><h1>Future</h1><p>What do I expect in my next car purchase?</p><p>I still expect utility, aesthetics, and simplicity. Those three values underpin my past and future decision process. However, I've learned what I like and dislike from the Leaf (and other vehicles I have driven), resulting in additional minor criteria.</p><p>A future vehicle must have:</p><h5>Driving</h5><ul><li><p>One-pedal driving <em>or </em>auto vehicle hold at stops.</p></li><li><p>Modern safety conveniences (specifically: backup camera, cross traffic detection, blindspot indicators).</p></li><li><p>Per-wheel TPMS sensors.</p></li><li><p>(If an EV) At least comparable range (~250-300 miles) and a standard high-speed charging port.</p></li></ul><h5>HVAC </h5><ul><li><p>Physical buttons for all major functions (temperature, airflow patterns, recirculation, defrosting)</p></li><li><p>Physical vent controls.</p></li></ul><h5>Entertainment </h5><ul><li><p>Physical volume buttons on the steering wheel.</p></li><li><p><em>Wireless </em>Apple CarPlay/Android Auto <em>or</em> a small enough display to conveniently mount a phone or GPS.</p></li><li><p>AM radio support. This is necessary due to state mountain pass travel announcements using AM radio.</p></li><li><p>FM radio support.</p></li></ul><h5>Cargo</h5><ul><li><p>Foldable rear seats</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>My family says I've been discussing the replacement since 2019. However, the earliest written notes I have planning for a replacement date back to 2021.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{multline}\n3 \\frac{trips}{work\\_week}*60 \\frac{miles}{trip}*50 \\frac{work\\_week}{year}\n\\\\\n=9,000 \\frac{miles}{year}\n\\end{multline}&quot;,&quot;id&quot;:&quot;UDTFAVLLXA&quot;}" data-component-name="LatexBlockToDOM"></div><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{multline}\n100 \\frac{miles}{trip}*10 \\frac{trip}{year}+ 10\\frac {miles}{trip}* 100 \\frac{trip}{year}\n\\\\\n= 2,000 \\frac{miles}{year}\n\\end{multline}&quot;,&quot;id&quot;:&quot;QTOMOGEGUD&quot;}" data-component-name="LatexBlockToDOM"></div><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Both BMW and Tesla drivers are heavily stereotyped, with Tesla also have some <a href="https://www.cnn.com/2025/10/28/business/elon-musk-politics-tesla-ev-sales-intl">political considerations</a> nowadays.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Kia vehicles recently had lax <a href="https://www.atg.wa.gov/news/news-releases/states-settle-hyundai-kia-over-failure-equip-vehicles-anti-theft-technology">anti-theft protections</a>. Newer vehicles are more secure, but the perception of Kia vehicles as insecure with the general public will remain for several more years </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Jeeps are notorious for requiring <a href="https://www.consumerreports.org/cars/cars-driving/which-brands-make-the-best-cars-a6159221985/">frequent repairs</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>The cost of gasoline fluctuates, but $4.00/gallon is a reasonable average over the last few years. The Civic efficiency of 35 miles per gallon is from my empirical driving routes and habits.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>The cost of electricity ($0.16/kWh) and average efficiency of my Leaf (3.5 miles/kWh) are both empirical measurements. These measurements take into account taxes (electricity), efficiency (Leaf charging), and various driving routes+conditions (Leaf efficiency).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>Technically paying $4,000 more for a vehicle costs more than that long-term, because that $4,000 could have been invested instead.</p><p>For the sake of simplicity, I'm ignoring investing for the calculations in this article.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Why write a blog?]]></title><description><![CDATA[A meta post beginning a new era]]></description><link>https://helium24.substack.com/p/why-write-a-blog</link><guid isPermaLink="false">https://helium24.substack.com/p/why-write-a-blog</guid><dc:creator><![CDATA[Gustave Granroth]]></dc:creator><pubDate>Sat, 06 Dec 2025 22:50:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!45_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Written July 10<sup>th</sup>, 2024</h4><p>Simply put, because I think my words are worth sharing.</p><p>There are plenty of stories and advice already out in the world, but I haven&#8217;t encountered my own. A younger version of myself would have found these blog posts hopefully useful, possibly interesting, and at worst, definitely present.</p><p>That&#8217;s not to say my motivations are entirely selfless. I want to express my opinions here, even if other people disagree with them. I want to improve my writing quality. In part, these posts explain who I am and how I think, better than a bullet-point r&#233;sum&#233;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> or online profile.</p><h5>What do I write about?</h5><p>I write about topics interesting to me. The general focus of this blog is on &#8220;life and technology&#8221;, which covers a lot of ground. If this blog morphs to focus on one area in particular, I&#8217;ll update this post to clarify what that area is.</p><div><hr></div><h4>December 6<sup>th</sup>, 2025 Update</h4><h5>Why Substack?</h5><p>These blog posts currently exist in written form scattered throughout various paper notebooks. Originally, I planned on adding these posts to <a href="https://helium24.net">my personal website</a>. However, the majority of blogs that I <em>read</em> are on <strong>Substack</strong>. It therefore made sense to me to upload my thoughts here instead of somewhere less discoverable.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><h5>AI</h5><p>One cannot start a new blog in 2025 without discussing AI.</p><p>These post were not written with AI or other computer assistance tools, excluding <strong>Substack</strong> and <strong>Firefox </strong>spell checking. For the most part, these posts are going to be transcriptions of my paper notebooks into digital form, with relevant data (if any), charts (as appropriate), and links (as necessary) added during that process to finalize the posts.</p><p>Because I do expect to be transcribing posts discussing AI or computer-generated charts, I will call out whenever any content is computer-generated.</p><blockquote><p>For example, the following dipole antenna pattern chart was made with <a href="https://github.com/thliebig/openEMS-Project">openEMS</a> and graphed with <a href="https://matplotlib.org/">matplotlib</a>. <strong>Qwen3-Coder</strong> (specifically, <a href="https://ollama.com/library/qwen3-coder:30b-a3b-fp16">qwen3-coder:30b-a3b-fp16</a>) was used to swap the chart from Cartesian to polar projection.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!45_n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!45_n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 424w, https://substackcdn.com/image/fetch/$s_!45_n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 848w, https://substackcdn.com/image/fetch/$s_!45_n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!45_n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!45_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png" width="1090" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1090,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:233726,&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://helium24.substack.com/i/180913269?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.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_!45_n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 424w, https://substackcdn.com/image/fetch/$s_!45_n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 848w, https://substackcdn.com/image/fetch/$s_!45_n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.png 1272w, https://substackcdn.com/image/fetch/$s_!45_n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a7df8e9-c1fe-406a-8c40-dc5a9aa0adb0_1090x1092.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></blockquote><h5>Questions</h5><p>If you have any questions or thoughts, feel free to leave a comment below.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://helium24.substack.com/p/why-write-a-blog/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://helium24.substack.com/p/why-write-a-blog/comments"><span>Leave a comment</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>This word trips up Firefox&#8217;s spell checking engine. According to <a href="https://en.wikipedia.org/wiki/R%C3%A9sum%C3%A9">Wikipedia</a></p><blockquote><p>A <strong>r&#233;sum&#233;</strong> or <strong>resume</strong> (or alternatively <strong>resum&#233;</strong>)&#8230;</p></blockquote></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://substack.com/refer/gustavegranroth?utm_source=substack&amp;utm_context=post&amp;utm_content=180913269&amp;utm_campaign=writer_referral_button&quot;,&quot;text&quot;:&quot;Start a Substack&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Because this is a blog post about creating a blog, adding <strong>Substack</strong>&#8217;s getting started button felt appropriate to me.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://substack.com/refer/gustavegranroth?utm_source=substack&amp;utm_context=post&amp;utm_content=180913269&amp;utm_campaign=writer_referral_button&quot;,&quot;text&quot;:&quot;Start a Substack&quot;,&quot;hasDynamicSubstitutions&quot;:false}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://substack.com/refer/gustavegranroth?utm_source=substack&amp;utm_context=post&amp;utm_content=180913269&amp;utm_campaign=writer_referral_button"><span>Start a Substack</span></a></p></div><p></p></div></div>]]></content:encoded></item></channel></rss>