<?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[zach.codes]]></title><description><![CDATA[Principal Engineer who ships with bleeding-edge tech. Multiple startups, early eng on $80M+ acquisition, 12+ years of coding]]></description><link>https://zach.codes</link><image><url>https://substackcdn.com/image/fetch/$s_!Jism!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa89e1cc8-8011-45f0-a154-ede32220f61e_1023x1023.png</url><title>zach.codes</title><link>https://zach.codes</link></image><generator>Substack</generator><lastBuildDate>Fri, 24 Apr 2026 11:58:49 GMT</lastBuildDate><atom:link href="https://zach.codes/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Zach Silveira]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[me@zach.codes]]></webMaster><itunes:owner><itunes:email><![CDATA[me@zach.codes]]></itunes:email><itunes:name><![CDATA[Zach Silveira]]></itunes:name></itunes:owner><itunes:author><![CDATA[Zach Silveira]]></itunes:author><googleplay:owner><![CDATA[me@zach.codes]]></googleplay:owner><googleplay:email><![CDATA[me@zach.codes]]></googleplay:email><googleplay:author><![CDATA[Zach Silveira]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Zero Dependency AI Agents]]></title><description><![CDATA[Build fast, secure, and powerful AI Agents with no special frameworks]]></description><link>https://zach.codes/p/zero-dependency-ai-agents</link><guid isPermaLink="false">https://zach.codes/p/zero-dependency-ai-agents</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Sun, 19 Apr 2026 18:06:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RD3b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>A subscription to my newsletter unlocks all future books including this one for free.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://leanpub.com/zerodependencyaiagents&quot;,&quot;text&quot;:&quot;Preorder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://leanpub.com/zerodependencyaiagents"><span>Preorder</span></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_!RD3b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RD3b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 424w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 848w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 1272w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RD3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png" width="640" height="913" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:913,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RD3b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 424w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 848w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 1272w, https://substackcdn.com/image/fetch/$s_!RD3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcee60b5-6c43-45f5-a5ea-0e46e3a0e0d1_640x913.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This book provides a fast yet extensive guide on how to build powerful agents <strong>using the raw programming language features that are already available to you</strong>. We look through the lens of a Python or bun.sh developer to cover the most popular types of languages.</p><p>This book is for anyone who wants to reach for openclaw or other large AI Agent SDKs and frameworks to accomplish their tasks. This book provides a better way, with more secure and testable code that can be fully understood by a single person.</p><p>I also provide real world examples that are already done in production, from a Slack Agent that handles custom requests where I work, to a voice agent that listens, classifies, and takes action as I speak, all running on a local laptop.</p><p>Consider purchasing this book if you want a way to use AI safely and securely, with auto approved agent actions or permission controls, all without any special frameworks or dependencies.</p>]]></content:encoded></item><item><title><![CDATA[Private by Default: The AI Smart Home]]></title><description><![CDATA[Currently in progress, preorder now or subscribe for early access]]></description><link>https://zach.codes/p/private-by-default-the-ai-smart-home</link><guid isPermaLink="false">https://zach.codes/p/private-by-default-the-ai-smart-home</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Sun, 19 Apr 2026 15:19:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K2dE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>A subscription to my newsletter unlocks all future books including this one for free.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://leanpub.com/aismarthome&quot;,&quot;text&quot;:&quot;Preorder&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://leanpub.com/aismarthome"><span>Preorder</span></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_!K2dE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K2dE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 424w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 848w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 1272w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K2dE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png" width="609" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:609,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K2dE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 424w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 848w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 1272w, https://substackcdn.com/image/fetch/$s_!K2dE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c2d8c4b-f3e0-42ce-8d91-aee99ecc9305_609x914.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This book takes you on a quick journey, getting you up to speed on the best open standards that can power a smart, local first, AI powered smart home.</p><p>We will dive into the right technologies to use, the right products to buy, and even dive into custom hardware that can be useful in certain situations.</p><p>At the end of the book, with hardware you may already have, you&#8217;ll have a more powerful and private version of siri, that can do things like turning your outdoor lights on when your presence is detected in the area, and so much more.</p>]]></content:encoded></item><item><title><![CDATA[MCP Servers with OAuth]]></title><description><![CDATA[A quick guide on the entire specification]]></description><link>https://zach.codes/p/mcp-servers-with-oauth</link><guid isPermaLink="false">https://zach.codes/p/mcp-servers-with-oauth</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Sun, 19 Apr 2026 15:16:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YEoy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>A subscription to my newsletter unlocks all future books including this one for free.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://leanpub.com/creatingmcpserverswithoauth&quot;,&quot;text&quot;:&quot;Purchase on Leanpub&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://leanpub.com/creatingmcpserverswithoauth"><span>Purchase on Leanpub</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.amazon.com/dp/B0GX3B4R15&quot;,&quot;text&quot;:&quot;Purchase on Kindle&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.amazon.com/dp/B0GX3B4R15"><span>Purchase on Kindle</span></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_!YEoy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YEoy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 424w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 848w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 1272w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YEoy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png" width="609" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:609,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YEoy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 424w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 848w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 1272w, https://substackcdn.com/image/fetch/$s_!YEoy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24e9d58a-6d5e-4335-8783-5b944633f19d_609x914.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This book provides the fastest way to get up to speed using the latest <a href="https://modelcontextprotocol.io/introduction">Model Context Protocol</a> authentication specification that was finalized in <strong>May 2025</strong>. I am in progress, with some sections completed for the <strong>June 18, 2025</strong> specification update as well. I&#8217;ll do my best to keep this as the most update to date, all in one MCP source as the specification isn&#8217;t even one year old yet.</p><p>We cover advanced ideas like dynamic tool registration and meta programming uses.</p><p>I provide a realistic and unique example of each feature of the server spec, helping you think of creative ways to build AI integrations.</p><p>We take advantage of VS Code MCP support that was <a href="https://code.visualstudio.com/blogs/2025/06/12/full-mcp-spec-support">added in </a><strong><a href="https://code.visualstudio.com/blogs/2025/06/12/full-mcp-spec-support">June 2025</a></strong>, allowing us to write our MCP Server, fully use, and test it, without requiring other applications. This lets me teach faster, and for you to learn faster than other courses. Others may have you manually install separate MCP clients along the way, because this support was only added on June 12th.</p><p>You can pay $200+ for a course session, or $15 for this book and dedicate the next few hours and be just as competent.</p><p>I&#8217;ve already built MCP servers that <a href="https://support.anthropic.com/en/articles/10168395-setting-up-integrations-on-claude-ai">connect directly to Claude&#8217;s Integrations section</a>. Using OAuth specifically.</p><p>This revealed a few quirks that are not mentioned in the official remote specification in order to connect via OAuth to Claude, which is well covered in this book.</p><p>My motto has always been to ship fast. While others are debating decisions, we are already releasing.</p><p>That&#8217;s a theme in this book as well. <strong>The goal is to provide a solid and fast foundation to creating a production ready MCP service</strong>. Without derailing into tangential information.</p><p>You will learn how to setup Streaming HTTP MCP servers using TypeScript.</p><p>Everything we learn will apply to Python, Go, C# and other languages that have an official model context protocol binding.</p><p>We will cover integration of REST and GraphQL APIs inside of MCP tool definitions.</p><p>Upon completion you will know how to add your server directly inside Claude Desktop, Cursor, other MCP clients, and have access to the currently logged in user from inside any MCP tool calls.</p><p>Please bring a foundational understand of REST APIs, TypeScript, and OAuth to get the most out of this book.</p>]]></content:encoded></item><item><title><![CDATA[Qwen 35B A3B SLAPS]]></title><description><![CDATA[I'm sure you could start openclaw locally with this one]]></description><link>https://zach.codes/p/qwen-35b-a3b-slaps</link><guid isPermaLink="false">https://zach.codes/p/qwen-35b-a3b-slaps</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Fri, 17 Apr 2026 11:44:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VQjt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mxvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mxvp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 424w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 848w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mxvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png" width="1097" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:675,&quot;width&quot;:1097,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148805,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.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_!Mxvp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 424w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 848w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 1272w, https://substackcdn.com/image/fetch/$s_!Mxvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde4c196f-27d4-4f80-9662-47f4f513ab98_1097x675.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VQjt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VQjt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 424w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 848w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VQjt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png" width="1104" height="1136" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1136,&quot;width&quot;:1104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:685539,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.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_!VQjt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 424w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 848w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.png 1272w, https://substackcdn.com/image/fetch/$s_!VQjt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860fa448-1dd1-46b0-80c1-eac600d57a67_1104x1136.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></figure></div><p>This model was able to do a pr review and setup a python environment and run tests for me.</p><p>It is also able to run inside claude code, and work with <a href="https://github.com/homeassistant-ai/ha-mcp">ha-mcp</a> that offers a LOT of tools inside the context window.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rNpr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rNpr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 424w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 848w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 1272w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rNpr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png" width="1116" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1116,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115819,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.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_!rNpr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 424w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 848w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.png 1272w, https://substackcdn.com/image/fetch/$s_!rNpr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40b88d92-e3e4-4b3b-b432-af5e99ab0c55_1116x400.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></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_!T-k4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T-k4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 424w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 848w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 1272w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T-k4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png" width="1064" height="396" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:396,&quot;width&quot;:1064,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94976,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.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_!T-k4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 424w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 848w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.png 1272w, https://substackcdn.com/image/fetch/$s_!T-k4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcb596fe-2679-4347-8de8-f07dd5b0b6a6_1064x396.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></figure></div><p></p><p>Yeah it&#8217;s a bit slower than using a hosted model. It&#8217;s running on an m4 max macbook pro that I mostly use as a server now that I&#8217;m all in on <a href="https://omarchy.org/">omarchy</a>.</p><p></p><p>I&#8217;m most surprised it could handle these large json payloads required by home assistant:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kt4g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kt4g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 424w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 848w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 1272w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kt4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png" width="1094" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1094,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:727486,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.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_!kt4g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 424w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 848w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.png 1272w, https://substackcdn.com/image/fetch/$s_!kt4g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2558bac-5493-4e98-a07f-4740ddb606ea_1094x628.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>I also tried asking it to do something I mentioned in my last post, query a tuya device locally for me after pinging it. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>Ended up with 42k context and outputted the details easily</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fV5p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fV5p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 424w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 848w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fV5p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png" width="1092" height="1238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1238,&quot;width&quot;:1092,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:487400,&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://zach.codes/i/194460607?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.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_!fV5p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 424w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 848w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!fV5p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb4888d-d47a-42ba-9286-7f562062cd92_1092x1238.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>Next I&#8217;ll have to give it some small coding tasks. The nice thing about this model is, it may actually save me $20-30 a month on my own personal claude plan. The main thing I use it for is managing a few mcps and some light coding.</p><p>I can probably use it to do that, and rely on the token rate for glm 5.1 or minimax 2.7 for other personal use for a couple bucks a month.</p><p>Check this model out yourself ASAP.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">ollama run qwen3.6:35b-a3b-nvfp4</code></pre></div><p>The NVFP4 variant from ollama is what I used to get these results.</p>]]></content:encoded></item><item><title><![CDATA[Reverse Engineering Tuya with AI ]]></title><description><![CDATA[Claude and Codex make this process so fast and enjoyable]]></description><link>https://zach.codes/p/reverse-engineering-tuya-with-ai</link><guid isPermaLink="false">https://zach.codes/p/reverse-engineering-tuya-with-ai</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 14 Apr 2026 12:55:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xEch!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Thanks to a couple small decisions&#8230; I was able to give codex the ability to do most of the work reverse engineering <a href="https://amzn.to/41k6ezV">a heat pump</a> I purchased for a pool last year.</p><p>I have <a href="https://github.com/make-all/tuya-local/pull/4716">an open pull request</a> for a community library that helps you disable cloud access to this Tuya device and control it locally.</p><p>So what is Tuya? It&#8217;s a china-based &#8220;IoT&#8221; platform that lets you control devices.</p><p>I was able to self install a 100k BTU heat pump for $2500 and it came with Tuya access. If you know anything about pools, you&#8217;ll know the standard cost for a heater like this is closer to $6000, so when I saw this deal on Amazon I had to try it.</p><p>The only downside is that my pool system is all Pentair, and I didn&#8217;t want to run extra cabling and try to interface it with the main panel.</p><p>I ended up reverse engineering the entire pool control panel in addition to this heater, which I will share in another post.</p><p>The point is, I can control the heater and pool pump and valves together even though they are different brands. I need to turn on a spa circuit before turning on heat, and I don&#8217;t want to go to different apps or to my main panel to do it.</p><p>My pool panel doesn&#8217;t even have wifi, so all of this was a multi step process! Anyways&#8230;</p><h2>How I did it</h2><p>It&#8217;s surprising how easy so many things are with AI. I didn&#8217;t know much about how Tuya worked before trying this. Turns out, they have multiple protocol versions and also some devices (like mine) don&#8217;t even update sensor data unless you manually write some data to the device. That fact took me a few days and frustrations to realize. I actually thought the parent library I was using (to add this device to home assistant) had a bug at first.</p><p>First, I told codex &#8220;Install <a href="https://github.com/jasonacox/tinytuya">tinytuya</a> using uv&#8221; and then I told it, &#8220;I have a heat pump at X ip address. It uses tuya, I need you to connect to it and tell me what you find&#8221;</p><p>It quickly got all the data out, but tuya is very basic. It will have a mapping like &#8220;5 =&gt; 54&#8221; and you don&#8217;t know what &#8220;5&#8221; is.</p><p>In my case, I know on the display what the current air temp, inlet and outlet temp, and other data says. So I just tell codex what each field represents.</p><p>It also helps that i found <a href="https://github.com/make-all/tuya-local/blob/7cc554bcbf0fc487e92a93461c9359becd570105/custom_components/tuya_local/devices/poolsana_heatpump.yaml#L8">another yaml</a> in the library I was using. This yaml almost worked for my device but had many bugs. So I told codex to look at it to understand the format we need to use.</p><p>After that it spit out a yaml pretty quickly and then I updated my home assistant to use this yaml for the device.</p><p>Funny enough, this device reports ONLY amps used, and incorrectly&#8230; It will say &#8220;145&#8221; on the display for amp draw, clearly meaning 14.5. Using codex I asked it how can I make a watts sensor where we multiply the amp number by 236 after dividing it by 10. I chose 236, as the panel doesn&#8217;t seem to pull a full 240v, it&#8217;s usually a bit less.</p><p>Now I have <strong>full energy panel support in Home Assistant</strong> even with this trash firmware that can&#8217;t even display amps correctly &#128514;.</p><h2>Not updating</h2><p>The last problem&#8230; I noticed the temperature of the inlet and outlet didn&#8217;t update! You can see the <a href="https://github.com/make-all/tuya-local/pull/4716#issuecomment-4112743321">full fix in my github comment</a>. </p><p>Turns out this device returns cached values EVEN IF the screen itself has a bunch of new changes. UNLESS you send it a write for the temperature set point&#8230; so I have a script to auto set the temp to the same temp&#8230; every minute, so I can get updated data from it. Finally, I blocked its internet access so it can&#8217;t talk to cloud servers anymore.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>Here&#8217;s what it all looks like in home assistant:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xEch!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xEch!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 424w, https://substackcdn.com/image/fetch/$s_!xEch!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 848w, https://substackcdn.com/image/fetch/$s_!xEch!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!xEch!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xEch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png" width="736" height="1316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1316,&quot;width&quot;:736,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88049,&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://zach.codes/i/192360850?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.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_!xEch!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 424w, https://substackcdn.com/image/fetch/$s_!xEch!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 848w, https://substackcdn.com/image/fetch/$s_!xEch!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!xEch!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6102a943-e8c8-4b45-9f66-f10085711155_736x1316.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 huge since before, I couldn&#8217;t even turn my spa pump on (for another blog post) because it isn&#8217;t on wifi. Now, when I am not home, I can start the spa, the heater auto turns on, and I can see how close to temperature it is even when I&#8217;m not home. </p><p>I can also start a timer, which is smart. When it ends, heater turns off, waits 3 minutes, then pump turns off, to keep the heater from overheating if the pump turned off at the same time.</p><p>Thanks to a cli tool, debugging, and pressing buttons, it was super fast to iterate on a fully working yaml file for the tuya local project.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Everything I Purchased for Home Assistant Last Month]]></title><description><![CDATA[Too many awesome Matter + Thread devices and they're affordable!]]></description><link>https://zach.codes/p/everything-i-purchased-for-home-assistant</link><guid isPermaLink="false">https://zach.codes/p/everything-i-purchased-for-home-assistant</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Mon, 06 Apr 2026 14:33:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WlKu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the coming weeks I&#8217;ll be posting a lot about home assistant and how great it is. From combining my pool heat pump with an old pump system, and controlling them in home assistant by reverse engineering, to setting up an open thread border router for low power IoT devices&#8230;. </p><p><strong>To doing facial recognition faster than any enterprise camera system on the market.</strong></p><p>That&#8217;s one of my favorites by the way, I have <a href="https://www.home-assistant.io/">Home Assistant</a> speak over my speakers &#8220;Someone is at the door&#8221; and &#8220;A package has arrived.&#8221; </p><p><strong>It&#8217;s so fast, this plays before people press my doorbell </strong>and catches delivery drivers who barely step onto the porch before leaving. </p><p>I&#8217;ll get into that more later, but for now here&#8217;s just a fun list of all the devices I&#8217;ve bought with a brief review / description of them. <em>Also note that I do get a small commission if you purchase through the links I share.</em></p><p>Also, I actually bought all of these &#129315;</p><h1><a href="https://amzn.to/41Nt82K">Wireless Human Presence Sensor LWR01, mmWave Radar</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WlKu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WlKu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WlKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg" width="306" height="306" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1000,&quot;width&quot;:1000,&quot;resizeWidth&quot;:306,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WlKu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WlKu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ed6d81f-3eb8-4854-b0e5-57c403fe0f41_1000x1000.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These devices are really cool. Using mmwave, same type of stuff in the iPhone&#8217;s UWB chip, these let you detect if people are present, even if they aren&#8217;t moving. Aqara has a version of this that is way more sophisticated but can&#8217;t be bought yet, where you can tell if people sit or stand, and make zones from one sensor.</p><p>The goal with these is to have lights come on, tv turn on, and turn off as you walk away if nobody is in a room. Right now I have one of these turn on two shower fans automatically and stay running until a period after leaving. The fans turn on thanks to the next product:</p><h1><a href="https://amzn.to/3NYrmJ2">Matter over Thread Smart Switch</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gC8K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gC8K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gC8K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg" width="235" height="445.42483660130716" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:870,&quot;width&quot;:459,&quot;resizeWidth&quot;:235,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gC8K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gC8K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e511537-62f6-4a40-bbe0-252f772d198a_459x870.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I really like these, since they are using Thread. As long as your wire boxes behind your switch have neutral wires (some old homes do not) these will work perfectly. They have no issue connecting over thread and have been great so far. Can&#8217;t complain when it&#8217;s under $30. I want to replace every single switch I have with them!</p><h1><a href="https://amzn.to/4sTcHy3">BroadLink RM4 pro IR and RF Universal Remote</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c-ja!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c-ja!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c-ja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg" width="307" height="307.7017142857143" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b72673b3-4a58-4751-8add-44439e082004_875x877.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:877,&quot;width&quot;:875,&quot;resizeWidth&quot;:307,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c-ja!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c-ja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb72673b3-4a58-4751-8add-44439e082004_875x877.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I let my wife buy 3 fans that do NOT work well with the wall switch. They all have remotes that we sometimes lose, and without the remotes you cannot control them. Thanks to this device, I can train and control 433mhz fans, and now all of them are in home assistant and can be controlled via voice or via the HA app. Works great after blocking its internet access too.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h1><a href="https://amzn.to/47Ft34E">TP-Link Tapo Smart Light Bulbs, Matter-Certified</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N_N-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N_N-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N_N-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg" width="319" height="315.18367346938777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1404,&quot;width&quot;:1421,&quot;resizeWidth&quot;:319,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N_N-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N_N-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5aa48a0b-7153-4668-9678-11b9a89b8b1e_1421x1404.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>These were the most affordable, Matter supported light bulbs I could find. They do not support thread unfortunately&#8230; but they are only $10 each, which is way more affordable than Philips Hue. I got these to see how they compare. They work great for controlling through home assistant or anything that supports Matter (like Apple Homekit). The problem is, there isn&#8217;t group support in Matter yet (for lights), at least not fully implemented. </p><p>It doesn&#8217;t work well if you want to control more than 2-3 at a time. It seems the spec is working on this support. I won&#8217;t be buying more until I can group them and send group broadcast commands. Otherwise the matter spec seems very good.</p><h1><a href="https://amzn.to/47GLwhi">SONOFF Matter Smart Plug S41s 4-Pack</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6scC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6scC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6scC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6scC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6scC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6scC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg" width="354" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:354,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6scC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6scC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6scC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6scC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F429fcdbe-a341-45b5-a388-ddb6d1cdd8d2_1500x1500.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>Another Matter enabled device, this time smart switches. I love the Matter spec as I can quickly add these items to home assistant and block their internet access. I would prefer a thread version of these and light bulbs, but those are harder to find. Thread is great because it&#8217;s a mesh and can work with apple homekit, a custom border router, and all of it can work through home assistant together as one mesh. It operates in between the main 2.4ghz wifi bands too.</p><h1><a href="https://amzn.to/3QjWyTB">Waveshare 6-Channel ESP32-S3</a> </h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_wGF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_wGF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_wGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg" width="387" height="331.7142857142857" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1002,&quot;width&quot;:1169,&quot;resizeWidth&quot;:387,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_wGF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_wGF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd8cd87e-6ba6-4ce0-8eb8-523ae29d94ef_1169x1002.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 thing is a BEAST for under $40. If you have any desire to make a smart garage door by controlling your existing one over wifi, or in my case, you want to connect the A and B slots in the top left to interface with a Pentair pool system, you can&#8217;t beat this. The ESP32 hardware has an awesome way to develop firmware called <a href="https://esphome.io/">esphome</a>. </p><p><strong>Having claude or codex configure different actions is a breeze</strong>. For example, I configured the CH1 relay to connect the relay for 100ms when i press a button in home assistant, to open my garage door. I also have another one that communicates and controls my pool equipment, the official manufacture wants 600-1000 for this same functionality that is even worse and cloud based.</p><h1><a href="https://amzn.to/3OlINDk">SONOFF Zigbee 3.0 &amp; Thread Dongle Lite</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KBX2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KBX2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KBX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg" width="197" height="449.58096828046746" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1367,&quot;width&quot;:599,&quot;resizeWidth&quot;:197,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KBX2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KBX2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f60ad5d-ae6c-4b43-96f6-f3c7cd064632_599x1367.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 is a great thread border router antenna. The company behind it has a website where you can flash the firmware for zigbee or thread to it. After that, I told claude &#8220;use the connected thread dongle and start open thread border router&#8217;s official docker container and validate it all works&#8221; </p><p>It was that simple to get it going. I then went to my iPhone and uploaded the existing Apple Homekit border router&#8217;s credentials in Home Assistant, and had claude (with the power of <a href="https://github.com/homeassistant-ai/ha-mcp">ha-mcp</a>) update my border router to join that same network so it all works together. I have this one on one side of the house and already had an apple tv acting as a border router on the other side.</p><h1><a href="https://amzn.to/4sbQaeA">Waveshare Industrial ESP32-S3</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gEt2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gEt2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gEt2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg" width="320" height="244.49122807017545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:871,&quot;width&quot;:1140,&quot;resizeWidth&quot;:320,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gEt2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 424w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 848w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!gEt2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc7ae0df7-4d2d-4c72-a73b-a1e47bea9648_1140x871.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Same idea as above for CAN or RS485 communication, but way smaller. If you have good wifi coverage this can be a better option if you don&#8217;t need the relays.</p><h1><a href="https://amzn.to/4sbQcTC">Aqara Door and Window Sensor P2, Matter Over Thread</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k2aF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k2aF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k2aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg" width="351" height="325.44642857142856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1350,&quot;width&quot;:1456,&quot;resizeWidth&quot;:351,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!k2aF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k2aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b9944c0-0305-459e-9a3e-6511864d816f_1500x1391.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>FINALLY another thread device. This thing works great and is extra low power thanks to thread. The battery has been chilling at 3v and 100% battery according to home assistant, but I&#8217;ve only had this one a bit over a week. One thing I want to debug for fun if I get the time, is if this battery lasts way longer with another border router a bit closer to it. What&#8217;s so cool about thread is each device can piggy back off the other, unless if it is an &#8220;end&#8221; device such as this one, which wont forward along nearby device data.</p><h1><a href="https://amzn.to/4bR3JLv">3Pack ESP32 ESP-32S</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dre8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dre8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dre8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dre8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dre8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dre8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg" width="274" height="274.70923209663505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1162,&quot;width&quot;:1159,&quot;resizeWidth&quot;:274,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dre8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dre8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dre8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dre8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbb2c510-22b7-45ab-83bd-cf3c202afa13_1159x1162.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The main esp32 board only, with headers for easy connections. Useful extras that I keep in case I need to automate something.</p><h1><a href="https://amzn.to/4tjssxK">3pcs Relay Module</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cAe-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cAe-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cAe-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg" width="304" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1125,&quot;width&quot;:1125,&quot;resizeWidth&quot;:304,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cAe-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cAe-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5eaab087-88f0-4f0b-95a7-ecfcc549c315_1125x1125.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 you want to do similar relay logic like the waveshare earlier, these are great options to use the main esp32 board in a smaller package with a single manual relay attachment.</p><h1><a href="https://amzn.to/4se4YJK">60W Adjustable Temperature Soldering Iron Kit</a></h1><p>I <em>almost</em> fried my pool controller mainboard, so I picked up a soldering iron as the board is actually quite repairable. Luckily it ended up being okay, but I have this just in case anyway. There are times you don&#8217;t have nice screw terminals or headers where it can be useful.</p><h1><a href="https://amzn.to/47IwSWO">Linkind Matter Smart Bulbs</a></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!supb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!supb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!supb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!supb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!supb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!supb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg" width="355" height="356.7067307692308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1463,&quot;width&quot;:1456,&quot;resizeWidth&quot;:355,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!supb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!supb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!supb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!supb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5260c0a-359d-46ba-8477-b202a1e42000_1493x1500.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>Four for $40, about the same cost as the other bulbs but in the e12 format I needed. All the same stuff I said before, works great on Matter, but group control sucks without using the manufacturer apps.</p><p></p><h1>Summary</h1><p>That was a A TON of stuff. If I started everything fresh in my house, I would buy purely Matter over Thread products and esphome / esp32 devices. These interface with Home Assistant and other smart homes and do not need internet access. Hope you enjoyed the list and found some interesting smart home ideas!</p>]]></content:encoded></item><item><title><![CDATA[Vibe Coding a Wispr Clone in 20 minutes]]></title><description><![CDATA[Here&#8217;s the github repo.]]></description><link>https://zach.codes/p/vibe-coding-a-wispr-clone-in-20-minutes</link><guid isPermaLink="false">https://zach.codes/p/vibe-coding-a-wispr-clone-in-20-minutes</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 31 Mar 2026 12:29:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7rS9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here&#8217;s the <a href="https://github.com/zackify/flo">github repo</a>. </p><p>The best part of Wispr Flow&#8217;s new Android app, is the persistent bubble overlaying all apps.</p><p>Being a GrapheneOS user&#8230; I can&#8217;t get over letting them read all the text on all my screens at all times.</p><p>I asked about the Privacy Mode feature in their official subreddit:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7rS9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7rS9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 424w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 848w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 1272w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7rS9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png" width="1456" height="737" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:737,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:251411,&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://zach.codes/i/192359767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.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_!7rS9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 424w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 848w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 1272w, https://substackcdn.com/image/fetch/$s_!7rS9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e5172eb-b3ba-4715-a624-8bfd07e599a9_1526x772.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Asked a follow up&#8230; and silence</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3SJ4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3SJ4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 424w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 848w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 1272w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3SJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png" width="1456" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93109,&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://zach.codes/i/192359767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.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_!3SJ4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 424w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 848w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.png 1272w, https://substackcdn.com/image/fetch/$s_!3SJ4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab3b597-4389-4a74-bd3b-195bab204a9f_1496x464.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></figure></div><p></p><p>Even if they claim to delete everything, there&#8217;s so many sub processors getting data in these sorts of pipelines, and all I really need is local transcription.</p><p>I&#8217;ve been using <a href="https://tryvoiceink.com/">voice ink</a> on my Mac for months over Wispr, because it works more than good enough for the types of ways I use it, without any AI processing on top of the transcription. </p><p>I speak in a sentence or two at a time, not giant chunks.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>Anyways I&#8217;ve always wanted the same thing for my phone as I have on mac: local voice to text that is fast and accurate.</p><p>So I spent 20 minutes, seriously that&#8217;s about it. And now we have 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_!ckjc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ckjc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 424w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 848w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 1272w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ckjc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png" width="672" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Flo bubble overlay&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Flo bubble overlay" title="Flo bubble overlay" srcset="https://substackcdn.com/image/fetch/$s_!ckjc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 424w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 848w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 1272w, https://substackcdn.com/image/fetch/$s_!ckjc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2cc296-d4a0-4582-a908-68d192f4b604_672x628.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The part that I built is the purple bubble. It shows anytime you have text fields focused on Android. Tap and hold to transcribe, and then it pastes when you let go.</p><p>You could adjust this app to run whisper locally, however I find that to be too slow. I run whisper v3 large, which is about 1.5gb in ram on a 4070 gpu that I have.</p><p>I made the app use the Home Assistant Wyoming protocol, which is just a small layer describing how to send the voice and text info back and forth. The app lets you put in the server url and you&#8217;re all set after enabling a couple permissions.</p><p>I access this over Tailscale so it&#8217;s my private transcription service that always works even on cellular.</p><h2>Ultra fast vibe coding iterations</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!THnL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!THnL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 424w, https://substackcdn.com/image/fetch/$s_!THnL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 848w, https://substackcdn.com/image/fetch/$s_!THnL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 1272w, https://substackcdn.com/image/fetch/$s_!THnL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!THnL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png" width="1456" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:153745,&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://zach.codes/i/192359767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.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_!THnL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 424w, https://substackcdn.com/image/fetch/$s_!THnL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 848w, https://substackcdn.com/image/fetch/$s_!THnL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 1272w, https://substackcdn.com/image/fetch/$s_!THnL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0216686d-bb30-47b4-a588-a50b5262c287_1710x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The reason I was able to build this so fast? I enable wireless debugging on Android and then let claude connect and run it. First try, the speech bubble didn&#8217;t work because of a bad api request / response parsing by the code. </p><p>Since it can install right to my phone and view adb logs, I barely tell it what isn&#8217;t working and it iterates for me. </p><p>Here&#8217;s when I told it the transcript wasn&#8217;t being returned for example:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!94N5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!94N5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 424w, https://substackcdn.com/image/fetch/$s_!94N5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 848w, https://substackcdn.com/image/fetch/$s_!94N5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 1272w, https://substackcdn.com/image/fetch/$s_!94N5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!94N5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png" width="1456" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209858,&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://zach.codes/i/192359767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.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_!94N5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 424w, https://substackcdn.com/image/fetch/$s_!94N5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 848w, https://substackcdn.com/image/fetch/$s_!94N5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.png 1272w, https://substackcdn.com/image/fetch/$s_!94N5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ebea4-3fcc-492a-9030-1adda945bf89_1708x774.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>Anyways, hope you like this idea. <strong>I made the github repo auto build the apk if anyone else wants to use it. </strong></p><p>This wyoming server works perfectly with <a href="https://www.home-assistant.io/voice_control/">Home Assistant&#8217;s voice assistant</a> feature too so you can have your own Siri that has vastly smarter functionality and better natural language than most standard platforms. Those platforms also take all your voice data and have had leaks an accidental retention in the past.</p><p>From now on I only use private AI assistants for accessing all my smart home setup and data. Look out for my next posts about Home assistant and some insane AI and reverse engineering I&#8217;ve been doing soon.</p>]]></content:encoded></item><item><title><![CDATA[Streaming My Vitals To "Dr. Claw"]]></title><description><![CDATA[It beats paying my deductible...]]></description><link>https://zach.codes/p/streaming-my-vitals-to-dr-claw</link><guid isPermaLink="false">https://zach.codes/p/streaming-my-vitals-to-dr-claw</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Mon, 09 Mar 2026 12:40:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AEDj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AEDj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AEDj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 424w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 848w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 1272w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AEDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png" width="674" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:674,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:230504,&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://zach.codes/i/190170230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.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_!AEDj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 424w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 848w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 1272w, https://substackcdn.com/image/fetch/$s_!AEDj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3c4ec35-c21b-4c11-8426-ba19a6733835_674x696.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r7G5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r7G5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 424w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 848w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 1272w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r7G5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png" width="890" height="316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:890,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50810,&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://zach.codes/i/190170230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.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_!r7G5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 424w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 848w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.png 1272w, https://substackcdn.com/image/fetch/$s_!r7G5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ccf922c-786b-4ca8-98e7-ddd169880c21_890x316.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></figure></div><p></p><p>These are just a few snippets from my new AI Doctor. Okay, it&#8217;s not really a doctor but it was fun to setup nonetheless.</p><p>I created a new <a href="https://openclaw.ai/">openclaw</a> agent that is managed through discord in a specific channel, that has near live access to my heart rate, hrv, sleep data, and more. This is all data coming from a <a href="https://us.amazfit.com/products/helio-strap">Helio Strap</a>.</p><p>This company has easy to reverse engineer products, so you aren&#8217;t tied to their mobile app or cloud platform for data access.</p><p>I setup <a href="https://gadgetbridge.org/">Gadgetbridge</a> next, as I run <a href="https://grapheneos.org/">Graphene</a>. (p.s. I am super excited to see Motorola as a partner next year)</p><p>Gadgetbridge lets you automatically export a sqlite database on a schedule with all collected data. You can already see where this is going. I set this up to auto export every few hours, and a <a href="https://play.google.com/store/apps/details?id=com.termux&amp;hl=en_US">termux</a> command to sync from that exported database to my openclaw server. This server uses Tailscale so an rsync / scp doesn&#8217;t require manually setting up any ssh keys.</p><p>The sync drops the file right into the agent&#8217;s workspace.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>At this point I ran <code>openclaw agents add health</code> and then bound it to a discord channel. Funny enough the agent sometimes gets confused that health = health checks. Probably better to name your agent &#8220;doctor&#8221; but then it might think you&#8217;re asking about <code>openclaw doctor</code> LOL.</p><p>Anyways, with that in place, I tell the agent &#8220;You are my doctor, you have full access to my vitals in the sqlite database Gadgetbridge.db in your workspace directory. View the schema and then persist it to your soul and to tools.md with all the table information and your purpose&#8221;</p><p>I did setup a few more things, like asking it to give me a daily report at a set time, weekly reports, and to alert me anytime values look off or I look unhealthy.</p><p>It&#8217;s really just a for fun experiment in using openclaw&#8217;s built in tooling and playing around. I tend to use <a href="https://ollama.com/pricing">Ollama Cloud</a> for model access. I already have Claude Enterprise and Codex at work, so it keeps me up to date on how the open source models are progressing, by using them in Openclaw. </p><p>I have so many providers, I setup <a href="https://www.litellm.ai/">LiteLLM</a> so opencode can reference a model name and I can swap it out at the LiteLLM level instead of modifying opencode on the 5 different places I have it installed. &#128514;</p><p>I also give read only access to a lot of other development tools, so I can have some quick help when I&#8217;m on the go, vs dropping into an ssh session and claude code from my phone. I know Claude also has a built in way to do that now too.</p><p>I like using qwen 3.5 397b and GLM-5 through ollama cloud currently for these types of agents.</p><h2>Random Thoughts</h2><p>You can get a nice, safe openclaw setup if you only use a couple skills that you vet yourself, along with using external services in read-only mode.</p><p>I am able to work on git repos, but the agent cannot commit for me. I need to ssh in, and ssh forwarding allows the container to request signing via 1password&#8217;s cli. The container never sees the private key. I may post more about this later.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The first usable local LLM]]></title><description><![CDATA[Qwen3-coder-next is here]]></description><link>https://zach.codes/p/the-first-usable-local-llm</link><guid isPermaLink="false">https://zach.codes/p/the-first-usable-local-llm</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Mon, 23 Feb 2026 13:54:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aR-h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aR-h!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aR-h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 424w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 848w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 1272w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aR-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png" width="1456" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:321762,&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://zach.codes/i/188810657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.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_!aR-h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 424w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 848w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 1272w, https://substackcdn.com/image/fetch/$s_!aR-h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65fd2908-c636-4d5b-a240-dfff62e4ec1f_4862x2136.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I missed this launch a few weeks back and hadn&#8217;t tried it out until last week. For anyone interested, this model is 80b params, but only 3b active. On Macs and also ddr5 systems with even as little as 8-12gb VRAM it performs well enough to be usable.</p><p>This model works without tool call issues in Claude Code, Codex, and Opencode. I&#8217;ve personally validated Claude Code and <a href="https://opencode.ai/">Opencode</a> usage.</p><p>A few different things to note, the GGUF on macs performs much worse than the MLX version. If you have a Mac, install qwen3-coder-next using <a href="https://lmstudio.ai/">LM Studio</a>. If you are on another platform, use <a href="https://ollama.com/">ollama</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_!TeR2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TeR2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 424w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 848w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 1272w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TeR2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png" width="1456" height="414" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:414,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181597,&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://zach.codes/i/188810657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.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_!TeR2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 424w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 848w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.png 1272w, https://substackcdn.com/image/fetch/$s_!TeR2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fce2c8e-0030-45c6-aab4-fa96417a32b5_1838x522.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></figure></div><p>I&#8217;ve never seen a disparity this large between GGUF vs MLX before.</p><p>On low power mode on my m4 max laptop, I get around 20t/s on the GGUF under ollama. Also that version is larger, around 52gb. When I run the 4bit mlx on LM Studio, it&#8217;s only about 45gb, and I get 30+t/s with a minimal starter prompt.</p><p>Now, on full power mode I can hit almost 70t/s with the MLX:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wRPg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wRPg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 424w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 848w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 1272w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wRPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png" width="884" height="842" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/187fb138-cab6-4411-90bd-d427199aa650_884x842.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:842,&quot;width&quot;:884,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:101105,&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://zach.codes/i/188810657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.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_!wRPg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 424w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 848w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.png 1272w, https://substackcdn.com/image/fetch/$s_!wRPg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F187fb138-cab6-4411-90bd-d427199aa650_884x842.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></figure></div><p>The GGUF was only giving me around 40&#8230;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>So anyways, for anyone who didn&#8217;t care about those comparisons, on a Mac, the MLX is much faster and VERY usable if you have at least 64gb of unified memory.</p><p>I shared the low power numbers because it&#8217;s just not practical to use this on high power UNLESS you are plugged in.</p><p>If you are on the go, this is the first time a model is fast enough to use, in an agentic tool like Claude Code, with low power mode on a Mac. </p><p>If you go full power you&#8217;re going to burn 5% battery every minute or two for 30% gain in speed.</p><h2>Examples</h2><p>Ok, so I installed and then uninstalled openclaw on my machine lately. After, every terminal opening referenced a file that no longer existed. This should be super easy to fix, but let&#8217;s give it to qwen3-coder-next and see how fast it can figure out a solution:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iGpU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iGpU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 424w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 848w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iGpU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png" width="1456" height="1089" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1089,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:550504,&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://zach.codes/i/188810657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.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_!iGpU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 424w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 848w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.png 1272w, https://substackcdn.com/image/fetch/$s_!iGpU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51289a0f-b626-422c-8f2d-d3bb1e4356bf_1602x1198.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>I told it about an an error I get on terminal start after removing a package, and then just pasted the full error line I get.</p><p>34s later it correctly fixed it and this is on low power mode. This is huge because these tools inject a starter prompt that can take a while to process locally.</p><p>Yes this was a super basic example, and here&#8217;s another basic one, but this time from claude code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!enFM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!enFM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 424w, https://substackcdn.com/image/fetch/$s_!enFM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 848w, https://substackcdn.com/image/fetch/$s_!enFM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 1272w, https://substackcdn.com/image/fetch/$s_!enFM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!enFM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png" width="1456" height="714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:714,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:312156,&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://zach.codes/i/188810657?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.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_!enFM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 424w, https://substackcdn.com/image/fetch/$s_!enFM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 848w, https://substackcdn.com/image/fetch/$s_!enFM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.png 1272w, https://substackcdn.com/image/fetch/$s_!enFM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa818078d-3a3c-4af3-85b9-aca9be06d130_1598x784.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>I just had a file open in my editor and then said remove the props arg. Even though this is basic, in the past these tools would break when running in these agentic tools, constantly. Tool call malformed errors were notorious.</p><p>Unfortunately I don&#8217;t have many more examples to share, the rest are in a codebase I can&#8217;t share. I will say if I am quite specific about the function names and provide single step requests, it works great locally and within a minute or two for a full result.</p><p>It&#8217;s also a great way to explore a codebase and find things that you may not be familiar with. Asking where things are or what endpoints are hit by a particular UI element works well.</p><p>This is NOT claude opus 4.6. This is much smaller but still highly capable. I would use opencode as much as you can, and use plan mode for codebase exploring and explanations of how things are setup, as the prompt is a bit smaller than &#8220;build&#8221; mode.</p><p>If you really want to use in Claude Code you CAN, however I find the initial prompt speed isn&#8217;t worth it vs using opencode. Make sure you disable as many MCPs as possible if you&#8217;re wanting the fastest possible speed.</p><h2>Ollama cloud</h2><p>If you want to run this model faster or you don&#8217;t have the hardware requirements to run it well, I recommend checking out ollama cloud. The coolest part of it is this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">ollama launch claude --model qwen3-coder-next:cloud</code></pre></div><p>If I add <code>:cloud</code> on the end of a model, it&#8217;s now running on their cloud platform at a faster speed. If I need privacy or bad connection, I can run that same thing again with <code>:cloud</code> removed and have the same model fully local.</p><p>Finally, if you have an Nvidia GPU with DDR5 ram that&#8217;s running at 6000mhz, you should be able to get 20+ tokens/s there as well. This is what makes this model such a big deal, this level of intelligence hasn&#8217;t been seen in something that can truly run at a usable speed on consumer hardware.</p><p>If you try it out, let me know what you think!</p>]]></content:encoded></item><item><title><![CDATA[Permanently Bypass Streaming App Sharing Rules in 10 minutes 🤯]]></title><description><![CDATA[Share Netflix and more with friends and family as if they were inside your own house, you'll never be caught and it's guaranteed to work forever]]></description><link>https://zach.codes/p/permanently-bypass-streaming-app</link><guid isPermaLink="false">https://zach.codes/p/permanently-bypass-streaming-app</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 16 Dec 2025 13:29:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!AWrC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AWrC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AWrC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AWrC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AWrC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!AWrC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0530fdf1-9e2b-4848-a535-fde47cc14038_1024x608.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"></figcaption></figure></div><h2>Step 1</h2><p>It always starts with <a href="https://tailscale.com">tailscale</a>&#8230; Without it, this would never be something you can do within 10 minutes, unless all you do is manually configure wireguard every day &#129315;</p><h2>Step 2: Apple TV or Travel Router</h2><p>Sign up for tailscale, then make sure you have an Apple TV.</p><p>If you do not have one, or you have certain streaming apps that check for the device having an active VPN connection (I am in this situation) then you need to buy <a href="https://www.amazon.com/GL-iNet-GL-MT3000-Pocket-Sized-Wireless-Gigabit/dp/B0BPSGJN7T?hydadcr=24109_13516765&amp;sr=8-1">one of these</a> travel routers. I bought one of these for my parents during Black Friday week for about $60.</p><p><strong>Don&#8217;t buy any of the cheaper ones as they can&#8217;t handle running tailscale.</strong></p><p>Take a look at GL.iNet&#8217;s <a href="https://docs.gl-inet.com/router/en/4/interface_guide/tailscale/">supported device list for tailscale</a> if you want to try a different model. </p><p>Also side note, these things are awesome for a lot of reasons, I have a Slate 7 for myself, MLO is cool, but I wish it also had 6ghz!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><h2>Step 3: Exit Node</h2><p>Now that you have a travel router or Apple TV device, the next step is to run an exit node at your house. This is going to route all traffic from your travel router through it, no matter where it&#8217;s actually located. This is how we bypass restrictions against sharing accounts, because all of your devices will exit through your home IP, that is the check most services are making, and it will appear like another device in your home is streaming.</p><p><strong>You can use a cheap raspberry pi device, or even your router, if you have something that runs linux chances are tailscale can run on it.</strong></p><p>Otherwise, feel free to use an old windows or mac computer. After installing tailsacle all you need to do is check one box in the settings tab:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T17g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T17g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 424w, https://substackcdn.com/image/fetch/$s_!T17g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 848w, https://substackcdn.com/image/fetch/$s_!T17g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 1272w, https://substackcdn.com/image/fetch/$s_!T17g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T17g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png" width="1050" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:1050,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75712,&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://zach.codes/i/180606230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.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_!T17g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 424w, https://substackcdn.com/image/fetch/$s_!T17g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 848w, https://substackcdn.com/image/fetch/$s_!T17g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 1272w, https://substackcdn.com/image/fetch/$s_!T17g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59cd8ba-c83a-4166-8d5e-70b5d8d7d8bc_1050x452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you have a GL.iNet device, login to the interface and go to the Tailscale tab under applications:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d8Ni!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d8Ni!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 424w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 848w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 1272w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d8Ni!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png" width="1456" height="1280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1280,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315378,&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://zach.codes/i/180606230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.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_!d8Ni!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 424w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 848w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.png 1272w, https://substackcdn.com/image/fetch/$s_!d8Ni!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7fee511a-6bd9-4ebf-b5ca-7389d5f8f7ea_1848x1624.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>When you first come to this, you toggle to enable tailscale, you click the link and login, and the device is configured. Then you click the refresh icon under &#8220;Custom Exit Node&#8221; and select the node we started running in the prior step.</p><p>First time after connecting, you need to go to your tailscale dashboard and click on your device and accept the subnet routes from 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_!QIkl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QIkl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 424w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 848w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 1272w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QIkl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png" width="1134" height="404" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:404,&quot;width&quot;:1134,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57303,&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://zach.codes/i/180606230?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.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_!QIkl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 424w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 848w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.png 1272w, https://substackcdn.com/image/fetch/$s_!QIkl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F479292cc-079d-4e54-ac46-092fbfbeaf81_1134x404.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>I like to be extra secure, <strong>so I actually tag this device in tailscale, set a static IP on the device connected to its ethernet port, and then only allow that single IP to use exit nodes in my network. </strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><p>That means if they connect another device through it, it can&#8217;t go through tailscale, and in addition, that one allowed device can use exit nodes, but will be unable to ping or access any other device in the tailnet.</p><p>This goes beyond the &#8220;10 minutes&#8221; of this tutorial, but I wanted to share it. Tailscale has added ACL tests that validate your firewall rules as well which has been super helpful. Anytime I add a new rule I add a test right after to ensure what I wanted to allow is correctly applied.</p><h2>Step 4: Profit</h2><p>It really is that simple, and if you have an Apple TV&#8230; it&#8217;s even simpler. Install the Tailscale app from the App Store and then scan the QR code displayed to connect. </p><p>Enable your exit node and it&#8217;ll route everything through your home connection.</p><p>I use a travel router and did these exact steps. All I had to tell my family member was &#8220;unplug the ethernet cable from your apple tv, put it into this. And then use the other ethernet port to connect to the apple tv.&#8221; They actually couldn&#8217;t believe it was that easy and were surprised when the app they opened just started working, because it that one only checks your IP, doesn&#8217;t even require a login.</p><p>I couldn&#8217;t let them use the Apple TV directly because the streaming service checks for VPN apps running on device.</p><div><hr></div><p>Seriously this is getting so easy, a gen z kid that only knows how to use tiktok can do it.<strong> Set this up and split the cost of streaming services without having to worry about getting cut off.</strong></p><h2>One downside&#8230;</h2><p>The worst part is that if you have a service on a crappy ISP like I do&#8230; where you only get 30mbps upload speeds, you cant give this out to more than 1-2 people or your upload speed is going to be saturated and not work well. </p><p>Thankfully I have multiple ISPs and keep guest networks and this type of stuff on the bad connection, but some of my streaming services are tied to that ISP&#8217;s IP so i have to use it for this as well.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Replacing Developer Docs with Claude’s Plugin Marketplace ]]></title><description><![CDATA[We don&#8217;t need developer documentation anymore, and you&#8217;ll be more productive than ever &#129327;]]></description><link>https://zach.codes/p/replacing-developer-docs-with-claudes</link><guid isPermaLink="false">https://zach.codes/p/replacing-developer-docs-with-claudes</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 14 Oct 2025 12:55:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Q9s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Q9s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Q9s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 424w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 848w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 1272w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Q9s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp" width="1456" height="785" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:785,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Product screenshot showing Claude Code plugin menu&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Product screenshot showing Claude Code plugin menu" title="Product screenshot showing Claude Code plugin menu" srcset="https://substackcdn.com/image/fetch/$s_!9Q9s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 424w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 848w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 1272w, https://substackcdn.com/image/fetch/$s_!9Q9s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff965a007-070c-4dbf-81eb-75618b207398_1920x1035.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Last week Anthropic released a feature that may lead to a huge leveling up across your development team. </strong></p><p>If you have multiple (or large) codebases with many individual systems or processes, it can be difficult to onramp a new dev. If you have one dev who needs to work on an area they never worked in, in the past this may have required discussions with other team members, or time spent clicking through and understanding what&#8217;s going on.</p><p>If your team is fast moving, there probably isn&#8217;t much documentation either.</p><h2>Enter Claude Plugins</h2><p><a href="https://www.anthropic.com/news/claude-code-plugins">Claude Code Plugins</a> now allow you to create a github repository with (nearly) hot swappable features to share with your team. <em>I say nearly, because at this current time you have to restart &#8220;claude&#8221; in your terminal when enabling or disabling any plugins.</em></p><p>This is a big deal, because it&#8217;s already been made clear that some team members have agents and commands I don&#8217;t want or need to use. I wouldn&#8217;t want to waste my context window having these enabled either.</p><p>The new plugin marketplace feature solves these problems, and I think it enables instant context sharing across your dev team, with the most minor amount of time spent documenting areas of your codebase.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>How it works</h2><p>All you have to do is create a new github repository, and add a couple json files to get started</p><blockquote><p>To host a marketplace, all you need is a git repository, GitHub repository, or URL with a properly formatted <code>.claude-plugin/marketplace.json</code> file. See our documentation for details.</p><p>To use plugins from a marketplace, run <code>/plugin marketplace add user-or-org/repo-name</code>, then browse and install plugins using the <code>/plugin</code> menu.</p></blockquote><h2>A powerful example</h2><p>Currently at work, there is a new pipeline we made to process a new piece of logic that runs hundreds of times per second. Another dev on the team was assigned a task on this feature that was originally made mostly by myself, with this dev not even looking at any of the code until now.</p><p>This feature requires a few environment changes, and preparation commands in order to start working on it locally.</p><p>In the past, I would need to write this up, explain each step to each team member, and they may still have more questions about how different parts work.</p><p>Instead, I created a new subagent definition in markdown, this is about 1 paragraph with some bullet points.</p><p><strong>I know what you&#8217;re already thinking</strong>&#8230; if you did that, why not explain and send this to the other developers?</p><p>Here&#8217;s a few reasons why, as demonstrated by sharing parts of this subagent definition.</p><h2>Hot Swappable Subagents</h2><p>The definition for this agent starts with:</p><p>&#8220;You are an expert in this area of the codebase, ensure you read and understand it fully &lt;path to feature&gt;&#8221;</p><p>This alone isn&#8217;t something I could say to a team member. To Claude however, it is able to read and pull all of this feature into its context, ready to go for any questions about how it works after.</p><p>In addition, I described in a bullet list, the preparation commands that need to be ran to setup the environment, and I have the subagent to tell the user what the final command is to start using this pipeline and to also offer help after running the required setup commands.</p><h2>Slash Commands</h2><p>The last step, I register a slash command like &#8220;/run-pipeline&#8221; inside this feature&#8217;s plugin. This command invokes the subagent directly without the developer having to know its name. </p><h2>In Practice</h2><p>Now that we have a plugin marketplace for our team, if someone needs to work on this feature, all I have to tell them to do is install our marketplace in their claude code, if they haven&#8217;t already. As easy as `<code>/plugin marketplace add user-or-org/repo-name`</code>as mentioned earlier. If your computer has access to the org / repo on github it&#8217;s able to pull it in immediately.</p><p>Next, I can mention, &#8220;enable the feature X plugin from our marketplace and run the /start-x command, it&#8217;ll configure everything and provide you all the context&#8221;</p><p>The developer will be given a recap of the step required to run the code, and be given a chance to ask any questions about the code at this point.</p><h2>Summary</h2><p>This feature seems small but I think it&#8217;s going to lead to a paradigm shift of internal developer communication and documentation. When building a large feature, it takes all of 10 minutes to define an agent and provide the necessary testing steps, file locations, and commands needed. <strong>The rest of the team can enable this feature plugin on the fly anytime to gain context, without extra meetings, hours spent reading code manually, or other slow processes.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From $3K/Month to $0: Why We Ditched Auth0 and Built Our Own Authentication]]></title><description><![CDATA[Finally had an excuse to do it: kill our Auth0 subscription &#9989;]]></description><link>https://zach.codes/p/from-3kmonth-to-0-why-we-ditched</link><guid isPermaLink="false">https://zach.codes/p/from-3kmonth-to-0-why-we-ditched</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Wed, 03 Sep 2025 13:31:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!N11v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N11v!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N11v!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!N11v!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!N11v!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!N11v!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N11v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N11v!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!N11v!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!N11v!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!N11v!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5c23282-2630-4a83-91b0-1f1c6daf6571_1024x608.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"></figcaption></figure></div><p>There's a secret that so many providers don&#8217;t want you to know.</p><p>You really can roll your own auth, and that doesn't have to mean not following standards or being opened up to new vulnerabilities. </p><p>At my current job, this was a discussion we had about a year ago. Originally there was a choice to use email logins and pay for a service called Magic Link. </p><p>It ended up costing too much, and the team decided to move it to Auth0. </p><p>At which point we started entering a period of trying to cut costs. One of my first suggestions was, "Let's cut Auth0 and do it in-house." </p><p>This wasn&#8217;t a new decision for me. I've always felt like you shouldn't have to pay for auth. There are standard ways to do this without paying per user or per login. </p><h2>Auth0 just uses SendGrid for emails</h2><p>I tried to make this point clear, that Auth0 just uses SendGrid, and we can still use SendGrid ourselves. Auth0 isn't doing anything special to ensure magic email link delivery. </p><p>They&#8217;re just generating a time based one time code that gets emailed to the recipient, this type of hash logic can be done easily in any language.</p><p>At the time, <a href="https://better-auth.com">better-auth</a> did not exist. If I were doing this today, I would much rather use their library, as it supports so many integrations out of the box with a simple abstraction.</p><p>Instead, we implemented an OTP very similarly to <a href="https://github.com/pyauth/pyotp">this library</a>, if you&#8217;re interested in doing this yourself.</p><p></p><h2>How long did it take us</h2><p>It didn't take more than a week to fully replace Auth0. That's a testament to the way we're using it in the first place. We don't need a lot of their features. We're just using Auth0 to take an email and send a link, click the link, and now be logged in, and also for social logins. One click Google, Microsoft, and other OAuth login flows.</p><p>It kind of boggles my mind that people would pay per login for these features, especially with social logins that require registering oauth clients manually either way you do it.  </p><p>In the next section, I'll dive into a few things we specifically used to replace it, and also comment on some of the common gotchas people constantly bring up trying to say you shouldn&#8217;t do this.</p><p>And just remember, we've been doing this for an entire year. Saving the company nearly $30,000 and it's been working perfectly. </p>
      <p>
          <a href="https://zach.codes/p/from-3kmonth-to-0-why-we-ditched">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[From Subreddits to Speech: A Reddit Engineer's AI Side Project]]></title><description><![CDATA[Discussing the intersection of voice agents and AI with Ryan and Marcus.]]></description><link>https://zach.codes/p/alcamine-and-ai-with-marcus-wood</link><guid isPermaLink="false">https://zach.codes/p/alcamine-and-ai-with-marcus-wood</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Wed, 20 Aug 2025 12:04:29 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/171300237/4bb0fe45d3c0f85e753fc43829d5384a.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>This week we check out <a href="https://alcamine.com/">alcamine</a>, an awesome voice service utilizing cutting edge AI technology to create custom voice agents. Co-founded by Marcus Wood, an Engineer working at Reddit.</p><h2>Summary</h2><p>In this episode of the podcast,  Zach speaks with Marcus, a developer at Reddit, about the intersection of AI and voice technology. They discuss Marcus's side project, a voice agent designed for various applications, including customer feedback and gaming. The conversation explores the challenges and opportunities in voice technology, the importance of community engagement in game development, and the evolving landscape of AI tools that facilitate learning and productivity. Marcus shares insights on building in public, the role of Reddit's developer platform, and the future prospects of voice agents in business and everyday tasks.</p><h2>Takeaways</h2><p>Marcus is an engineer at Reddit working on AI and voice technology.</p><p>He has developed a voice agent for various applications.</p><p>The voice agent aims to simplify customer feedback processes.</p><p>Voice technology can enhance user experiences in gaming.</p><p>Community feedback is crucial for developers to improve their products.</p><p>AI tools can significantly reduce the time spent on tasks.</p><p>Voice is becoming a preferred method of communication.</p><p>Reddit's developer platform allows for game development and community engagement.</p><p>The future of voice technology looks promising with rapid advancements.</p><p>Learning through AI tools is more accessible than ever.</p><h2>Chapters </h2><p>00:00 Introduction to AI and Voice Agents</p><p>02:57 Building a Voice Agent for Customer Feedback</p><p>05:40 Exploring Use Cases for Voice Technology</p><p>08:28 Challenges in Voice Technology and AI</p><p>10:52 The Future of Voice Agents in Business</p><p>13:48 Voice Technology in Gaming and Community Engagement</p><p>16:32 AI Tools and Learning Opportunities</p><p>19:26 The Role of AI in Everyday Tasks</p><p>22:09 Reddit's Developer Platform and AI Integration</p><p>25:24 Feedback and Community in Game Development</p><p>28:02 The Evolution of AI and Voice Technology</p><p>30:53 Conclusion and Future Prospects</p>]]></content:encoded></item><item><title><![CDATA[Fake It Till You Make It: Blockchain Apps Aren't Actually Decentralized]]></title><description><![CDATA[I've been deep in the crypto rabbit hole... between the massive IPOs, projects raising quarter-billion rounds, and an idea that's been keeping me up at night.]]></description><link>https://zach.codes/p/fake-it-till-you-make-it-blockchain</link><guid isPermaLink="false">https://zach.codes/p/fake-it-till-you-make-it-blockchain</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 05 Aug 2025 12:30:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dzxA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dzxA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dzxA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dzxA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37d585df-faeb-423f-86d5-c384a365df32_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dzxA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!dzxA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37d585df-faeb-423f-86d5-c384a365df32_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve never played around with crypto&#8230;. a lot of these terms will confuse you. I&#8217;ll do my best to provide links if you&#8217;re interested in diving in to any of the things I mention.</p><p>Lately I have been playing around with crypto again. Back in 2015 I started mining ethereum and gave up too early. I never got into building smart contracts and actual decentralized apps, but I may be making a small one soon, just to learn.</p><p>As I was catching up on many different things, I started to realize just how centralized all the big &#8220;DeFi&#8221; apps really are. I&#8217;m shocked there isn&#8217;t more being done here to make some of them truly on-chain completely, or at least more agnostic in letting users control off chain actions affecting these applications.</p><p>It&#8217;s just unfortunate many users think what they&#8217;re using is either untrackable, or fully decentralized.</p><h1>Uniswap</h1><p>Let&#8217;s start with <a href="https://app.uniswap.org/?gad_campaignid=21376785996&amp;gbraid=0AAAAAqyUpDM58DwbgEXyv7mQ1zf491qfb">uniswap</a>.</p><p>It&#8217;s a great idea, a decentralized crypto exchange. The problem starts immediately though. </p><p>There has to be some way to know the current exchange rates offered by the platform and also other exchanges. </p><p>When you load the site, it makes graphql requests to their own *centralized* server in order to get information.</p><p>You also see many calls that track your every move:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bPQ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bPQ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 424w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 848w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 1272w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bPQ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png" width="814" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:814,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93913,&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://zach.codes/i/169795906?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.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_!bPQ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 424w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 848w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.png 1272w, https://substackcdn.com/image/fetch/$s_!bPQ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc05b55b-10e5-4be9-ae16-0fe8623e79ef_814x416.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>Here&#8217;s one sending all of my device info with every action taking place.</p><p>Feels a lot like a normal website to me. And an invasive one at that&#8230;</p><p>At least they are <a href="https://blog.uniswap.org/uniswap-interface-ipfs">hosting it on IPFS</a>, which is a distributed website hosting spec. It&#8217;s acutally really neat too. The problem I see though is its oracle outreach from the interface for pricing. </p><p>I haven&#8217;t had enough time to config if their interface will still allow smart contract execution if one of their oracle systems is down.</p><p>Let&#8217;s take a look at another one!</p><h1>Polymarket</h1><p>Alright, neat. Inspecting the page, I see direct calls to the blockchain. Decentralized right?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ApZy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ApZy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 424w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 848w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 1272w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ApZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png" width="1456" height="367" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:367,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82611,&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://zach.codes/i/169795906?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.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_!ApZy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 424w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 848w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.png 1272w, https://substackcdn.com/image/fetch/$s_!ApZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4cf898e0-082e-4803-bcb2-8be0b98c183b_1562x394.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>Well&#8230; sort of. These calls are sent to <a href="https://www.alchemy.com/docs/reference/node-api-overview">alchemy</a>, a blockchain services provider. What happens if they do a deployment and mess up their node, suddenly polymarket is down (most likely anyway)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I was wondering, why don&#8217;t these services attempt to direct connect to various validators?</p><blockquote><p>P.S. I am not an expert AT ALL in this space, just someone interested in trying to make a fully, truly, decentralized app soon, and finding a lot of issues with current products.</p></blockquote><p>Granted, they may not market themselves as fully decentralized, but I&#8217;m sure that&#8217;s how most people perceive them.</p><p>So I asked Claude, can&#8217;t I direct connect to a validator? Not always. </p><p>It makes sense, most don&#8217;t want to run the rpc endpoints, because it will use a lot more resources, and these validators already require a massive amount of compute.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5aZp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5aZp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 424w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 848w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 1272w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5aZp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png" width="1436" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a881bf2e-0048-46f3-b541-865ee002846b_1436x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:1436,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210416,&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://zach.codes/i/169795906?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.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_!5aZp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 424w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 848w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.png 1272w, https://substackcdn.com/image/fetch/$s_!5aZp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa881bf2e-0048-46f3-b541-865ee002846b_1436x710.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>There are just so many points of failure, but for something like polymarket, you must have off chain systems that confirm what the result of the different markets are.</p><p>This puts all the trust in a platform that has already had legal battles in the past. I&#8217;d be worried about betting on something many months away.</p><h1>True Decentralization</h1><p>Let&#8217;s start with just polymarket. It could be better if they offered a download link of their frontend application&#8230;. Oh wait, they&#8217;re using server side nextjs&#8230;. so they can&#8217;t. IPFS is perfect for client side websites that connect to the blockchain, because IPFS can only handle static files.</p><h2>Validator Choices</h2><p>I would expect these types of apps to have a settings toggle that lets you put in a different validator endpoint. If one is down, you can swap, this would be a great option to have. Otherwise you&#8217;re connecting to a single point that may proxy behind the scenes, or it could have an outage at any time with no way to use the application.</p><p>If they don&#8217;t want to go that far, at least an internal list of validators to loop through if there was a connection problem.</p><p>I&#8217;d rather be able to do this, vs having to store every smart contract address and know the exact arguments to call in case I need to withdraw or perform other actions during a site issue.</p><h1>Downloadable</h1><p>If their domain is seized, you&#8217;re already pretty screwed, unless you have saved network logs and know what rpc calls to make to see anything on the system.</p><p>This is step 1 of decentralizing these apps, at a bare minimum, I believe they should be html and js frontends, that are downloadable and run outside of their company&#8217;s domains.</p><p>AAVE, and Uniswap are good at this, although as I mentioned prior, still concerning how many 3rd party api endpoints are called from these frontends. Leaving me to wonder if they will work if certain things break.</p><h1>Open Source Consensus</h1><p>Imagine Polymarket showing who the market validator is. In this case, it&#8217;s always polymarket. Let the community pay in crypto to be listed as a validator, track if they&#8217;re grading outcomes correctly, and let members decide who gets to validate their bets.</p><p>This has a lot of possible problems, but ultimately you need to trust someone. I&#8217;m suggesting to let users choose who to trust and make it uncontrollable by a single entity.</p><h1>Failsafes</h1><p>If I chose to let polymarket grade my bet, and pick the outcome after the event happened, and polymarket gets shutdown. There should be a smart contract I can execute that will refund me after the end date of the market. This would provide relief if the platform is shut down.</p><p>When I use something on a blockchain, I want to know if everything goes bad (except for actual nodes all being taken offline) I want to know what I am interacting with is still safe.</p><h2>Wallet functionality</h2><p>Wallets need to be able to ingest smart contract calls. I should be able to add th contract above (refunding after market issues), to my wallet, letting me interact with contracts in case the domains are no longer available, or I forget about them later.</p><p>I shouldn&#8217;t have to review the code myself.</p><h1>No tracking</h1><p>Stop tracking usage, and build in your economics through transaction fees on the platform. Build everything you can into your smart contract, so you don&#8217;t need a graphql endpoint to do half the work&#8230;</p><h1>Wrap up</h1><p>Hope you enjoyed these ramblings, I believe decentralized apps can be made much better, but the truth is, these companies don&#8217;t want them to be. A lot of them are making millions a month under a false sense of decentralization. </p><p>Building apps fully on chain is incredibly hard, most aren&#8217;t going that far because they want to keep more control to themselves, giving us many single points of failure in the end.</p><p>I&#8217;m not sure how useful the technology will ultimately be many years from now. Currencies may take off more than the applications. </p><p>Only time will tell&#8230;</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Biology To Vibe Coding]]></title><description><![CDATA[We meet with a PhD candidate in Biology to hear how they're coding]]></description><link>https://zach.codes/p/from-biology-to-vibe-coding</link><guid isPermaLink="false">https://zach.codes/p/from-biology-to-vibe-coding</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Fri, 01 Aug 2025 12:10:03 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/166186868/235eba769c49c9117d62c0855c764143.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>A friend working in biology recently approached me with an app idea. What caught my attention was that within two weeks, despite having zero coding experience, he had a working prototype. I was curious enough to sit down with him and dig into how he pulled it off, and what it revealed about how AI is transforming biological research.</p><p><em>It appears they use &#8230;</em></p>
      <p>
          <a href="https://zach.codes/p/from-biology-to-vibe-coding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Context Engineering & ToolFront]]></title><description><![CDATA[If you want to pull information from databases using natural language, this is the episode for you.]]></description><link>https://zach.codes/p/context-engineering-and-toolfront</link><guid isPermaLink="false">https://zach.codes/p/context-engineering-and-toolfront</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 22 Jul 2025 11:03:07 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/168415759/c699e56a13d1b62039a8defc3fb1718f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>You can find toolfront <a href="https://github.com/kruskal-labs/toolfront">on github</a>. Today we meet with a cofounder of the project and discuss a lot of interesting things around database querying and how to efficiently build MCP tools for large language models.</p><h2>Summary</h2><p>In this conversation, Zach and Esteban discuss the integration of Docker and DuckDB in ToolFront, focusing on data discovery and querying &#8230;</p>
      <p>
          <a href="https://zach.codes/p/context-engineering-and-toolfront">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Every AI-Powered Development Environment I Could Find]]></title><description><![CDATA[There&#8217;s too many to keep track of &#128518;]]></description><link>https://zach.codes/p/every-ai-powered-development-environment</link><guid isPermaLink="false">https://zach.codes/p/every-ai-powered-development-environment</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Fri, 18 Jul 2025 13:31:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/29623049-cc7c-486a-a6e8-e1321bcc1058_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I_TN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I_TN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I_TN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I_TN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!I_TN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f3a482b-dc59-4d24-be93-f9b6e9cd409e_1024x608.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>I wrote this a few weeks back and there hasn't been a perfect time to release it, as I've been working on podcasts and other content, and I don't want to blow everyone up with too many emails per week. So I hope you enjoy this and let me know if there's any other editors I should add. </em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Zed</h2><p><a href="https://zed.dev/">Website</a></p><p>Zed is actually one of my favorite alternative code editors, mainly because it's not just another VSCode fork and it's written in Rust. So it actually feels a little bit snappier and unique. And I like what they've done with the design. </p><p>I like that it supports local models. They have a hosted version similar to Cursor. They also have their own proprietary autocomplete model, which is pretty far behind Cursors, unfortunately. You'll see below when I get to cursor why and how it's so much better than all the current alternatives. </p><p>If you want to support an open-source editor who's trying to make money by charging for premium model access, Zed is a good one. Unlike Cursor, which is fully proprietary, Zed's editor is open source.</p><p>It also gets high praises from users on Reddit:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YA5U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YA5U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 424w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 848w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 1272w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YA5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png" width="1179" height="612" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:612,&quot;width&quot;:1179,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100456,&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://zach.codes/i/165235738?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.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_!YA5U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 424w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 848w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 1272w, https://substackcdn.com/image/fetch/$s_!YA5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8d711f2-3f1e-4798-bc5f-9a4fd1ce0632_1179x612.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The speed of the editor is really nice, but It&#8217;s still early days for Zed. </p><p>I noticed that I cannot override a local model&#8217;s ability to enable tool use. This was a huge pain, and most of the value of using a local model for agent mode, required tool use. Most of these editors all have some issues that irk me to some degree. Even after manually adding it to the settings config for my model, it was still disabled.</p><p>A small quirk which is to be expected in something so new. Give it a try and let me know what you think!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/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://zach.codes/subscribe?"><span>Subscribe now</span></a></p><h2>Void</h2><p><a href="https://voideditor.com/">Website</a></p><p>Void is a pretty nice VSCode fork. It's very simple, the auto-complete is basic, the agent mode is what you'd expect from Cursor, Zed, or Continue, or any of the other ones that you may have tried. </p><p>It's really what you would think VSCode would have been had it started out after AI was a thing. </p><p>It's nice that everything just works. If you have Olah or LM Studio or another local model language server running on your computer, there is no configuration. Just opening Void immediately sees that and you can choose any of those models for a chat or an auto-complete session. </p><p>It's worth noting that autocomplete is in beta, and again it's just basic autocomplete. Nothing compared to the state of the art that exists in Cursor. </p><p><strong>Void is probably the most promising newer entry into the open source space</strong>. If they can iterate and catch up, I can see it being great. Even though it&#8217;s a little bare bones now, it just works. There were no issues.</p><p>Zed and Void are the most exciting ones, with Void being slightly more at this time, because they aren&#8217;t pushing for paid versions of anything yet, which I hope it stays that way.</p><h2>Open Hands</h2><p><a href="https://github.com/All-Hands-AI/OpenHands">Website</a></p><p>I used this one for the first time when <a href="https://mistral.ai/news/devstral">Devstral</a> came out a couple weeks ago.</p><p>This one is unique because it&#8217;s really a layer ON TOP of an IDE. It includes VS Code inside of it.</p><p>It&#8217;s really meant to fire off a lot of AI tasks all at once. For each task you get your own  isolated VS Code environment you can use to test and run the code before pushing it up to your repos.</p><p>It&#8217;s a really neat idea that negates the need to context switch between editors constantly as you&#8217;re trying to validate work you had AI do for you.</p><h2>Cursor </h2><p><a href="https://www.cursor.com/">Website</a></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cbd73a1c-ccd4-44b6-a0e3-ba13f82bc91b&quot;,&quot;duration&quot;:null}"></div><p>You've heard me talk a lot about Cursor in the past reviews. The biggest thing is the video above. The tab autocomplete is just incredible. Not only will it jump around and immediately realize that you want to import certain things that don't exist, but it will also be really intelligent in other ways.</p><p>If you're editing something that has something similar in the file, it will suggest to just tab complete both of those sections together. It's amazing what they've been able to do from what little I understand. They have a special model that will pull in tons of context all from your codebase and really understand everything you're trying to do. It's been specifically trained on how people jump around in their editor. </p><p>Cursor's agent mode for a long time was a ways off from what Cline and Roo code were, but it's since improved a lot and to be honest it's a great value for the $20/month that it costs. </p><p>I would have to say after every AI ide and extension that I've tried over the past year, I always come back to Cursor's autocomplete. Whether I use a different editor to do agent work, I will always use Cursors tab autocomplete. And I cannot wait for the day that open source has an autocomplete that's on par with it. </p><p>I have to give Cursor a 9.5/10, and honestly, I would give it a 10/10 if they weren't completely closed source. </p><h2>Windsurf</h2><p><a href="https://windsurf.com/">Website</a></p><p>This one I do not have much experience with. It is nearly identical to cursor which I have use a lot more. Their tab autocomplete is a level up from the open source options but I still find cursor&#8217;s ux and abilities better.</p><p>Which is crazy to me that it was just <a href="https://devops.com/openai-acquires-windsurf-for-3-billion/">acquired by Open AI for 3 BILLION</a>.</p><p>Edit: that deal fell through actually  &#128556;</p><p>In such a crowded market I can&#8217;t believe they paid so much for this company. They must know something I don&#8217;t or want to own as much of the AI market as possible.</p><h2>VS Code + Continue </h2><p><a href="https://www.continue.dev/">Website</a></p><p>If this was a year ago, I would say Cursor and Continue are pretty similar, and it's pretty awesome what Continue is doing for the open source community. But lately, it's fallen way behind. I found bugs when I try to use it. It kind of glitches when it tries to apply changes from what an agent gives me, and I choose the apply button. Sometimes the red highlights in VSCode will stay around even after I hit accept. It's little things like that, and the unpolished nature of Continue that it's just fallen off a lot more than Cursor, whereas Cursor has really beautiful UI, really nice loading indicators, and everything just looks like perfection. </p><p>It's worth noting that Mistral just made a fork of Continue for their enterprise offering called Mistral Code (insert link), but nobody's able to try it without enterprise access, so I can't comment on it.</p><h2>Claude Code</h2><p><a href="https://www.anthropic.com/claude-code">Website</a></p><p>I've been using Claude code non-stop since I paid for the Max Plan two weeks ago.</p><p>The agentic loop that Claude is able to do is superior to every other agent mode currently. </p><p>Whenever it encounters a mistake or an error, it seems to always find a way around it and continue working through what it needs to. </p><p>This isn't really an IDE, but I felt like I had to add it just because it's so similar to everything else, and it really can become its own IDE. </p><p>Sounds weird to say when it's just a command line application. But it's able to do so much with such a simple interface. </p><p>I'm able to make reproducible prompts, which handles so many complex tasks I don't even need to jump around in my editor anymore. </p><p>You can see more of my thoughts about how I&#8217;m using it in <a href="https://zach.codes/p/mental-refactoring-for-the-ai-age">my post last week about shifting your mindset to use AI</a>.</p><h2>VS Code + Cline</h2><p>I wasn't going to add an entry for this one, but I felt like I had to after writing everything else. </p><p>Visual Studio Code by itself and now I guess with Copilot which is open source, so you can kind of consider those one in the same. In addition to that, Cline is pretty powerful on its own. </p><p>If you're stuck on VSCode because you've been using it for a very long time, just install Cline. The agent mode is pretty amazing if you're trying to stick to what you know. </p><p>I love that you can use any model provider. Local models work as well, especially with Devstral, and you can just get a lot out of it without paying anyone anything. </p><h2>Kilo Code</h2><p>https://kilocode.ai/?rdt_cid=5199116422869239961&amp;utm_campaign=v1_en_aicoding&amp;utm_medium=cpc&amp;utm_source=reddit</p><p>This one keeps appearing on advertisements constantly, although I haven&#8217;t had a chance to test it out yet.</p><h2>AIDE</h2><p>This one seems to be the first one to lose the war of the Aiditors (see what I did there &#128518;) </p><p>It&#8217;s been officially sunset as of a few months ago I only included it because I had used it once, went to go see what&#8217;s new, and saw the repository is archived.</p><h2>That&#8217;s all for now</h2><p>I hope to see Void and continue keep striving forward. </p><p>If Microsoft doesn&#8217;t level up the newly open sourced GitHub copilot extension in VS Code, I can see both of those getting bigger&#8230;. If they can catch up with Cursor</p><p>There&#8217;s a lot of other extensions like Cline, Roo Code, but I left those out as they are more of a specific agent only tool, not an entire editor integration. </p><p>Hope you found this useful, and if there&#8217;s another one you&#8217;re using, let me know in the comments and maybe I can update this. I&#8217;m trying all of these that I can, but I&#8217;m realizing the only one standing out drastically is cursor, and a little bit with Zed as its a uniquely different editor platform than the rest. </p><p></p><p>I am using my IDE less than ever before, with most of my time spent inside Claude code. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">zach.codes is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Agentic Coding with Ryan Castner]]></title><description><![CDATA[Ryan joins to discuss his LLM usage after a quick discussion on an upcoming hackathon]]></description><link>https://zach.codes/p/agentic-coding-with-ryan-castner</link><guid isPermaLink="false">https://zach.codes/p/agentic-coding-with-ryan-castner</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Tue, 15 Jul 2025 11:10:09 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/168226842/fe5371d5676d2390cc3e98bfb578fba1.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Ryan and I plan to start doing a podcast more regularly starting next Friday. Enjoy our first one today as we dive into many AI coding tools and our thoughts on the different ways of using them.</p><h2>Summary</h2><p>In this conversation, Zach and Ryan discuss the RevenueCat hackathon, exploring app development ideas and investment strategies. They delve into the use of AI tools in coding, the challenges developers face with AI, and the future of AI in software development. The discussion highlights the importance of understanding AI tools, the potential pitfalls of relying too heavily on them, and the evolving landscape of coding productivity.</p><h2>Chapters</h2><ol><li><p><strong>Introduction to Revenue Cat Hackathon</strong> (0:00 - 2:30)</p><ul><li><p>Discussion about the Revenue Cat Ship-a-Tone 2025 hackathon.</p></li><li><p>Details about the submission requirements and prize categories.</p></li></ul></li><li><p><strong>Revenue Cat's Mission and Requirements</strong> (2:31 - 5:00)</p><ul><li><p>Explanation of Revenue Cat's mission and the requirement to use their subscription payment service.</p></li></ul></li><li><p><strong>App Idea Discussion</strong> (5:01 - 10:00)</p><ul><li><p>Conversation about a potential app idea related to investment and savings.</p></li><li><p>Comparison with existing apps like Griffin and Acorns.</p></li></ul></li><li><p><strong>Agentic Coding and AI Tools</strong> (10:01 - 20:00)</p><ul><li><p>Discussion on using coding agents and AI tools like React Native, Swift, and LLMs.</p></li><li><p>Personal experiences with various AI tools and their impact on productivity.</p></li></ul></li><li><p><strong>Challenges with AI Tools</strong> (20:01 - 30:00)</p><ul><li><p>Issues faced with AI tools like Gemini and Claude.</p></li><li><p>Discussion on the importance of context windows and tool calls.</p></li></ul></li><li><p><strong>Pricing and Subscription Plans</strong> (30:01 - 40:00)</p><ul><li><p>Conversation about the pricing of AI tools and subscription plans.</p></li><li><p>Personal experiences with different plans and their value.</p></li></ul></li><li><p><strong>Local Model Performance and Hardware</strong> (40:01 - 50:00)</p><ul><li><p>Discussion on running local models and the hardware requirements.</p></li><li><p>Comparison of different hardware capabilities for running AI models.</p></li></ul></li><li><p><strong>Future of AI in Development</strong> (50:01 - 60:00)</p><ul><li><p>Speculation on the future of AI in software development.</p></li><li><p>Concerns about the impact of AI on developer roles and salaries.</p></li></ul></li></ol><h2>Takeaways</h2><p>The Revenue Cat hackathon encourages developers to create new apps.</p><p>Investment apps can help users save and invest simultaneously.</p><p>AI tools can enhance coding productivity but require understanding.</p><p>Developers need to be cautious about relying solely on AI.</p><p>The future of software development will heavily involve AI tools.</p><p>Companies may face challenges if they rely too much on AI for coding.</p><p>Understanding the context of code is crucial for effective AI use.</p><p>AI can help automate tasks but may introduce new complexities.</p><p>Developers should maintain their coding skills alongside using AI tools.</p><p>The landscape of coding tools is rapidly evolving, requiring adaptability. </p>]]></content:encoded></item><item><title><![CDATA[Bulletproof Docker Releases with Automated Migration Testing]]></title><description><![CDATA[Test migrations and block releasing if your next release isn't compatible]]></description><link>https://zach.codes/p/testing-migrations-before-releasing</link><guid isPermaLink="false">https://zach.codes/p/testing-migrations-before-releasing</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Thu, 10 Jul 2025 11:38:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M5kx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M5kx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M5kx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M5kx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M5kx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!M5kx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1e8063e-76b7-411b-972f-fbd64472b983_1024x608.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 &#8220;bulletproof&#8221; docker container ship &#128521; </figcaption></figure></div><p>Just before I open sourced <a href="https://github.com/zackify/revect">revect</a>, I had a problem. Well, two problems actually.</p><p>I wanted to make sure if people used a different embedding model later on, the system still worked. With vector embeddings, you turn text into vectors, and if you rely on Open AI&#8217;s models&#8230; when they deprecate it, you&#8217;re screwed&#8230; Unless you re-embed everything with a new model.</p><blockquote><p>If you are not familiar, an embedding model converts words into vectors, basically points on a chart or map. This makes it possible to search by meaning of words. For example, search the word &#8220;government&#8221; and find everything related to presidents even though the text doesn't exactly match. </p></blockquote><p>So I did that. If the model changes, the system knows and re-embeds it all automatically. </p><p>The next problem, I wanted to make sure, even if a mistake is merged in to main, we do not push out a new docker image. For example, a mistake with a migration that would break older users databases.</p><p>You might imagine referencing some new database field, without renaming the original database columns. This would cause anyone who uses &#8220;pull always&#8221; on docker, to receive the new code, and then it immediately breaks, because their database schema is different.</p><p>So I had a simple solution, and I let <a href="https://www.anthropic.com/claude-code">claude code</a> implement it for me &#128521;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://zach.codes/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Get the insights that keep you ahead of the curve&#8212;delivered straight to your inbox before the trends hit mainstream.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Migrate the last version every deploy</h2><p>You can see the entire action <a href="https://github.com/zackify/revect/blob/main/.github/workflows/docker-publish.yml">here</a>. Basically:</p><pre><code>const currentReleaseTag = context.payload.release.tag_name;
const currentIndex = releases.data.findIndex(r =&gt; r.tag_name === currentReleaseTag);

// Get previous release if it exists
if (currentIndex &gt;= 0 &amp;&amp; releases.data.length &gt; currentIndex + 1) {
 const prevRelease = releases.data[currentIndex + 1];
 console.log(`Previous release: ${prevRelease.tag_name}`);
 return prevRelease.tag_name;
} else {
 console.log('No previous release found');
 return '';
}</code></pre><p>Grab the previously released git tag, every time we make a new docker image. I use GitHub's releases section to do deploys, so I always make my release tags incremental. </p><p>It doesn't really matter how you make them as long as there is one prior release to the current build when you add this.</p><pre><code># Create directory for database
mkdir -p ./data

# Pull previous image
PREV_TAG=${{ steps.prev_release.outputs.result }}
docker pull ${{ env.DOCKER_IMAGE }}:${PREV_TAG}

# Run migrations on previous version
echo "Running migrations on previous version ${PREV_TAG}"
docker run --name prev-revect -v $(pwd)/data:/app/data ${{ env.DOCKER_IMAGE }}:${PREV_TAG} bun run /app/src/database/migrations.ts up

# Build current version for testing (only amd64 for testing)
docker build -t ${{ env.DOCKER_IMAGE }}:test .

# Test migrations with the new version
echo "Testing migrations on new version"
docker run --name new-revect -v $(pwd)/data:/app/data ${{ env.DOCKER_IMAGE }}:test bun run /app/src/database/migrations.ts up</code></pre><p>Okay, so here's a breakdown of what we just did above:</p><p>We pull the LAST release image.</p><p>Run migrations on it, these are the migrations from that prior release. This is done in the volume mount, /app/data. Revect initializes a sqlite file here if one doesn&#8217;t exist yet.</p><p>Now we build the new image, and we run the migrations on that database from the prior version, because <strong>we mount the same volume</strong>.</p><p>If it fails, the release stops, and we don&#8217;t push out anything broken to current users!</p><p>I thought it was pretty neat and intuitive.</p><h2>External databases</h2><p>Okay, that's cool and all, but how might we do this with external databases that aren't SQLite? </p><p>I'm not going to go too in depth, but you can use all of the same paradigms I shared above. </p><p>The only difference would be that you need to do a docker run for Postgres inside your GitHub actions or any other external database service, and then run your app container and make sure that it has the correct environment variables to connect. </p><p>Essentially, the only change is instead of a volume mount for SQLite, you're just starting Postgres and then injecting the Postgres connection URL to the previous container. </p><p>After that's done, now you have your base migrations that have already been applied. Now you inject the same connection URL to the new container and run the migrations, <strong>exactly like we did using SQLite</strong>. The difference is, you now have a second container running inside of GitHub Actions (your database server).</p><p>I think this is worth doing, especially for releases of open source projects, even internal projects if they are consumed by many internal teams.</p><p>If you found this interesting, please give it a like or comment. I haven't seen this discussion very often when it comes to Docker or content around safety nets for migration issues. </p>]]></content:encoded></item><item><title><![CDATA[I Used GitHub Copilot+ For a Week]]></title><description><![CDATA[A very quick look at Copilot Agent and the ways I used it]]></description><link>https://zach.codes/p/i-used-github-copilot-for-a-weekheres</link><guid isPermaLink="false">https://zach.codes/p/i-used-github-copilot-for-a-weekheres</guid><dc:creator><![CDATA[Zach Silveira]]></dc:creator><pubDate>Thu, 03 Jul 2025 11:29:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bjmk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bjmk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bjmk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bjmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png" width="1024" height="608" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:608,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bjmk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 424w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 848w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.png 1272w, https://substackcdn.com/image/fetch/$s_!bjmk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ff456e-4c33-4174-85d2-327b94511f70_1024x608.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"></figcaption></figure></div><p>A few weeks ago when Copilot Pro+ was announced, I paid the $40 and started using it. I was super intrigued because having an AI agent on GitHub's website directly seemed like a pretty powerful tool. </p><p>It's not like there's a new model or anything, but the cool part is <strong>being able to have AI interact with pull requests and issues. </strong></p><p>I think it helps a team level up if multiple people can go review a PR and have AI address it without you having to pull anything locally on your device (or into a codespace)</p><p>This leads us into our first big problem with Copilot&#8217;s Agent: currently, <strong>there's no way </strong>to have it respond to PR questions or comments that weren't originally started by Copilot. </p><p>It can do this, but only when it's the one who originally opened the pull request. </p><h2>Real Examples</h2><p>I'll go through and share some screenshots of some real results I did in the repository of mine. I used it so much during my testing that I got completely blocked and it started saying, "Unfortunately, I couldn't process your request." Through inspecting GitHub actions, I realized it's because I was rate limited. </p><h3>Adding Sentry</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pBz_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pBz_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 424w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 848w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 1272w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pBz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png" width="1456" height="847" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:847,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203620,&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://zach.codes/i/165594979?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.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_!pBz_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 424w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 848w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.png 1272w, https://substackcdn.com/image/fetch/$s_!pBz_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01975ad3-2fe7-4813-a373-f05dabed10a5_1664x968.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>I assigned it an issue that just said to add Sentry. Here&#8217;s what it added:</p>
      <p>
          <a href="https://zach.codes/p/i-used-github-copilot-for-a-weekheres">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>