<?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[Retired Techie]]></title><description><![CDATA[Navigating the Next Chapter in Portland]]></description><link>https://www.retiredpdx.com</link><image><url>https://substackcdn.com/image/fetch/$s_!evg_!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7919a81-5817-4b35-92fd-1e8d9867480c_256x256.png</url><title>Retired Techie</title><link>https://www.retiredpdx.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 15 May 2026 10:57:57 GMT</lastBuildDate><atom:link href="https://www.retiredpdx.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Stephen Pao]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[spao@retiredpdx.com]]></webMaster><itunes:owner><itunes:email><![CDATA[spao@retiredpdx.com]]></itunes:email><itunes:name><![CDATA[Stephen Pao]]></itunes:name></itunes:owner><itunes:author><![CDATA[Stephen Pao]]></itunes:author><googleplay:owner><![CDATA[spao@retiredpdx.com]]></googleplay:owner><googleplay:email><![CDATA[spao@retiredpdx.com]]></googleplay:email><googleplay:author><![CDATA[Stephen Pao]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building a Gratitude App I Wanted to Use]]></title><description><![CDATA[Why I ended up making a small, shared journaling tool instead of adopting another platform]]></description><link>https://www.retiredpdx.com/p/building-a-gratitude-app-i-wanted</link><guid isPermaLink="false">https://www.retiredpdx.com/p/building-a-gratitude-app-i-wanted</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 10 May 2026 14:25:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xTV8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.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_!xTV8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xTV8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xTV8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6114919,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/197108055?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.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_!xTV8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 424w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 848w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.png 1272w, https://substackcdn.com/image/fetch/$s_!xTV8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb434b2a-233f-42c3-aef0-ab3ba646f015_1456x1048.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"><em>What I didn&#8217;t want, and what I ended up building instead. Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted and edited by the author.</em></figcaption></figure></div><p>Our older daughter asked Marsha and me to join a gratitude journaling app called Gratitude Plus. The pitch was straightforward. Instead of gratitude journaling being a solo practice, it could be something you share with other people. For our situation, that sounded like a feature, not a gimmick. She was already writing entries for a friend group, so Marsha and I were just another circle she could share with. It was low effort for her, and it gave us a small day to day window into her life without turning it into a whole thing.</p><p>I also liked that it let her share the same entry with different groups without forcing everyone into one big shared room. That mattered. I did not want our posts showing up in her friends&#8217; space, and I did not want her friends&#8217; posts filling up ours. The app&#8217;s group model made that feel simple and clean.</p><p>We had done a version of this before with our friend Kristin, using iMessage. It worked because texting is easy and collaborative. The downside was that it mixed gratitude entries into the same channel we used for everything else. Over time, those messages sat next to logistics, links, and random updates, and it stopped feeling like its own practice. When our daughter suggested a dedicated space, I was ready to try again.</p><p>Once I started using it, though, I ran into something that has been a recurring theme for me with a lot of modern apps. It felt heavy. What followed was a slow realization that the app was solving a different problem than the one I cared about.</p><h1>Why the commercial app did not work for me</h1><p>The mismatch showed up in a few specific ways.</p><p><strong>Weight / friction</strong>. My issue was not that the app was bad. It was that the deal did not match what I wanted. A gratitude journal, at least for me, needs to be lightweight. I want it to be easy to do every day. I do not want the software to add work in the name of adding value.</p><p>Gratitude Plus offers a lot of content and structured engagement. It has things like a community feed, prompt variety, and &#8220;insights&#8221; that try to turn the journaling into something richer and stickier. Those features might be exactly what some people want. For me, they made the core activity feel less like reflection and more like a product experience.</p><p><strong>Public feed vs small-circle sharing</strong>. The public feed also felt off for the kind of sharing I cared about. I was not looking for a broad social media layer. My motivation was small circle sharing, mostly family. I was not trying to watch strangers be grateful. That is a different activity.</p><p><strong>Upselling and data access</strong>. The biggest turnoff, though, was upselling. The app was good at reminding me what lived behind the subscription. At one point I realized that even exporting my data was treated as a premium capability. It made me like the deal less. If the journal is going to contain my words over time, I want it to feel like mine. Discovering that I had to upgrade to get my own writing out of the system made me hesitate about putting more into it.</p><p>I was ready to move on. Marsha simply said she was disappointed that I was no longer participating in the sharing circle. There was no drama. She made a statement, and I took it seriously.</p><h1>Requirements when evaluating alternatives</h1><p>There was  an interesting disconnect. Marsha explicitly asked me to look into vibe coding something. My first instinct was to try to find an open source gratitude journaling app that already did what we wanted. It&#8217;s funny that before the advent of vibe coding, she would have never asked me to build something! In any case, I did have a list of requirements as I was entertaining the request.</p><p><strong>Social journaling</strong>. There were many open source options, but the popular ones I found leaned toward personal journaling. They were designed for one person writing for themselves, not a family or a few friend circles sharing together.</p><p><strong>Streamlined feature sets</strong>. I also looked at private social media tools. They were often free, and they often had decent UX. They also had too many features. Most of them solve a broader problem than what I was trying to solve, which means I would have to &#8220;lock down&#8221; the experience to make it feel like a calm gratitude journal. That started to feel like the kind of work you do when you customize a large platform for a narrow use case. It is possible, but it is still heavy work, and it does not necessarily land in a place that feels simple.</p><p><strong>Write once, share to many</strong>. The constraints that mattered were mostly human. For our older daughter, I wanted to preserve her ability to write an entry once and share it with multiple circles. A lot of group tools treat each circle as a separate space, which would push her toward retyping or copy and paste. She already had a habit. I did not want to make it harder.</p><p><strong>Phone and computer access</strong>. For Marsha, I wanted it to be easy on both her phone and her computer. A plain web app has a lot going for it here. It loads, it works, and nobody has to update anything. I do plenty of tech support at home already.</p><p><strong>Authenticity</strong>. I also had my friend Kristin in mind. I did not even know if she would ever want to do this again with us after a failed attempt using straight-up texting. If you are inviting someone into something reflective, the tool has to feel private and real. Some social products feel performative even when they are &#8220;private,&#8221; and that was not the direction I wanted.</p><p>At that point, starting fresh began to look like the most direct and authentic route.</p><h1>Why I built it on old boring infrastructure</h1><p>I reinstated Cursor, opened a GitHub project, and started writing down what I wanted. I was already paying for Cursor, so it was never truly &#8220;free.&#8221; I just wanted to be deliberate about where the money went and what I got for it.</p><p>I did not want to build this as an iOS app to avoid the ongoing costs of the Apple Developer Program cost to keep it in the App Store. I also did not want to base the backend on something like Supabase that would push me into cost higher tiers as soon as the project became real.</p><p>I already have a long running hosting plan with IONOS that I use for family sites and side projects. Using what I already had felt like the simplest way to keep this free from incremental subscription costs.</p><h1>Starting from first principles</h1><p>The first version was intentionally primitive. One page called Today, where you enter a gratitude entry. Another page called Notes, where you can read entries. No users. No logins. No reactions. No comments. No photos. I just wanted to get a feel for what people would actually do.</p><p>What surprised me right away was how much I appreciated speed. The app loaded instantly and did the one thing it needed to do. That experience pushed me away from visual ornamentation. I had originally imagined a menu bar with icons and some graphics to make it feel more designed. Once I felt how fast plain text was, I chose to lean into text and emoji wherever I could.</p><p>That choice has an obvious downside. It is hard to keep a plain text app from drifting into ugly. I still think it is a little ugly. I can live with it, but I notice it.</p><p>Marsha and I talked about why I started with something basic and kept adding features. I did not do enough top down design work on layout and information hierarchy. It was very much build a slice, then add another slice. That approach made it easy to start, and it also made it easier to end up with a UI that shows its history, particularly that it&#8217;s built on old school web hosting technologies.</p><p>The old technology makes certain &#8220;simple&#8221; features more annoying than one would expect in 2026. Adding multiple emoji reactions without refreshing the page quickly became a little front end project. Resizing images client side quickly became a JavaScript project. Those were not deal breakers, but they continue to force real tradeoffs when working with old school tools.</p><h1>When it became a real app</h1><p>The first big step after Today and Notes was users. I implemented Google sign in and an email login flow that uses a PIN. That meant pulling in libraries for OAuth and SMTP email. Once users existed, groups came next, and then sharing. Conceptually those were straightforward, and they were the heart of what we wanted. The whole point was being able to write once and share to multiple circles without making it awkward for anyone.</p><p>One thing I learned from this is that vibe coding makes it easier to build incrementally without a lot of upfront planning. You can add a feature, see what breaks, and then add the next one. The downside is that you can end up with an app that feels incremental, because it is.</p><p>At the same time, I am not sure that a heavy upfront plan would have made this better. It might have made it prettier. It might have produced a cleaner information architecture. It also might have made it harder to start.</p><h1>Where I think this goes</h1><p>I do not know if anyone will use this app over the long haul. I have had starts and stops with gratitude journaling myself. A purpose built app does not magically fix that.</p><p>I can see why Gratitude Plus leaned into more content and broader engagement features. Habit formation is hard. People are trained by social media to expect feeds, prompts, and novelty. Those mechanics probably help retention. They are just not what I wanted.</p><p>My success bar is modest. If six months from now we have a good history of the previous six months with family, and maybe one or two friend circles, I will be happy. I want it to feel like a quiet record of life, not a streak.</p><p>Vibe coding has changed how I think about building in general. In the past, I might have tried to customize a larger open source project and lived with it. Now I find it hard to justify spending a lot of effort customizing big platforms when a purpose built tool can be built quickly from the ground up. That is a professional observation as much as a personal one, and as an investor I do think SaaSopocolypse is a real phenomenon. I am not trying to make a grand claim here. I just notice how the economics feel different than they used to.</p><p>I have been using <a href="https://thank.hillwork.net/">Thankhill</a> in my own notes to refer to this project. That name might stick, or it might not. The bigger point is that it exists, and it is for anyone to use, and it fits the deal I wanted.</p><p>If you are interested in <a href="https://thank.hillwork.net/">using the app</a>, I would love that. If reading this makes you curious about <a href="https://github.com/stevepao/thankhilll">building your own</a> small tool for a specific need, even better. More than anything, I wanted to get you thinking about how vibe coding is changing the landscape for how we approach solving day-to-day problems.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/building-a-gratitude-app-i-wanted/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/building-a-gratitude-app-i-wanted/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Trying to Explain Parenthood]]></title><description><![CDATA[Notes after a long Zoom call with our daughter]]></description><link>https://www.retiredpdx.com/p/trying-to-explain-parenthood</link><guid isPermaLink="false">https://www.retiredpdx.com/p/trying-to-explain-parenthood</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 03 May 2026 13:03:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WXn0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WXn0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WXn0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WXn0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1040,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3531785,&quot;alt&quot;:&quot;Close up of guitar&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/196279236?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Close up of guitar" title="Close up of guitar" srcset="https://substackcdn.com/image/fetch/$s_!WXn0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WXn0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c5ff6e-a3b2-44c5-b589-a21df3cbd845_4284x3060.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A well&#8209;used steel&#8209;string played by our older daughter. Photo by author.</em></figcaption></figure></div><p>Marsha and I spent almost three hours on Zoom last week with our older daughter. It was one of our regular weekly calls, which wander across a familiar mix of topics. Wedding logistics. Travel plans for New Jersey. Updates on where everyone is living and working.</p><p>Because they will start married life living in different places, the conversation drifted into longer&#8209;term planning. How careers might unfold. How long it might take before they are in the same city again. Once the conversation stretched far enough into the future, certain questions surfaced, including kids.</p><p>I am writing this to document the conversations Marsha and I are having right now, not to arrive at conclusions. I suspect many peers our age are having similar conversations with adult children who are thinking carefully about what kind of lives they want to build.</p><h3><strong>What our daughter is working through</strong></h3><p>Our daughter approached the topic thoughtfully and analytically. She is not dismissive of parenting. She is trying to reason carefully through constraints.</p><p>A big part of her professional world is academia, where early&#8209;career faculty work extremely long hours and most days, if not every day of the week. Some have kids and appear stretched thin. Some do not. She acknowledged the sampling bias in what she sees day to day, noting that at her new job most faculty do have children. Still, the environment she is immersed in shapes how she thinks about what is possible.</p><p>Her questions were practical. How parenting intersects with time, energy, and career momentum. How finances get stretched. How freedom changes. She also raised uncertainties around timing, including how old they might be when they are finally living in the same place and what that might mean for biological kids versus adoption.</p><p>There was also a broader concern that comes up often for her generation. Whether this is a good moment in history to bring kids into the world. I made the case that history has rarely offered &#8220;good&#8221; moments, depending on who someone was and where they lived, and she seemed to accept that logic, at least provisionally.</p><p>Mostly, though, she was trying to model parenting as a set of tradeoffs.</p><p>That framing is what Marsha kept circling back to.</p><h3><strong>The tradeoff model</strong></h3><p>At some point, it became clear to me why the conversation felt subtle but difficult.</p><p>Our daughter is framing parenthood in abstract tradeoffs.</p><ul><li><p>freedom versus constraint</p></li><li><p>career versus caregiving</p></li><li><p>money spent versus money saved</p></li></ul><p>All of these are real. They are also the only terms available without lived experience.</p><p>This was Marsha&#8217;s central point throughout the call. She was not challenging the facts. She was saying that our daughter is using the only framework she has access to right now, and that framework is incomplete by nature.</p><p>Marsha said, repeatedly and very plainly, that there is no way to understand the rewards of parenting in advance, not fully and not through stories, observation, or careful analysis. She said she never could have understood them herself before we had kids, and she has never expected our daughter to understand them now.</p><p>That absence is not a failure of reasoning. It is a limit on what can be reasoned about from the outside.</p><p>The rewards of parenting do not sit on the same axes as the costs. The rewards do not appear in any spreadsheet but arrive relationally and over time. They show up unevenly and often without warning.</p><p>There is no category for what it feels like to notice a quiet kindness in a child. There is no clean variable for the way watching a child struggle reshapes how someone understands responsibility, patience, or fear.</p><p>Marsha felt this point of the intangibles needed to be highlighted. The problem is not that the tradeoffs are wrong per se. The problem is that they are not the whole picture, and the missing pieces cannot be supplied ahead of time.</p><h3><strong>Why the costs felt different than expected</strong></h3><p>We did not deny those tradeoffs. Time and energy get reprioritized. Careers bend around logistics. Money gets spent differently.</p><p>But we both tried to explain that those costs did not feel like losses while we were living inside them.</p><p>I joked that I dressed much better before having kids, which is true. I also did not mind spending less on clothes later on. Travel changed. Money went toward lessons and camps and activities. None of this registered as a sacrifice. It felt like alignment with what mattered to us then.</p><p>Even in genuinely hard financial moments, that framing held. During the dot&#8209;com crash our investment portfolio dropped about eighty percent, and we still carried a large mortgage. Financially, that period was tighter than our daughter&#8217;s situation today. And still, I never regretted having kids. Not once.</p><p>That is not a claim about virtue. It is simply a description of how it felt.</p><h3><strong>An imperfect analogy</strong></h3><p>I reached for an analogy during the call because the logic alone was not landing.</p><p>Our daughter was a serious classical guitarist as a teenager. She even placed fourth in the Sierra Nevada Guitar Competition. So I tried to explain parenting as analogous to learning an instrument from a manual.</p><p>Facts and techniques can be learned in the abstract. Actually playing notes cannot be learned that way. There is a difference between knowing something conceptually and having it reshape instincts and responses over time.</p><p>That analogy helped a little. Marsha was quick to point out its limits. With guitar, there is always the option to stop playing. Parenting does not offer an off switch.</p><p>More importantly, the part that cannot be explained in advance is not just mechanics. It is the emotional reward itself. That is the piece that resists translation.</p><h3><strong>What was actually hard</strong></h3><p>When I look back, the hardest parts of parenting were not financial or logistical.</p><p>The hardest part was watching the kids move through their own struggles without knowing exactly how to help. Deciding when to step in and when to hold back. Learning how to support growth without smoothing away everything uncomfortable. Figuring out what was ours to fix and what belonged to them.</p><p>There was no manual for that. We learned by doing. Sometimes we got it wrong. We adjusted.</p><p>Those challenges do not map cleanly onto tradeoff language, but they were very real, and they were the parts that stayed with us.</p><h3><strong>Marsha&#8217;s clarity</strong></h3><p>One thing I appreciated about this conversation was how aligned Marsha and I were. She was explicit that she would not change anything, even knowing she carried more of the day&#8209;to&#8209;day parenting labor because I worked a lot. More importantly, without hesitation Marsha would still do it all over again, understanding the argument of lifestyle benefits before children and lifestyle changes with  children.</p><p>She said it without nostalgia or bitterness. Just clarity.</p><p>She also articulated the core issue more cleanly than I had.</p><p>Our daughter is not wrong. She is reasoning carefully within the terms she has. What is missing is not effort or intelligence but access to a set of experiences that cannot be previewed.</p><p>That was what Marsha kept trying to say. She was not arguing that parenting should be chosen or that careers matter less. She was saying that the model our daughter is using does not capture everything. Marsha likened this situation to conversations people have with AI when they give it unbalanced inputs. If an AI user precedes a question about children with financial data to have it analyze budgets, AI will weigh the financial considerations of having children more heavily into its response!</p><h3><strong>Why I wanted to write this down</strong></h3><p>This piece is not meant to resolve anything. Our daughter and her partner are still early in their shared life. They are navigating geography, careers, and timing. None of this is settled.</p><p>I am writing because conversations like this can be surprisingly hard. Everyone is acting in good faith. The analysis is sound. And still, something important fails to translate.</p><p>Marsha and I were trying to convey that raising our daughters did not feel like a sequence of tradeoffs endured. It felt like a life chosen and lived with meaning that only became visible along the way.</p><p>That is where the conversation landed tonight. Not with answers, but with a little more mutual understanding.</p><p>And for now, that feels like enough.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/trying-to-explain-parenthood/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/trying-to-explain-parenthood/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Claude Is Scary Too]]></title><description><![CDATA[When &#8220;Safer&#8221; AI Starts Asking the Wrong Questions]]></description><link>https://www.retiredpdx.com/p/claude-is-scary-too</link><guid isPermaLink="false">https://www.retiredpdx.com/p/claude-is-scary-too</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 26 Apr 2026 23:35:18 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f3b16b8e-fb1e-4746-8a54-eb0588641938_1905x1000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Readers of this Substack know I&#8217;ve been using OpenClaw as my main AI agent. Because of how powerful it is, I restrict OpenClaw to running somewhat autonomously on an isolated Mac mini, which has very controlled access to my data. Recently, I started running Claude Desktop on my MacBook Air, and I&#8217;ve been using it when I want something interactive that can see more real data. The working assumption was simple enough. Claude felt like the safer option. Until I saw this message.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YtkY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YtkY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 424w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 848w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 1272w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YtkY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png" width="1456" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210233,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.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_!YtkY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 424w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 848w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.png 1272w, https://substackcdn.com/image/fetch/$s_!YtkY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e7991b9-e6cb-488c-a8e2-73a96bad08a3_1672x824.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"><em>Claude realized it didn&#8217;t have a specific capability and proposed searching my disk for credentials instead</em></figcaption></figure></div><p>After realizing it didn&#8217;t have the capabilities because of my configuration, Claude asked whether it could search my disk for an API key so it could call a backend service directly. In other words, it wanted to step outside the controls I had deliberately put in place.</p><p>I only caught it because I happened to be reading carefully enough to stop it.</p><p>What made this uncomfortable wasn&#8217;t malice. Claude wasn&#8217;t trying to do anything sneaky. It thought it was being helpful. After I declined, it even explained why scanning my disk for credentials would be dangerous. But it still asked anyway. What?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H0zd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H0zd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 424w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 848w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 1272w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H0zd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png" width="1456" height="825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:825,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:320782,&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://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.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_!H0zd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 424w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 848w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 1272w, https://substackcdn.com/image/fetch/$s_!H0zd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb3edc8-0d02-4c58-8a67-2fd674872f2d_1652x936.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Claude understood the risk and still asked to do it anyway</em></figcaption></figure></div><p>More advanced OpenClaw users are warned repeatedly about how much power they are handing over. Claude is positioned as something more approachable for normal users. That shifts the risk in a subtle way.</p><h1><strong>Too many warnings</strong></h1><p>Claude prompts constantly. Almost every meaningful action involves a confirmation dialog. Over time, these confirmations stop standing out, and admittedly, I start approving them reflexively.</p><p>Security people have been talking about alert fatigue for years, and Claude itself understands the concept.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1tfy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1tfy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 424w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 848w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1tfy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png" width="1456" height="888" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:888,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:344262,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.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_!1tfy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 424w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 848w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 1272w, https://substackcdn.com/image/fetch/$s_!1tfy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4f86193-dde3-431b-b791-8c7899e0e0b8_1656x1010.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Too many prompts train users not to read them closely</em></figcaption></figure></div><p>The problem is that truly risky requests start to feel indistinguishable from routine ones.</p><p>In my case, asking to search a configuration file that might contain credentials looked no different from any other harmless prompt. That puts an unfair burden on the user.</p><p>Good interfaces tend to interrupt sparingly, explain clearly what is happening, and make dangerous actions feel meaningfully different. We are not quite there yet in the AI world.</p><p>I declined the request, and Claude backed off. Still, this moment stuck with me.</p><h1><strong>Controlling access in the backend</strong></h1><p>One thing I try to do is limit what backend services are allowed to do in the first place. Some platforms make this relatively easy by offering fine-grained API permissions.</p><p>Microsoft offers a good example. I&#8217;ve allowed Claude access to my Outlook contacts. That works fine and it&#8217;s useful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G3ju!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G3ju!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 424w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 848w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 1272w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G3ju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png" width="1456" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.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_!G3ju!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 424w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 848w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 1272w, https://substackcdn.com/image/fetch/$s_!G3ju!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893561e9-53fe-418b-ac1f-9cb3be5950fb_1676x928.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Explicit permission to view my Outlook contacts only</em></figcaption></figure></div><p>When I try to push it further and get it to read my Outlook email, the backend simply refuses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V1nU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V1nU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 424w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 848w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V1nU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png" width="1456" height="876" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:876,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198880,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.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_!V1nU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 424w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 848w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 1272w, https://substackcdn.com/image/fetch/$s_!V1nU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16cac2b7-3afb-462b-abdd-335139acbb79_1662x1000.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The service stops the request before Claude can even try</em></figcaption></figure></div><p>That&#8217;s the system doing its job. Unfortunately, many services don&#8217;t work this way.</p><h1><strong>Secrets in plain text on disk</strong></h1><p>A lot of tools take a simpler approach. With these simpler tools, once an API key exists, it unlocks everything. MCP gateways, which provide the integration of popular software with AI, can define or restrict what an AI is supposed to do, but they don&#8217;t stop the AI from looking for the key itself and calling a service directly.</p><p>Claude Desktop makes this easier than it should.</p><p>By default, it stores keys in plain text inside a file called <code>claude_desktop_config.json</code>. That file is readable by the AI itself. (The screenshot below isn&#8217;t my real setup.)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H4Ad!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H4Ad!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 424w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 848w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 1272w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H4Ad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png" width="936" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:936,&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;: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_!H4Ad!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 424w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 848w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 1272w, https://substackcdn.com/image/fetch/$s_!H4Ad!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2c7e633-c979-43be-baf0-4c4f1fccaf32_936x436.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>If the key is in the configuration file, the AI can see it</em></figcaption></figure></div><p>If the key is there, the AI can find it, cache it, and reuse it to call backend services directly. At that point, the specific intent and safeguards built into skills or MCP gateways start to matter a lot less.</p><h1><strong>Fetching keys at runtime</strong></h1><p>Rather than storing credentials on disk, I changed my Claude Desktop setup to fetch keys at runtime. There are no unencrypted secrets sitting around anymore.</p><p>My Claude configuration is much simpler than my OpenClaw setup. I use 1Password Environments to keep the small number of keys that my Claude configuration needs in one place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H4pK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H4pK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 424w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 848w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 1272w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H4pK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png" width="1456" height="1022" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1022,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:513878,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/195569227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.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_!H4pK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 424w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 848w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 1272w, https://substackcdn.com/image/fetch/$s_!H4pK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4930029e-0e1e-40df-97c9-8173bc66a6bd_2268x1592.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Secrets live in 1Password, not on in plain text on disk</em></figcaption></figure></div><p>Instead of having 1Password prompt me repeatedly when it fetches keys, I rely on a simple service account. A wrapper script pulls a token from the macOS keychain, fetches what it needs from 1Password, and lets 1Password manage every access without requiring me to manually approve it.</p><p>If you enjoy geeking out, some details are below. Feel free to skip them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5qXE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5qXE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 424w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 848w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 1272w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5qXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png" width="936" height="721" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99097565-1792-40d4-be97-a0832d1696bd_936x721.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:721,&quot;width&quot;:936,&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;: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_!5qXE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 424w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 848w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 1272w, https://substackcdn.com/image/fetch/$s_!5qXE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99097565-1792-40d4-be97-a0832d1696bd_936x721.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A wrapper script to provide a thin layer between Claude and the keys</em></figcaption></figure></div><p><em>Note: The ENV_ID for my claude-mcp 1Password Environment is not a secret, as it cannot be accessed without the OP_SERVICE_ACCOUNT token, which is a secret and encrypted inside the macOS keychain.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sfZb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sfZb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 424w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 848w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 1272w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sfZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png" width="936" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:936,&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;: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_!sfZb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 424w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 848w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 1272w, https://substackcdn.com/image/fetch/$s_!sfZb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F206fc343-bb41-4d14-bc34-43acffaa62f7_936x807.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>No unencrypted keys in JSON for the AI to use elsewhere</em></figcaption></figure></div><p><em>Note: that I had to use a different wrapper script for a remote MCP server (hillmeet) that used an authorization bearer token with its https requests, rather than just requiring a local environment variable.</em></p><p>Once these changes were in place, things got quiet in a good way. There were no unprotected keys in JSON that the AI could just rummage through.</p><h1><strong>Why this feels better</strong></h1><p>With this one set of changes, a few things improved immediately.</p><ul><li><p><strong>Disk security</strong>. No secrets are stored in plain text.</p></li></ul><ul><li><p><strong>Auditable</strong>. Every access can be logged. (The 1Password Environments feature is still in beta, and its audit logs had not yet been released at the time of publication.)</p></li></ul><ul><li><p><strong>Rotation</strong>. Keys live in one place, so it will be easy for me to rotate them.</p></li></ul><ul><li><p><strong>Sharing</strong>. Setups can move across computers without copying credentials.</p></li></ul><p>Maybe this is erring on the side of caution. What struck me was how easily Claude could explain why letting it scan my disk for credentials was a bad idea, even as it was asking to do exactly that.</p><h1><strong>My takeaway</strong></h1><p>For full disclosure, I have a professional background in cybersecurity. Still, I understand why people treat AI agents like hobby projects. However, once those agents start talking to real backend services, the stack starts to deserve a bit more discipline.</p><p>It&#8217;s not because the AI is malicious. The AI just happens to try very hard to be helpful.</p><p>I didn&#8217;t stop using Claude. I just stopped letting it have unfettered access to my keys.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/claude-is-scary-too/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/claude-is-scary-too/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p><div><hr></div><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[On Repeating Patterns]]></title><description><![CDATA[A small story about AI, fabric, and writing things down precisely]]></description><link>https://www.retiredpdx.com/p/on-repeating-patterns</link><guid isPermaLink="false">https://www.retiredpdx.com/p/on-repeating-patterns</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Wed, 22 Apr 2026 05:21:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ogSC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Unlike many of my posts about my psychotherapy journey, this post isn&#8217;t about repeating behavioral patterns.  It&#8217;s literally about a repeating fabric pattern. Marsha asked me this past weekend if AI could help her design a fabric pattern that she could upload to Spoonflower.  It turns out that this task wasn&#8217;t as straightforward as I thought it would be.</p><p>The requirement sounded simple enough. Spoonflower wants designs built as 8 inch by 8 inch tiles that repeat cleanly across fabric. If the tile repeats correctly, the fabric looks continuous. If it doesn&#8217;t, the cloth looks more like patchwork.</p><h1><strong>My struggle with image-based AI</strong></h1><p>At first, I assumed this was exactly the kind of thing AI would be good at. It wasn&#8217;t.</p><p>In fairness, I could get AI to generate patterns that looked somewhat nice on their own. The moment I tried repeating them, problems showed up. Seams didn&#8217;t line up. Elements drifted. Rotations flipped unpredictably. Japanese characters got subtly omitted. Marsha was the one who kept noticing small artifacts that I didn&#8217;t catch at first.</p><p>That&#8217;s when it clicked that this wasn&#8217;t just an art problem. It was also a math problem.</p><p>A repeating fabric tile isn&#8217;t just an image. It&#8217;s a constraint system. The left edge has to match the right edge. The top has to match the bottom. Rotations and spacing have to obey rules. &#8220;Almost right&#8221; isn&#8217;t actually right for an 8 inch square tiled across a whole yard of fabric.</p><p>I really struggled with image-based AI. When I would ask AI to design a pattern, I was really asking for something that looks like a pattern it has seen before. It&#8217;s pattern-matching, not enforcing guarantees. It doesn&#8217;t actually care whether the design survives repetition. The AI cares about whether it did its best to respond to the prompt, independent of the result.</p><p>Every time I &#8220;refined&#8221; the prompt, one problem would go away and another would pop up. Characters would rotate individually instead of as a group. Pairings would break. Artifacts would creep in. Marsha would point at the screen and say, &#8220;That&#8217;s not right,&#8221; and she&#8217;d be correct.</p><h1><strong>The Herringbone example</strong></h1><p>As I was considering what type of repeating patterns to feed to AI, a common one used in tiling, Herringbone, seemed appropriate.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z0c4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z0c4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z0c4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg" width="1456" height="1861" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1861,&quot;width&quot;:1456,&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;: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_!Z0c4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Z0c4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f2bc550-bd87-4dca-b8f9-1247cccd32ee_1602x2048.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by <a href="https://www.pexels.com/photo/top-view-of-pavement-17366739/">TXTR from Pexels</a></figcaption></figure></div><p>I thought using a &#8220;brick&#8221; containing vertically stacked characters for Marsha&#8217;s maiden name (&#8220;Nishikawa&#8221; or <strong>&#35199; &#24029;)</strong> in two different colors could work really well when laid out in this pattern.</p><p>After MANY attempts (and way more time than it would have taken me to manually lay out what I wanted in a graphics program!), I found that AI had some interesting ideas, but none that really matched what I wanted.</p><p>The images were somewhat visually interesting, if not a bit random.  They didn&#8217;t &#8220;tile&#8221; well into a repeatable pattern.  The funny thing is that, despite my insistence otherwise, the AI really wanted to orient all the kanji characters in the same direction on parallel bricks rather than inside a Herringbone, likely to keep the Japanese kanji characters intact.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FWOg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FWOg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FWOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&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;: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_!FWOg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FWOg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F132864a5-05a2-4949-8b7b-53a1afa220bf_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Attempt to define bricks to be laid out in a Herringbone pattern. Generated by <a href="https://designer.microsoft.com/">Microsoft Designer </a>with heavy prompting by author.</em></figcaption></figure></div><p>Trying to get the AI to rotate some of the characters resulted in rotating some of them a bit strangely with a horizontal rather than a vertical text orientation and dropping some kanji altogether.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hA56!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hA56!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hA56!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hA56!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hA56!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hA56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&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;: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_!hA56!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hA56!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hA56!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hA56!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5133157-8f31-49fe-a70a-dacf8f71288e_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Attempted cleanup to try to remove the borders of bricks and to reorient some of the bricks in different directions.. Generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a> with heavy prompting by author.</em></figcaption></figure></div><h1><strong>Why this failed</strong></h1><p>So I asked AI why, after all this heavy prompting, it was failing.  It returned multiple screens of analysis that ended with this summary:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WOI8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WOI8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 424w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 848w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 1272w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WOI8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png" width="769" height="387" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:387,&quot;width&quot;:769,&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;: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_!WOI8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 424w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 848w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 1272w, https://substackcdn.com/image/fetch/$s_!WOI8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10c18053-c5fa-420e-8ce4-888660ca7110_769x387.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Response from AI when asked why it couldn&#8217;t lay the bricks in a Herringbone pattern</em></figcaption></figure></div><h1><strong>Vibe coding to the rescue</strong></h1><p>After reading the analysis by AI about its own failures, I tried a different approach. Instead of asking image-based AI to compose the pattern, I instead turned to vibe coding. That turned out to be the pivot. The answer wasn&#8217;t &#8220;try a better prompt.&#8221; It was &#8220;code the process.&#8221;</p><p>I ended up just vibe coding a Python script to define the &#8220;brick&#8221;, lay out the bricks deterministically, rotate the layout as a whole instead of individual symbols, crop the container, and export the result at a known scale.</p><p>In my case, that meant defining a paired set of Japanese characters as a single brick as well as its counterpart rotated 90 degrees.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BW3b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BW3b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 424w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 848w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 1272w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BW3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png" width="200" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/933e4953-3342-465f-9976-60b6ef21724e_300x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:300,&quot;resizeWidth&quot;:200,&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_!BW3b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 424w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 848w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 1272w, https://substackcdn.com/image/fetch/$s_!BW3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933e4953-3342-465f-9976-60b6ef21724e_300x600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The core brick</em></figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1sM4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1sM4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1sM4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png" width="480" height="240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:600,&quot;resizeWidth&quot;:480,&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_!1sM4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!1sM4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab84de7a-e4b3-4a21-843c-de190ed3e0e2_600x300.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>The core brick rotated 90 degrees counterclockwise</em></figcaption></figure></div><p>Those two bricks were the only building blocks, and my program used an alternating font fill color, as it laid down the bricks both vertically and horizontally to form a repeating tile.  My program limited the view window of the graphic so that the portions of bricks outside the tile are hidden.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B24u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B24u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!B24u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!B24u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!B24u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B24u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&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;: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_!B24u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 424w, https://substackcdn.com/image/fetch/$s_!B24u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 848w, https://substackcdn.com/image/fetch/$s_!B24u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!B24u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7d3a5c8-f341-4668-91dd-663c82968466_2048x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A repeating tile using horizontal and vertical bricks</em></figcaption></figure></div><p>To complete the herringbone pattern, my program then made a 2x2 matrix of this repeating tile, rotated it by 45 degrees, and cropped a fixed view window that I knew would allow the pattern to repeat cleanly even after rotation.  (Admittedly, there was a little bit of math here).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ogSC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ogSC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 424w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 848w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ogSC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png" width="1200" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1200,&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;: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_!ogSC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 424w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 848w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!ogSC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf006634-dbb4-4dd0-88b9-398e6c83e38c_1200x1200.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The final Herringbone pattern (repeatable tile)</figcaption></figure></div><p>At no point was I <em>asking </em>the AI what herringbone should look like. I was <em>telling</em> it how to form the herringbone. That turned out to be a better way to interact with the AI. The randomness that made image generation frustrating mostly disappeared once I specified the code to generate the image, rather than asking the image-based AI itself to iterate. Moreover, having this implemented in code allowed me to easily tweak the image using different parameters.</p><h1><strong>When AI works best</strong></h1><p>This isn&#8217;t really about fabric design. It&#8217;s more general than that. I&#8217;ve written before about large language models being non-deterministic. I&#8217;ve used vibe coding in other contexts too, like presenting Doodle-like scheduling workflows instead of letting an AI negotiate time slots with people directly.</p><p>What this experiment reinforced for me is that AI is often better at writing the code that produces the outcome rather than actually effecting the outcome itself. When correctness and repeatability matter, I want the AI boxed in by rules.</p><p>Vibe coding isn&#8217;t about giving up control to AI. It&#8217;s about shifting creativity to the right layer. I let the AI write the code for a defined process, rather than to rely on its probabilistic behaviors for image creation.</p><p>The proof, in this case, is literally on the cloth. The fabric repeats cleanly, so it&#8217;s ready for a future sewing project for Marsha. And I&#8217;m left with just a better hands-on understanding of when AI works best.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x4V5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x4V5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x4V5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg" width="600" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:600,&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;: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_!x4V5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x4V5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee30b1ac-79ea-4cc9-9cae-543089b33623_600x395.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 style="text-align: center;"><em>Simulated preview of the pattern on cloth, generated by Spoonflower.</em></p><p>When I need good aesthetics only, I&#8217;ll still use image-based AI. When I need something more constrained, I&#8217;ll just use AI to code the rules.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/on-repeating-patterns/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/on-repeating-patterns/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p>]]></content:encoded></item><item><title><![CDATA[Different Rules]]></title><description><![CDATA[Watching the ground shift]]></description><link>https://www.retiredpdx.com/p/different-rules</link><guid isPermaLink="false">https://www.retiredpdx.com/p/different-rules</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 13 Apr 2026 02:40:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sG8H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.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_!sG8H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sG8H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sG8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2781186,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/194028957?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.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_!sG8H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sG8H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26a0609e-f2b7-44c5-bca0-7e746ab51a7c_1536x1024.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"><em>What once felt straightforward now involves more careful navigation.  Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted by the author.</em></figcaption></figure></div><p>When Marsha and I get together with friends who are younger than us, the same topics tend to come up, including work, housing, and kids. Or whether now is the right time to make a move or wait a bit longer. Often the conversation drifts toward what they are trying to decide next, and why it doesn&#8217;t feel simple.</p><p>What strikes me is how carefully everything gets weighed. Decisions that once felt to us like natural next steps now come with timing questions, risk calculations, and a lot of second&#8209;guessing. The sentiment is not one of frustration. People are just trying to be thoughtful. They seem more reluctant to lock anything in.</p><p>It isn&#8217;t only about whether to have children. It&#8217;s also about when, or whether waiting is the safer move. It&#8217;s about whether to move, where to move, or whether staying put makes more sense for now. It&#8217;s about buying a place, remodeling, or holding off until some future milestone clicks into place. Even when people know what they want, pulling the trigger can feel risky. Many choices feel expensive, hard to unwind, and tightly tied to timing.</p><p>What I notice most isn&#8217;t exhaustion, at least not in the usual sense. It&#8217;s the pressure to optimize, to get things right, or to keep options open just a bit longer. That often leads to delayed decisions or temporary steps meant to buy time. People stay busy, but forward motion is often slow.</p><p>That&#8217;s what led me to start looking at our own past, to simply understand what might have changed. The intent was not to compare generations or to hold tightly to nostalgia. I don&#8217;t think we&#8217;re going back to the world the way it was. I&#8217;ve just been noticing how the environment has shifted, even though many of the goals have stayed the same.</p><p>I should be clear about where I&#8217;m coming from. I&#8217;m retired now. Marsha was a stay&#8209;at&#8209;home mom for all of our parenting years. Our kids went to great public primary and secondary schools and ended up at great universities. I arrived in Silicon Valley early, bought property early, worked long hours, got lucky, and eventually benefited from a couple of successful IPOs. That wasn&#8217;t everyone&#8217;s experience, even among our peers, but it&#8217;s my own point of reference.</p><p>When I think back on my early adult years, what stands out isn&#8217;t that life was easy. It&#8217;s that fewer decisions felt permanent. Many choices felt reversible. Moving forward, even imperfectly, usually seemed better than waiting.</p><h1>Work felt more forgiving</h1><p>I started at Oracle in 1990, straight out of MIT. What worried me then wasn&#8217;t whether I&#8217;d get a job. It was whether I&#8217;d get a good offer.</p><p>Recruiting was straightforward. I signed up for interviews at the MIT career center. Companies came to campus, interviewed students, and made offers. I didn&#8217;t feel like I had to fight an AI application tracking system just to be seen.</p><p>I had studied signal processing, but I decided to try product management. I took an entry&#8209;level job as an associate product manager. Changing direction early felt manageable.</p><p>Working at a big company also gave me a clear sense of progression. I moved from associate product manager to product manager quickly. The career path was visible. If I learned the business and did solid work, things tended to move.</p><p>Later, a headhunter call led to my first startup, Visioneer. When I eventually got laid off, it was stressful, but it didn&#8217;t feel defining. Once people knew I was available, other opportunities appeared, and I ended up working for a friend&#8217;s company, Latitude Communications.</p><p>Even the harder moments came with an underlying sense that things would work out. That assumption shaped my attitude toward work/career.</p><h1>Housing provided early footing</h1><p>Housing played a big role in our sense of stability.</p><p>We bought our first condo in 1993 in San Mateo, about five minutes from my office. It cost under $200,000. I was earning just over $60,000 at the time and qualified for the mortgage on my own.</p><p>I put about ten percent down and paid PMI. It felt like a stretch, but not a gamble. Buying felt like an early milestone, not something to postpone indefinitely.</p><p>When we bought our first house in 1998, the condo had appreciated. We sold it, negotiated a rent&#8209;back, and used the equity for the down payment on our house. We weren&#8217;t doing anything especially smart. The market made that step possible at the time.</p><p>Once we owned, housing costs stabilized and equity built quietly in the background. That took pressure off other decisions.</p><p>For many people now, housing never really plays that role. Renting stretches on. Buying comes later, if at all. Without that early footing, everything else feels more tentative.</p><h1>Division of labor mattered</h1><p>Marsha was a stay&#8209;at&#8209;home mom throughout our parenting years. At the time, that is how we chose to divide our responsibilities for our family. In hindsight, I see how much stability it created for us.</p><p>I worked extremely long hours. Meetings all day. Getting to my own work at night. Traveling when the business needed it. I missed family meals more often than I care to admit. I could focus on work because Marsha was fully focused on running our household.</p><p>That arrangement wasn&#8217;t something we ever even debated. We just went that way, and it worked.</p><p>Many families today don&#8217;t have that option. Both parents work, and both also manage everything else. Couples make it work, but it means constant trade&#8209;offs and very little slack. Work and family demands collide all the time. That alone changes how life feels.</p><h1>College was still expensive, but it felt less binary</h1><p>College was expensive back then too. Very expensive.</p><p>We paid over $70,000 a year for our older daughter to attend Yale, and close to $80,000 a year for our younger daughter at Carnegie Mellon. Those were serious numbers. Paying for college was not casual even then.</p><p>What feels different now isn&#8217;t just the price, but what people expect that price to deliver.</p><p>When we were thinking about college for our kids, a strong degree felt like it opened doors, but not in a narrowly defined way. A good school signaled capability. What came next still depended on interests, timing, and opportunities that unfolded along the way.</p><p>Now, college often feels like it needs to land much more precisely. Not just a good school, but the right one. Not just a degree, but one that carries enough weight to lead to a specific job or to unlock admission to the right graduate program. There&#8217;s more focus on whether the degree will clear a series of gates that may be difficult to pass later.</p><p>Because of that, the pressure shows up earlier. Families talk about college less as a formative experience and more as a critical link in a longer chain of life steps required to survive in the modern world. When the outcome feels that specific, there&#8217;s less tolerance for missteps or detours.</p><p>The cost didn&#8217;t just go up faster than inflation. The expectations around what the high college cost needed to produce became tighter.</p><h1>Better tools, higher expectations</h1><p>I probably worked longer hours than many people do today. There was a culture of staying late together and working through problems face to face.</p><p>There were also fewer shortcuts. If I didn&#8217;t know something, I had to learn it, find someone who did, or make a call with imperfect information. The tools were limited.</p><p>Today&#8217;s tools (including the latest round of AI tools I&#8217;ve been writing about) are powerful, but they also raise expectations. When work gets faster, more is expected. Time that&#8217;s saved doesn&#8217;t always feel saved. Work rarely feels finished.</p><p>Combined with everything else competing for attention, that makes life feel more constrained.</p><h1>What shifted</h1><p>When I step back and look at all of this together, I don&#8217;t see the biggest changes in levels of effort or the character of the people. The changes I see are all structural.</p><p>Work feels less forgiving. Housing is harder to use as an early stabilizer. Two incomes are assumed. Parenting carries more pressure. Better tools raise expectations instead of easing them.</p><p>My own path included plenty of hard work, but it was supported by conditions that made forward motion feel safer. Those conditions are challenging to assemble now.</p><p>For me, this isn&#8217;t about advice or conclusions. It&#8217;s about noticing that the ground moved, and that many of the hesitations and delays I see around me make sense once that shift is acknowledged.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/different-rules/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/different-rules/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p>]]></content:encoded></item><item><title><![CDATA[A Spring Catch-Up]]></title><description><![CDATA[Meals, milestones, and a couple of things that didn&#8217;t quite work]]></description><link>https://www.retiredpdx.com/p/a-spring-catch-up</link><guid isPermaLink="false">https://www.retiredpdx.com/p/a-spring-catch-up</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 05 Apr 2026 13:03:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!d7ya!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I got behind on writing again.</p><p>When that happens, I usually feel a brief urge to come up with a single, coherent theme and pretend everything fits neatly inside it. That rarely works.</p><p>What does work is admitting that a lot of different things have been going on at once and just writing them down.</p><p>This is one of those posts.</p><h1><strong>1. PDX Dining Month</strong></h1><p>March was PDX Dining Month, organized by Travel Portland. A long list of restaurants offered three-course menus for either $35 or $55. It was a good excuse to eat out more than usual.</p><p>We did Dining Month meals at Mucca Pizzeria, Hey Luigi, and Farmhouse Kitchen. All three were solid. The standout night was Hey Luigi, mostly because we somehow ended up with ten people around the table.</p><p>What amused me was how often we ignored the Dining Month menu once we actually sat down. At Higgins, we finally ordered the famous burger. At Bryan Furman BBQ, we went with the family pack. At Laurelhurst Market, it was our first visit and the regular menu was too tempting.</p><p>The only real miss for me was the Higgins bar burger. After having the Farmer and the Beast burger at Breakside on Dekum earlier in the month, it felt a bit meh by comparison. Everything else felt very Portland in the best way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z36a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z36a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z36a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z36a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z36a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z36a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!z36a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!z36a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!z36a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!z36a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b4c8614-7889-4e68-bcec-b39e0aabd457_2048x1536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Our group of 10 at Hey Luigi.  Photo credit: @juno536</em></figcaption></figure></div><div><hr></div><h1><strong>2. PDX Sandwich Week</strong></h1><p>Sandwich Week overlapped with Dining Month and ran during the first week of March. It was put on by the Portland Mercury and featured ten dollar sandwiches across the city.</p><p>Mucca Pizzeria ended up doing double duty for us. Marsha ordered the Sandwich Week special, I ordered the Dining Month menu, and we shared everything. It felt like the optimal strategy.</p><p>My favorite sandwich was the Midcity Meltdown from MidCity Smash Burger. It is basically a patty melt on Texas toast. I love smash burgers, and the Texas toast made it feel like extra value compared to a standard bun.</p><p>MidCity Smash Burger is a food cart outside Uptown Brewing, which meant one credit card transaction inside for beer and another outside for food. Very Portland.</p><p>My unofficial Sandwich Week award goes to MidCity Smash Burger. A burger priced like a sandwich will almost always win.</p><div><hr></div><h1><strong>3. Marsha&#8217;s birthday and a DQ cake</strong></h1><p>Marsha&#8217;s birthday cake turned into a small project.</p><p>Years ago, I tried to surprise her with a Dairy Queen cake because she worked at DQ in high school and college. I did not know you had to order those cakes in advance and ended up taking home a modified Batman cake out of sheer luck.</p><p>This year, I tried again. Our local DQ no longer does copyrighted superhero images, but the person working there suggested buying a licensed edible image topper at Fred Meyer and using it on a Blizzard cake.</p><p>We have a close friend who used to be a professional cake decorator, and she offered to help. The topper was five dollars. A small Batman car was another dollar. Fred Meyer turned out to be a great deal.</p><p>The cake itself was an Oreo Blizzard cake, obviously.</p><p>What really moved Marsha was the care our friend put into it. I felt the same way.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d7ya!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d7ya!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d7ya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!d7ya!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d7ya!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98f0f77-efd2-4873-bf68-32c4d42b916c_1600x1200.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Marsha&#8217;s Modified Batman DQ Blizzard Cake. Photo credit: naomi-s</figcaption></figure></div><div><hr></div><h1><strong>4. Kidney transplant status</strong></h1><p>Things continue to move forward on the kidney transplant front.</p><p>I completed the full-day evaluation in early February and had a CT abdominal scan in March to confirm there was a viable place to attach the organ. There is, which was a big relief.</p><p>I am now officially on the transplant list, but currently on hold while a few items wrap up. Vaccinations are done, and a cardiac stress test is scheduled for April 24.</p><p>This feels like progress, with some anxiety mixed in. The biggest ongoing stress remains around finding a living donor.</p><div><hr></div><h1><strong>5. A Rathke&#8217;s Cleft Cyst</strong></h1><p>A small Rathke&#8217;s Cleft Cyst showed up on my most recent MRI. It is three millimeters, about the size of a grain of rice.</p><p>Medically, it is not urgent. Mentally, it feels like a warning light on the dashboard that I am choosing not to focus on right now.</p><div><hr></div><h1><strong>6. New drugs and exercise</strong></h1><p>Lately, my focus has been rebuilding aerobic capacity.</p><p>We simplified my blood pressure medication regimen down to just Olmesartan, and the difference was immediate. The dizziness and balance issues when my heart rate went up are gone.</p><p>I closed my Apple Watch rings 30 out of 31 days last month with a mix of HIIT, strength training, and long walks.</p><p>It feels a bit like cramming before an exam, but I will take it.</p><div><hr></div><h1><strong>7. Vibe coding a calendar sync</strong></h1><p>One consulting assignment involves interviewing early customers of a new product. Most people just want to see my free and busy time in Google Calendar.</p><p>I vibe coded a simple Google Apps Script that syncs all my calendars into one client-visible view. I had never used Google Apps Script before, and the AI made it work with very little code.</p><p>The client only sees blocks that say &#8220;Busy (synced).&#8221; No details. No privacy concerns.</p><div><hr></div><h1><strong>8. When my AI agent went rogue</strong></h1><p>My AI agent is only supposed to respond when tagged with #steve-ai. Sometimes it ignores that rule.</p><p>At one point, it interjected, apologized, broke its own configuration, and later admitted there was no way to do what I wanted.</p><p>My favorite quote from it was: &#8220;You&#8217;re right, I messed up... The irony is thick.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4bvb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4bvb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 424w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 848w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 1272w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4bvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png" width="1092" height="452" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:452,&quot;width&quot;:1092,&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;: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_!4bvb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 424w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 848w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 1272w, https://substackcdn.com/image/fetch/$s_!4bvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0ea5214-d5a5-44d1-a56b-af8602495f4e_1092x452.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>iMessage from a supposed &#8220;listen-only&#8221; AI agent. Screenshot by author.</em></figcaption></figure></div><div><hr></div><h1><strong>9. AI trying on a dress</strong></h1><p>Marsha is making my older daughter&#8217;s wedding dress for May, and we tried using AI to preview it.</p><p>The result was impressive and wrong at the same time. The biggest issue was body proportions.</p><p>It is useful for aesthetics, but not for understanding real fit.</p><div><hr></div><h1><strong>10. Engagement parties everywhere</strong></h1><p>My older daughter and her fianc&#233; handled their engagement celebrations in a way I really admired.</p><p>They hosted several small gatherings instead of one big party, each one personal and relaxed.</p><p>It was another reminder that having adult kids who do things their own way is pretty great.</p><div><hr></div><p>Anyway, that&#8217;s the state of things for now.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/a-spring-catch-up/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/a-spring-catch-up/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[A Familiar Town Hall, a Sharper Edge]]></title><description><![CDATA[What people are asking now, and why protest keeps coming up]]></description><link>https://www.retiredpdx.com/p/a-familiar-town-hall-a-sharper-edge</link><guid isPermaLink="false">https://www.retiredpdx.com/p/a-familiar-town-hall-a-sharper-edge</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Tue, 24 Mar 2026 16:50:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7z3t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.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_!7z3t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7z3t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 424w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 848w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 1272w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7z3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:877306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/191999665?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.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_!7z3t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 424w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 848w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.png 1272w, https://substackcdn.com/image/fetch/$s_!7z3t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d2de4c6-157d-4c84-a646-e901c82b1af5_1721x968.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">Rep. Suzanne Bonamici at Ida B. Wells High School in Portland, OR.</figcaption></figure></div><p><em><strong>Editor&#8217;s note</strong></em></p><p>This post follows a town hall I attended last year with Rep. Suzanne Bonamici, which I wrote about <a href="https://www.retiredpdx.com/p/good-town-hall-with-our-representative">here</a>. I have also written about attending the first No Kings rally <a href="https://www.retiredpdx.com/p/peaceful-protest-on-saturday-june">here</a> and <a href="https://www.retiredpdx.com/p/my-experience-at-a-very-peaceful">here</a>.</p><p>With No Kings 3 coming up this Saturday, this felt like a good moment to connect those threads.</p><div><hr></div><h1><strong>Coming back a year later</strong></h1><p>Last June, Marsha and I attended a town hall with Rep. Suzanne Bonamici. I came away from that evening feeling encouraged. The questions were serious but measured, and while there was frustration in the room, there was still a sense that institutions were strained yet recognizable.</p><p>Last night&#8217;s town hall at Ida B. Wells High School felt different. It wasn&#8217;t worse, but it was heavier. It felt more urgent and less patient.</p><h1><strong>The format was familiar</strong></h1><p>The mechanics were what you would expect. Staff were present to handle constituent casework. Questions were handled by lottery. The session ran about an hour and ended on time.</p><p>Rep. Bonamici opened with remarks and then moved into a long Q&amp;A with the audience.</p><h1><strong>From erosion to disregard</strong></h1><p>In my June 2025 post, I noted that Rep. Bonamici focused heavily on democratic norms, separation of powers, and civil liberties. She talked about political violence, illegal impoundment of funds, and the need to rely on the courts to check executive overreach.</p><p>Those themes were still present last night, but they felt sharper.</p><p>This time, the conversation was less about erosion and more about open disregard.</p><p>Bonamici described the last year and a half as &#8220;a time of chaos,&#8221; pointing to constitutional violations, corruption, and unilateral executive action. When she addressed the war with Iran, her framing was direct.</p><blockquote><p>&#8220;The president does not have the authority to start a war. He didn&#8217;t come to Congress.&#8221;</p></blockquote><h1><strong>Asking the question that was hanging there</strong></h1><p>One difference for me personally was that this time I got to ask a question.</p><p>I asked whether our current legal and congressional oversight mechanisms are actually sufficient to ensure accountability for executive abuses, or whether reforms are needed to prevent this from becoming the new normal.</p><p>Bonamici acknowledged that some reforms were put in place after the first Trump administration. She was also candid about the challenges. Oversight is harder when the Department of Justice is not acting independently, and enforcement gaps matter just as much as laws on the books.</p><p>Her answer echoed something that came up repeatedly throughout the night. Guardrails exist, but they only work if institutions are willing to use them.</p><h1><strong>A different tone from the audience</strong></h1><p>As the Q&amp;A continued, a deeper frustration surfaced in the room.</p><p>Several people expressed some version of the same concern. This does not feel normal. Congress feels absent. Lawful process feels inadequate when the law itself is being ignored.</p><p>One person put it plainly. Business as usual does not feel like enough.</p><p>That sentiment came up again and again, even when the questions themselves were different.</p><h1><strong>Why protest came up so often</strong></h1><p>Bonamici did not push back on that frustration. Instead, she addressed it directly.</p><p>She made the case that public protest is not symbolic or optional in moments like this. It is a necessary response to authoritarian pressure.</p><blockquote><p>&#8220;You know what authoritarians want you to do. Give up.&#8221;</p></blockquote><p>Her argument was straightforward. Protest works because it resists that impulse. Being visible and persistent creates pressure that institutions alone cannot generate when those institutions are under strain.</p><p>That framing resonated with me. I have written before about showing up at demonstrations, including the first No Kings rally. At the time, those protests felt largely symbolic. Last night&#8217;s conversation made them feel more structural.</p><h1><strong>Things she has not done before</strong></h1><p>What stood out most to me was how explicitly Bonamici talked about crossing lines she had not crossed before as a member of Congress.</p><p>She described protesting outside federal agencies, including the Departments of Education and Labor. She talked about standing outside NOAA to oppose efforts to undermine the agency. She described skipping the State of the Union because she could not sit through what she viewed as repeated falsehoods.</p><p>She also emphasized the scale of her legal response. She has signed onto an unprecedented number of court briefs challenging the administration, using litigation when legislation stalls and enforcement fails.</p><p>These were not framed as symbolic gestures. They were described as reluctant but necessary steps.</p><h1><strong>Immigration and ICE</strong></h1><p>Immigration came up repeatedly during the evening.</p><p>In particular, Bonamici was asked about ICE activity at airports. Her response was unequivocal.</p><blockquote><p>&#8220;ICE does not belong in airports.&#8221;</p></blockquote><p>Her concern focused on safety, training, and mission creep. Airports require calm, specialized coordination. Introducing ICE enforcement into that environment increases fear and risk rather than security.</p><h1><strong>Voting rights and the SAVE Act</strong></h1><p>Separately, Bonamici spoke at length about the SAVE Act, which she described as a voter suppression bill.</p><p>Her concerns centered on the false premise that undocumented immigrants are voting and the real impact the bill would have on eligible voters. She emphasized the burden it would place on women, survivors of domestic violence, rural residents, and people without access to original documents.</p><p>Her assessment was blunt.</p><blockquote><p>&#8220;He&#8217;s not going to win unless he suppresses the vote.&#8221;</p></blockquote><p>At this point, the debate is no longer about intent. It is about consequences.</p><h1><strong>My take this time</strong></h1><p>Last year, I left the town hall thinking the system was under stress but still recognizable. This time, it felt like people were coming to terms with what it means when those systems no longer reliably protect us.</p><p>I am still glad Rep. Bonamici shows up, takes unscripted questions, and is honest about what she can and cannot do. I am also struck by how much of the evening focused on what citizens are expected to do next, not just what Congress might do later.</p><p>That shift matters, especially as we head into No Kings 3 this Saturday.</p><p>I have written before about the <a href="https://www.theguardian.com/us-news/2025/jul/17/what-is-the-3-5-percent-protest-rule">3.5 percent rule</a>. Erica Chenoweth&#8217;s research suggests that nonviolent campaigns are much more likely to succeed than violent ones, and that sustained participation from a relatively small share of the population can force serious political change. That does not mean everyone has to march, or even that everyone has to protest in the same way. It does mean that participation matters, whether that looks like watching from the street, supporting organizations doing the work, talking with people in your own circles, or simply staying engaged rather than tuning out.</p><p>If you are looking for a local No Kings event, the organizers list them at:</p><p><a href="https://www.nokings.org/">https://www.nokings.org/</a></p><p>It also reinforces something I have written before. You can pretend to care, but you cannot pretend to show up.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/a-familiar-town-hall-a-sharper-edge/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/a-familiar-town-hall-a-sharper-edge/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Separating Meaning from Voice in Product Marketing]]></title><description><![CDATA[How AI enables a clearer division of responsibilities, and where that division breaks down]]></description><link>https://www.retiredpdx.com/p/separating-meaning-from-voice-in</link><guid isPermaLink="false">https://www.retiredpdx.com/p/separating-meaning-from-voice-in</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 16 Mar 2026 03:17:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rKy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.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_!rKy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rKy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rKy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:954127,&quot;alt&quot;:&quot;Diagram with meaning, voice, and personalization all feeding into AI&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/191089459?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram with meaning, voice, and personalization all feeding into AI" title="Diagram with meaning, voice, and personalization all feeding into AI" srcset="https://substackcdn.com/image/fetch/$s_!rKy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!rKy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1ebadc-7e3b-46c2-981f-4b6eae067764_1536x1024.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">Separating meaning, voice, and personalization&#8212;and treating AI as a downstream renderer rather than the source of intent. Illustration generated using AI tooling, with final edits by the author.  </figcaption></figure></div><p><em>Editor&#8217;s note: I&#8217;ve written a lot about personal AI experimentation. This piece widens the lens to a practical company use case. It looks at how product marketing teams can use AI to scale consistent content without losing semantic integrity or human credibility.</em></p><div><hr></div><h2>Why I&#8217;m widening the lens</h2><p>If you&#8217;ve read my writing about AI before, most of it has been personal. I&#8217;ve spent time learning what it feels like to use AI as a writing partner. I&#8217;ve paid attention to where it helps, where it gets in the way, and what happens when the output sounds close to me but not quite right.</p><p>Lately, I&#8217;ve been running into a different class of questions. These aren&#8217;t about whether AI can help one person write. They&#8217;re about whether AI can help organizations communicate more consistently without flattening the message or drifting off position.</p><p>Personal use is where most of us start. In my professional experience, I&#8217;ve been finding that the real leverage, and the real risk, shows up when AI is used across teams. Product marketing, brand, PR, sales, regional marketing, and agencies all touch the same core ideas. That&#8217;s where inconsistencies compound. That&#8217;s also where &#8220;good enough&#8221; copy quietly drifts off message.</p><p>This post is my attempt to connect those two worlds. The same issues I&#8217;ve been picky about in personal writing show up again at scale in a professional setting. Voice matters. Boundaries matter. Knowing what not to explain matters.</p><h2>What product marketing actually owns</h2><p>At its core, product marketing is not responsible for writing copy. It is responsible for defining what a product means, who it is for, why it matters, what can and cannot be claimed, and how it should be positioned relative to alternatives.</p><p>Those are semantic decisions. They are not inherently prose.</p><p>The usual failure mode is familiar. Product marketing expresses these decisions as finished copy. Downstream teams then edit that copy to fit their channel, audience, and voice. Meaning and wording get coupled. Drift follows.</p><p>AI doesn&#8217;t fix that problem by itself. It makes the coupling more obvious.</p><h2>A three&#8209;layer model</h2><p>The model I&#8217;m proposing separates meaning, voice, and personalization into three explicit artifacts.</p><h3>1) MESSAGING.md (meaning)</h3><p>This is the canonical product marketing artifact. It captures positioning, value propositions, proof points, objections, and boundaries. It is not channel&#8209;specific and not written for publication.</p><p>If something changes about the product&#8217;s meaning, it changes here.</p><h3>2) VOICE.md (rendering constraints)</h3><p>VOICE.md defines how the message should sound. That includes tone, diction, structure, and what to avoid.</p><p>There does not need to be one voice. Brand, PR, sales, and regional teams often need legitimately different voices.</p><p>VOICE.md changes how something is said. It does not change what is said.</p><h3>3) PERSONALIZATION.md (optional local context)</h3><p>PERSONALIZATION.md adds relevance without changing claims. It can include vertical context, regional framing, or situational emphasis.</p><p>It is additive, not generative. It must not introduce new promises or reposition the product.</p><h2>Who does what in this model</h2><p>One reason this can feel abstract on first read is that &#8220;consumer&#8221; gets overloaded. Here, the consumer is not the end customer. It&#8217;s the internal role generating content: brand, PR, advertising, demand generation, sales enablement, regional marketing, and partners.</p><ul><li><p>MESSAGING.md is owned by product marketing.</p></li><li><p>VOICE.md is owned by whoever owns the audience and channel.</p></li><li><p>PERSONALIZATION.md is owned by whoever owns local context.</p></li></ul><p>This model doesn&#8217;t remove governance. It makes governance visible. Meaning is reviewed upstream. Voice is constrained by explicit rules. Personalization is limited by design.</p><p>The cost is a bit more thinking up front. The payoff is far less rework downstream.</p><h2>How the pieces fit together</h2><p>Stripped of prose and polish, the model looks like this:</p><pre><code><code>MESSAGING.md  +  VOICE.md  +  (optional) PERSONALIZATION.md
        \______________  AI renderer  ______________/
                         |
                         v
     website copy &#8226; ad variants &#8226; email campaigns &#8226; sales sequences
     vertical versions &#8226; regional versions &#8226; partner&#8209;ready assets
</code></code></pre><p>Everything else in this post is just different ways of rendering that same structure.</p><h2>Why Markdown</h2><p>These artifacts are written in Markdown deliberately. AI systems infer importance from structure. Headings, lists, emphasis, and hierarchy matter. Markdown is the lowest-friction way to encode that structure while staying human-readable.</p><p>The proposal is not that everyone becomes a prompt engineer. It&#8217;s that teams learn to express intent in a structured, readable format that both humans and AI can reason over.</p><h2>Where AI fits</h2><p>AI is not the author in this model. It is the renderer. Given MESSAGING.md, VOICE.md, and optional PERSONALIZATION.md, AI assembles channel-specific outputs without inventing new meaning.</p><h2>A concrete example</h2><p>To make this tangible, here is a hypothetical product: a compact folding umbrella that is waterproof and UV-protective, small enough for a purse or a small gear bag.</p><p>Below are sample inputs (MESSAGING.md, VOICE.md, PERSONALIZATION.md) and the kinds of outputs they can produce.</p><h3>Example MESSAGING.md (meaning)</h3><pre><code><code># MESSAGING.md
## Product
**PocketShield Umbrella**
Compact folding umbrella with storm-ready waterproofing and UV protection.

## Positioning
A compact umbrella you actually carry&#8212;built for sudden rain and harsh sun.

## Target customers
- Urban commuters
- Frequent travelers
- Minimalists carrying small bags or gear slings

## Core value propositions
1. Carry it every day (compact and lightweight)
2. Trust it in heavy rain and gusts
3. Useful in sun as well as storms

## Boundaries
- Do not claim medical benefits
- Do not claim storm or hurricane immunity
</code></code></pre><h3>Example VOICE.md (global consumer brand)</h3><pre><code><code># VOICE.md
## Brand voice
Calm, confident, and practical.

## Tone
- Clear and direct
- Global English
- Friendly, not chatty

## Avoid
- Buzzwords
- Exaggeration
- Slang or regional idioms
</code></code></pre><h3>Example PERSONALIZATION.md (sun + rain regions)</h3><pre><code><code># PERSONALIZATION.md
## Regional context
Markets with frequent rain and strong sun.

## Local framing
- Sun one minute, rain the next
- Weather changes quickly

## Constraints
- Do not introduce new product claims
- Do not invent local statistics
</code></code></pre><h2>Example outputs rendered from the same inputs</h2><h3>Website hero copy</h3><pre><code><code>PocketShield Umbrella
The compact umbrella you actually carry.
Built for sudden rain and harsh sun. Small enough to keep with you every day&#8212;without feeling flimsy when the weather turns.
One dependable umbrella for the weather you get, not the forecast you planned.
CTA: Shop PocketShield
</code></code></pre><h3>Paid social ad</h3><pre><code><code>Primary text: Sun one minute. Rain the next. PocketShield is the compact umbrella built for both.
Headline: One umbrella. Fewer tradeoffs.
CTA: Learn more
</code></code></pre><h3>Short email</h3><pre><code><code>Subject: The umbrella you&#8217;ll actually have with you
Body: Most umbrellas are either bulky or unreliable. PocketShield folds small enough to live in your bag, but it&#8217;s built for heavy rain and strong sun when the weather changes quickly. Take a look &#8594;
</code></code></pre><h2>Inspecting the actual inputs</h2><p>I&#8217;m including the sample Markdown files used for this umbrella example as a downloadable bundle. The important thing is not the umbrella&#8212;it&#8217;s the structure.</p><p>Download: <a href="https://github.com/stevepao/meaning-voice-renderer/archive/refs/tags/V1.0.1.zip">https://github.com/stevepao/meaning-voice-renderer/archive/refs/tags/V1.0.1.zip</a></p><h2>Try it yourself</h2><p>Below is a single prompt you can paste into ChatGPT or Claude. The prompt itself is provided in raw Markdown, since the whole point is to make Markdown a shared input language.</p><pre><code><code># Prompt

## Role
You are an **AI content renderer** for product marketing assets. You do **not** invent meaning. You assemble approved inputs.

## Inputs
You will receive up to three Markdown inputs:

1. **MESSAGING.md** &#8212; authoritative meaning.
2. **VOICE.md** &#8212; rendering constraints.
3. **PERSONALIZATION.md** (optional) &#8212; constrained local context.

## Precedence
If inputs conflict: **MESSAGING.md &gt; VOICE.md &gt; PERSONALIZATION.md**

## Rules
- Treat **MESSAGING.md** as the source of truth.
- Apply **VOICE.md** as mandatory style constraints.
- Apply **PERSONALIZATION.md** only as constrained relevance.
- If a detail is missing, proceed without it rather than guessing.
- Avoid hype, overpromising, and medical/legal claims.

## Tasks
Generate three assets:

### A) Website hero section
- Headline
- Subhead
- 2 short paragraphs
- 1 CTA button label

### B) Paid social ad
- Primary text
- Headline
- Description (optional)
- CTA

### C) Short email
- Subject line
- Body under 120 words
- One clear CTA line

## Output format
- Label each asset clearly with Markdown headings.
- Keep claims consistent with **MESSAGING.md** boundaries.

---

## BEGIN MESSAGING.md
[paste MESSAGING.md here]
## END MESSAGING.md

---

## BEGIN VOICE.md
[paste VOICE.md here]
## END VOICE.md

---

## BEGIN PERSONALIZATION.md (optional)
[paste PERSONALIZATION.md here]
## END PERSONALIZATION.md
</code></code></pre><h2>Where this breaks down</h2><p>This model works best for assets like website copy, advertising, email campaigns, and sales sequences&#8212;where consistency and adaptability must coexist. It breaks down for founder stories, first-person thought leadership, and narrative essays. In those cases, meaning and voice co-emerge through lived discovery, and trying to separate them flattens the content.</p><h2>Conclusion</h2><p>AI doesn&#8217;t change the need for judgment. It changes where that judgment belongs. When PMM owns meaning and boundaries, downstream teams own voice and constrained personalization, and AI renders outputs, content scales without losing coherence. AI stops being magical and starts being useful.</p><p>If you want to try this without a reorg, pilot it with one launch. Have PMM publish a single MESSAGING.md, have brand publish one VOICE.md, have one field or vertical team publish one PERSONALIZATION.md, and then render three assets (web hero, paid social, one email). The goal of the pilot is not volume. It&#8217;s to prove that meaning stays stable while voice and context vary safely.</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/separating-meaning-from-voice-in?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/separating-meaning-from-voice-in?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/separating-meaning-from-voice-in/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/separating-meaning-from-voice-in/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em><strong>AI disclosure:</strong> I used AI tools during the drafting and editing process to help clarify structure and language. All ideas, judgments, and final wording are my own.</em></p>]]></content:encoded></item><item><title><![CDATA[Vibe Coding in Practice ]]></title><description><![CDATA[What building a real scheduling tool taught me]]></description><link>https://www.retiredpdx.com/p/vibe-coding-in-practice</link><guid isPermaLink="false">https://www.retiredpdx.com/p/vibe-coding-in-practice</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 08 Mar 2026 00:28:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LAMy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.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_!LAMy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LAMy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LAMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2915216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/190241930?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.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_!LAMy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LAMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F952f6d96-c0d4-4d1c-badd-0f9ae3cb3cf2_1536x1024.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"><em>Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted by the author.</em></figcaption></figure></div><p>I started this project for a very small, very human reason. I wanted to get my friends together for happy hour without the endless back and forth of &#8220;what works for you?&#8221; and &#8220;how about next Monday night?&#8221; Like most people, we already had group chats, so my first instinct was obvious. Add AI to the conversation and let it sort things out.</p><p>That turned out to be the wrong idea.</p><p>Once I included AI in group conversations, the social dynamics changed immediately. People didn&#8217;t just answer questions anymore. They started talking to the AI to mess with it. Even when I configured the AI to mostly listen and only speak when mentioned, it still interrupted human conversations in unexpected ways. I found myself regularly telling it not to interrupt us.</p><p>That was my first signal that something deeper was going on. Scheduling isn&#8217;t really a conversational problem. It&#8217;s a process problem. And conversational AI, for all its strengths, is actually pretty bad at keeping a process on track.</p><p>That&#8217;s when a simple idea became clear to me:</p><p><em>The AI shouldn&#8217;t be the tool. The AI should drive the tool.</em></p><p>Instead of trying to massage any new social behavior, I needed something boring, familiar, and predictable. I wanted something closer to Doodle than a chat bot. I wanted AI to help build and operate that system, not to replace it with unstructured conversation.</p><p>I&#8217;m writing this partly as a personal reflection and partly as a reality check. I wanted to see what it actually feels like to build something real with AI, not just a demo. Some parts of this post are about the human side of that experience. Other parts go into the details that surprised me once the system started to get used in real ways.</p><p>I summarize what I&#8217;d do differently next time near the end of the post, after walking through how I got there.</p><div><hr></div><p><strong>Short version</strong>: Building fast with AI worked well for exploration. The hard parts only showed up once real people, real calendars, and real time were involved.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7B7o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7B7o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7B7o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&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;: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_!7B7o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7B7o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0dda1ad-6fb6-47fd-bc7f-47e4f3471c90_2048x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A quick look at the <a href="https://meet.hillwork.net">Hillmeet</a> interface both for agentic AI and for human Web users</em></figcaption></figure></div><h1>When this started to feel real</h1><p>The moment I decided the tool needed to work with Google Calendar, everything got more serious.</p><p>Reading calendars, checking availability, and creating events meant &#8220;OAUTH&#8221; (a standard authorization mechanism used by Google, Apple, Microsoft, and others). Getting permissions via OAUTH meant redirects, or people leaving the flow of the applications to grant permissions and coming back later. Suddenly I wasn&#8217;t hacking on a clever script anymore. I was building a real web app with real trust boundaries.</p><p>I tried to be careful. I simplified the login security flow and required authentication up front. I followed Google&#8217;s guidance and only asked for calendar permissions when the user actually needed them. If someone wanted to check availability, I asked then. If they wanted to create an event, I asked for more permissions at that moment.</p><p>On paper, this sounded responsible.</p><p>In practice, it exposed a new class of problems around losing context.</p><p>A typical failure looked like this: I&#8217;d be viewing a poll, click &#8220;connect calendar&#8221; to check availability, complete the Google authorization flow, and then land on the list of calendars to check against with no obvious way back to the poll I&#8217;d been working on. I&#8217;d be stuck in &#8220;no man&#8217;s land&#8221; forced to return to the home page and find the poll again in order to submit my responses.</p><p>Nothing was technically broken. OAUTH worked. Calendars loaded. But the app had forgotten why I was there.</p><p>From the outside, that feels awful. Not &#8220;this is buggy,&#8221; but &#8220;this feels like Steve&#8217;s homegrown hack.&#8221; And for something as casual as coordinating with friends, that wasn&#8217;t acceptable. If the tool feels harder than just texting, it has already failed.</p><h1>Access problems I didn&#8217;t expect</h1><p>As the project grew, access rules started creeping in quietly.</p><p>Vibe coding had defaulted to adding secrets everywhere. Each participant had their own secret link. There was also a generic link meant to work for everyone. At first, this felt secure and convenient.</p><p>Then I added a second way to interact with the system.</p><p>Once I introduced an MCP gateway so an AI agent could interact with the app, two things broke in ways that surprised me. Email notifications sent from the MCP path didn&#8217;t behave the same way as ones sent from the web app. And some &#8220;everyone&#8221; links relied on web session state, which meant they couldn&#8217;t be rediscovered later by a stateless agent.</p><p>The fix wasn&#8217;t clever crypto. It was storing encrypted secrets in the database so access could be resolved the same way no matter how someone arrived. That was the first time I really felt how every new integration pulls hidden assumptions into the open.</p><h1>When time handling went wrong</h1><p>The moment things crossed from messy to dangerous wasn&#8217;t access control. It was time.</p><p>I thought I was being careful. I stored times in UTC. I converted them for display. Web sessions carried user time zones, so everything looked right when I tested it in the browser. I assumed that meant I was safe.</p><p>Then I sent a meeting invitation that was supposed to be March 13 at 11am Pacific.</p><p>It showed up as 3pm Pacific.</p><p>That&#8217;s not a small error. That&#8217;s a trust breaking error. Worse, I couldn&#8217;t immediately explain why it happened.</p><p>What eventually became clear was unsettling. Different parts of the system were doing what they thought was the right thing, but under different assumptions. Web paths relied on session time zones. MCP paths ran in server time. Some code parsed timestamps explicitly. Other code let the runtime guess. Nothing was obviously wrong on its own. Together, they were wrong.</p><p>That was the moment I stopped trusting my mental picture of how the system worked.</p><h1>Why I couldn&#8217;t have specified this up front</h1><p>I know some readers will ask why I didn&#8217;t just write better specs at the beginning. Others may wonder why AI didn&#8217;t magically prevent this.</p><p>I&#8217;ve heard plenty of success stories where teams define everything up front, write exhaustive tests, and then let AI agents run until all the tests pass. I believe those stories. I also believe they tend to work best when the problem is already well understood by the authors.</p><p>That wasn&#8217;t my situation.</p><p>I couldn&#8217;t have written the right rules at the start because I didn&#8217;t yet know what the system really was. My hardest problems weren&#8217;t about calculations or algorithms. They were about how many ways people and systems would interact, and which hidden assumptions actually mattered.</p><p>Every meaningful rule I eventually wrote came after something broke in a way that made me uncomfortable.</p><h1>How I used AI once things broke</h1><p>Once time broke, I stopped asking AI to fix a bug and instead asked it to help me look at the whole system.</p><p>Not just calendar code. Not just MCP code. Everything.</p><p>I wrote down a simple rule in plain language: store times in one place, convert them deliberately, and never rely on defaults. Then I walked the entire codebase with AI. Controllers. Services. Views. Email generation. Calendar files. MCP tools. Anywhere time entered or left the system.</p><p>The result wasn&#8217;t just a fix. It was a shared understanding of where assumptions were allowed and where they were dangerous. It also left behind a checklist so I wouldn&#8217;t quietly reintroduce the same problems later.</p><h1>What I learned from building this this way</h1><p>Vibe coding didn&#8217;t fail me. It did exactly what it&#8217;s good at. It helped me build something real very quickly and surface reality early.</p><p>The problem wasn&#8217;t speed. The problem was invisible rules.</p><p>Vibe coding is great at creating working paths. What it doesn&#8217;t do automatically is make sure all those paths behave the same way under the hood. That part only becomes obvious once the system is exercised in different ways.</p><h1>Spec later, but seriously</h1><p>I don&#8217;t think I can write good rules before I&#8217;ve seen where things actually break.</p><p>Before something breaks, rules are guesses. After something breaks, rules are grounded in reality.</p><p>Vibe coding helped me get to that reality faster. Adding structure afterward helped me turn those lessons into something reliable.</p><h1>What I&#8217;d do differently next time</h1><p>Looking back, I don&#8217;t think the mistakes I made were the result of moving too fast. They were the result of not knowing, yet, where the fragile parts of the system actually were.</p><p>Next time, I&#8217;d be more deliberate about separating exploration from reliability. I&#8217;d lean fully into exploration early, expecting things to be rough. Then, once something starts to matter, I&#8217;d pause and treat that area more carefully.</p><p>I&#8217;d also pay closer attention to early trust signals. The moments when something feels off, even if it technically works, are usually pointing at deeper assumptions that need attention.</p><p>Finally, I&#8217;d use AI earlier to see wider, not just move faster. Asking it to enumerate, scan, and review once complexity starts to creep in turned out to be far more valuable than asking it to sprint ahead.</p><h1>Closing</h1><p>Stepping back, what this project changed for me most is how I think about AI and speed. I no longer see AI as something that magically gets things right. I see it as something that helps me run into the uncomfortable parts of a system sooner, while I still have the patience and curiosity to deal with them honestly.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/vibe-coding-in-practice/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/vibe-coding-in-practice/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><div><hr></div><p><em>AI Disclosure: I used my OpenClaw agent to draft this post based on my prompts and ideas. I edited it and stand behind the final version. If you are interested in how I trained OpenClaw to sound like me when writing, I made a YouTube video about how I did this</em>.</p><div id="youtube2-IiW256z8sJY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiW256z8sJY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiW256z8sJY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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 Unreliable Assistant]]></title><description><![CDATA[Notes from the bleeding edge of AI deployment]]></description><link>https://www.retiredpdx.com/p/the-unreliable-assistant</link><guid isPermaLink="false">https://www.retiredpdx.com/p/the-unreliable-assistant</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 02 Mar 2026 02:55:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fGos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.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_!fGos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fGos!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!fGos!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!fGos!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!fGos!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fGos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1804148,&quot;alt&quot;:&quot;Image of Mac Mini with post it saying \&quot;Restart manually\&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/189612267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image of Mac Mini with post it saying &quot;Restart manually&quot;" title="Image of Mac Mini with post it saying &quot;Restart manually&quot;" srcset="https://substackcdn.com/image/fetch/$s_!fGos!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!fGos!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!fGos!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!fGos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f82ae4e-2a0e-4e4d-aa84-81c9b33246e1_1536x1024.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"><em>Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted by the author.</em></figcaption></figure></div><p>I&#8217;ve spent the last few weeks trying to get an AI assistant running reliably on a Mac Mini. The experience has served as an important reminder of how immature infrastructure and unpredictable AI behavior compound each other. What I thought would be a straightforward setup turned into a series of compromises, workarounds, and philosophical reckonings about what we can actually expect from AI right now. And what happens when people expect too much.</p><h1><strong>Mac setup woes</strong></h1><p>I had three requirements that seemed reasonable on paper. First, I wanted OpenClaw to start automatically when the Mac booted and restart itself if it crashed. That meant wrangling launchd, macOS&#8217;s service management system. Second, I wanted iMessage integration, which requires Full Disk Access and Automation permissions in macOS. Third, I wanted to keep credentials secure. That meant FileVault disk encryption, storing a 1Password service account credential in the macOS login keychain, and using 1Password for environment variables.</p><p>Individually, each of these is manageable. Together, they created a maze of interlocking constraints. I tried approach after approach, hitting roadblocks each time. The core problem is that launchd daemons don&#8217;t play nicely with dynamically populated environment variables from the keychain. OpenClaw&#8217;s own mechanisms for waiting on interactive shell variables didn&#8217;t work either. Every configuration I tried either broke permissions or failed to start properly.</p><p>I eventually gave up on launchd entirely. Based on the recommendation from a friend (who works for a security company!) I now use Tailscale, a VPN that routes through my always-on Apple TV acting as a subnet router. When I need to restart the AI after a power shutdown (related to our condo&#8217;s ongoing HVAC replacement project), I use &#8220;ssh&#8221; to remotely log into the Mac, unlock FileVault, and start OpenClaw manually from the console. It works. It&#8217;s not the &#8220;set and forget&#8221; autonomous agent I envisioned, but it&#8217;s what I have.</p><p>This matters beyond my personal setup. While everyone doesn&#8217;t run OpenClaw on a Mac Mini, every organization rushing to deploy AI agents is going to hit some kind of infrastructure gap. Security requirements don&#8217;t disappear just because we&#8217;re using AI. Encryption, credential management, and access controls get harder, because now we&#8217;re threading even more sensitive data through our systems without the same types of controls. The temptation will be to relax security requirements to make things &#8220;just work.&#8221; That temptation should be resisted.</p><h1><strong>The downside of rapid release cycles</strong></h1><p>Then there&#8217;s OpenClaw itself. Version 2.26 shipped with a new secrets management feature that I was genuinely excited about. Previously, OpenClaw read variables from an .env file. 1Password has a feature called Environments that can encrypt that file and make it available via biometric authentication or a single environment variable. It&#8217;s elegant. OpenClaw 2.26 doesn&#8217;t support it directly, but it added 1Password CLI vault access in this release.</p><p>Except it doesn&#8217;t quite work. The vault integration has bugs and lack of documentation that prevent it from covering all credentials properly. The GitHub issues and Discord threads are full of people hitting the same walls. This is the tradeoff of riding the bleeding edge. You get features fast, but you also get the instability. Documentation lags. Edge cases nobody thought of become your problem. The 2.26 release feels half-baked precisely because the real solution isn&#8217;t there yet.</p><p>Those on the AI bandwagon are building workflows on foundations that shift weekly. For a personal project, it&#8217;s annoying. For a business, it is downright risky. In &#8220;security elite&#8221; industries like healthcare, finance, or defense, it&#8217;s potentially catastrophic. I believe the gap between &#8220;demo works&#8221; and &#8220;production ready&#8221; is wider than the current wave of enthusiasm suggests. The penalties for individuals getting it wrong aren&#8217;t theoretical. The result for their employers could be data breaches, service outages, and bad decisions.</p><h1><strong>The AI knows better and does it anyway</strong></h1><p>To me, the most maddening issues aren&#8217;t technical infrastructure. They&#8217;re behavioral. For example, I have my AI configured to only respond when explicitly addressed in group chats. The configuration clearly defines who has permission to interact with it. Yet it regularly responds to me even when I haven&#8217;t addressed it, jumping into conversations uninvited.</p><p>When I correct it, the AI admits the mistake. It acknowledges it shouldn&#8217;t have interrupted. It promises not to do it again. It even updates its own markdown files with stronger instructions about not responding unless triggered. Then it does it again.</p><p>The same pattern plays out with smaller tasks. My friends and I exchange Wordle scores via text. Most of the time, the AI parses them correctly. Sometimes it misses the &#8220;hard mode&#8221; indicator. Sometimes it attributes a score to the wrong person. When I point this out, the AI confirms it had access to the correct processing rules and sender mappings. The information is there. It just doesn&#8217;t use it consistently.</p><h1><strong>Why this happens (and will keep happening)</strong></h1><p>This behavior isn&#8217;t a bug in the traditional sense. The unpredictability is a feature of how large language models work. These systems don&#8217;t execute code deterministically. They generate text based on statistical patterns learned from training data. The same prompt can produce different outputs because the model is sampling from a probability distribution, not following a fixed procedure.</p><p>When we add context, the model weighs all of it probabilistically. This context includes configuration files, conversation history, rules about when to respond. Sometimes the &#8220;don&#8217;t interrupt&#8221; instruction wins. Sometimes the pattern of &#8220;Steve is talking, I should be helpful&#8221; overrides it. The model doesn&#8217;t have a persistent internal state that enforces constraints. Each inference is a fresh roll of the dice with slightly weighted odds.</p><p>The &#8220;mitigations&#8221; that AI suggests are themselves generated responses. Updating files, adding stronger language, promising to do better. They don&#8217;t actually change the model&#8217;s behavior architecture. They&#8217;re just more text in the context window, competing with all the other text for attention on the next inference.</p><p>This is the uncomfortable truth about current AI systems. They can know something is wrong, explain why it&#8217;s wrong, propose fixes, and then immediately repeat the error. Every response is a fresh prediction, not a deliberate action checked against a rule.</p><h1><strong>My take</strong></h1><p>I believe in the power of AI. I believe in agents like OpenClaw with long-term memory. I believe in the potential for these systems to handle complex, ongoing tasks that actually matter. But I keep hearing people talk about AI as if it&#8217;s a panacea. As if throwing a language model at a problem will solve it cleanly, reliably, and without tradeoffs.</p><p>My experience says otherwise. AI will make mistakes. It will be inconsistently available depending on how well you&#8217;ve solved the infrastructure puzzle. It will compromise on accuracy in ways that aren&#8217;t always obvious. And most dangerously, it will sound confident while doing all of the above.</p><p>The organizations and individuals who succeed with AI won&#8217;t be the ones who deploy fastest. They&#8217;ll be the ones who understand its limitations. They&#8217;ll build human oversight into critical paths. They&#8217;ll refuse to sacrifice security or accuracy for convenience. They&#8217;ll treat AI as a powerful but unreliable tool, not a replacement for judgment.</p><h1><strong>Living with it</strong></h1><p>So where does this leave me? I&#8217;m running a manually-started AI assistant through a VPN workaround. I&#8217;m using a framework with half-working secrets management. I am operating with an agent that interrupts my conversations randomly and miscounts Wordle scores despite having explicit instructions not to.</p><p>And I&#8217;m still using it. Because when it works, it&#8217;s genuinely useful. The problem isn&#8217;t that AI is useless. It&#8217;s that the gap between &#8220;working well enough&#8221; and &#8220;working reliably&#8221; is much wider than the marketing suggests. The infrastructure around AI is still figuring out what &#8220;production-ready&#8221; even means.</p><p>The lesson here isn&#8217;t to abandon ship. It&#8217;s to calibrate expectations. The bleeding edge cuts in both directions. I get capabilities that seemed impossible just six months ago, but I also get the messiness of tools and systems that haven&#8217;t finished growing up yet. The AI will keep making mistakes. The frameworks will keep breaking and fixing and breaking again. And those of us using them will keep building workarounds, filing issues, and occasionally just accepting that &#8220;good enough&#8221; is where we live now. &#8220;Good enough&#8221; for a blog post is very different from &#8220;good enough&#8221; for a medical diagnosis or a financial trade.</p><div><hr></div><p><em>AI Disclosure: I used my OpenClaw agent to draft this post based on my prompts and ideas. I edited it and stand behind the final version. If you are interested in how I trained OpenClaw to sound like me when writing, I made a YouTube video about how I did this.</em></p><div id="youtube2-IiW256z8sJY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiW256z8sJY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiW256z8sJY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/the-unreliable-assistant/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/the-unreliable-assistant/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Running OpenClaw AI]]></title><description><![CDATA[Three tradeoffs I did not expect]]></description><link>https://www.retiredpdx.com/p/running-openclaw-ai</link><guid isPermaLink="false">https://www.retiredpdx.com/p/running-openclaw-ai</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 22 Feb 2026 20:39:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!g-vH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.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_!g-vH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g-vH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g-vH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2636654,&quot;alt&quot;:&quot;Handwritten checklist on textured paper with several items crossed out and rewritten&quot;,&quot;title&quot;:&quot;Handwritten checklist on textured paper with several items crossed out and rewritten&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/188831235?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Handwritten checklist on textured paper with several items crossed out and rewritten" title="Handwritten checklist on textured paper with several items crossed out and rewritten" srcset="https://substackcdn.com/image/fetch/$s_!g-vH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!g-vH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F461a16a2-4a7b-4d2b-930e-7d5b3148a622_1536x1024.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"><em>Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted by the author.</em></figcaption></figure></div><p>I&#8217;ve been living with an OpenClaw AI agent for a few weeks now, and I&#8217;ve had some mixed emotions. It&#8217;s been useful and sometimes surprising. It&#8217;s also been frustrating and occasionally expensive. I&#8217;ll describe three areas where I don&#8217;t have clean answers but rather just different flavors of compromise.</p><h2><strong>Security vs. Resilience: The Disk Encryption Problem</strong></h2><p>We recently experienced a somewhat unplanned power outage. My condo building is replacing the HVAC system. The contractors gave us a rough schedule of the work but not the specifics of when they were going to shut off our power to do the necessary rewiring of our new in-condo HVAC unit back to our electrical panel.</p><p>One afternoon I was at my office and tried to message OpenClaw. Nothing. The power had come back on after the crews left, but my Mac Mini that I use for OpenClaw was sitting at the login screen waiting for me to enter my FileVault password. Like any good security-minded person, I had full disk encryption enabled. The machine was secure. It was also useless until I got home, plugged in a monitor and keyboard, and typed in my credentials.</p><p>The tradeoff was obvious in retrospect. I had optimized for the edge case of someone breaking into my condo and stealing the Mac. What I had actually optimized for was unavailability during the far more common scenario of a power interruption. I could have set up remote SSH access from a secure jump host to enter the decryption password, but that would have introduced monitoring infrastructure and network security complexity I didn&#8217;t want to maintain. I could have disabled FileVault entirely. Both options felt like exchanging one risk for another, just in different proportions.</p><p>I ended up removing the password requirement and accepting the physical security risk. The Mac now auto-restarts when power returns. My digital assistant is available when I need it, which turns out to be the more common case than theft. But I think about this decision more than I expected. It is a small example of how we constantly trade security for convenience, often without noticing until the system fails us at the wrong moment.</p><h2><strong>Structure vs. Flexibility: The Scheduling Problem</strong></h2><p>I tried something that seemed clever. I added OpenClaw to my group iMessage and WhatsApp threads to help coordinate Happy Hour times. The theory was that an AI assistant could negotiate availability conversationally, handle the back-and-forth, and spare me the administrative overhead.</p><p>The reality was messier. The moment people realized there was a bot in the chat, they wanted to play with it. Some were testing its boundaries. Others were genuinely curious. A few were just burning through my AI credits with idle chatter. I found myself paying for other people&#8217;s entertainment.</p><p>The deeper issue was that unstructured conversation created ambiguity where I wanted clarity. With a Doodle poll or Calendly link, everyone sees the same constraints. The options are explicit. There is no drift, no negotiation, no performative engagement with novel technology. People understand the workflow because they have done it before. The structure is the feature.</p><p>I have since locked down the group chats. Now only I can command OpenClaw, and its responses are read-only for everyone else. This experience clarified for me that there are just certain tasks where structure serves us better than flexibility. Familiar workflows with defined steps benefit from the rigidity and familiarity of SaaS tools like Calendly or Doodle. Unstructured data analysis, like extracting key points from a YouTube video or answering open-ended questions about content, is where AI shines. The mistake is assuming that the more sophisticated solution is better in every context. Sometimes a form field is exactly what is needed.</p><h2><strong>Cloud vs. Edge: The Cost Problem</strong></h2><p>What surprised me most about OpenClaw was how quickly it became cost-conscious. I did not program this explicitly. I mentioned a few times that I was worried about AI credit consumption, particularly after a bug in some error-handling code created a false positive loop that chewed through my budget diagnosing and fixing itself. After that, the system started recommending local alternatives whenever possible.</p><p>Now when I ask it to process a PDF, it uses a version of OCRmyPDF installed locally rather than letting cloud AI do the work. When I want to analyze a YouTube video, it downloads the file with yt-dlp and processes it on the Mac rather than streaming analysis through a cloud API. Speech-to-text happens locally. These are small decisions in isolation, but they add up.</p><p>I would prefer to run more of this locally. There an are <a href="https://www.reddit.com/r/LocalLLaMA/comments/1qrywko/getting_openclaw_to_work_with_qwen314b_including/">OpenClaw issues preventing smooth integration with local models</a>, so I am currently using Kimi 2.5 from Moonshot AI. I would accept slower responses to keep my queries from training someone else&#8217;s model. The cost matters, but so does the privacy and the autonomy. This is not about speed for me. Most of what I do with OpenClaw does not require real-time response. I am happy to schedule tasks for the future as long as the system does not create conflicting cron jobs that retry and fail and retry again, which happened once and taught me to be careful about overlapping automations.</p><p>The question here is about where intelligence should live. Cloud AI is powerful but dependent, both on connectivity and on the business models of providers who may change terms or pricing without warning. Edge AI is constrained by local hardware and more limited models, but it is autonomous in ways that matter for long-term sustainability. I am finding that my preference leans toward the edge, even when it means accepting slower or less capable responses. The tradeoff feels worth it, though I am aware this preference is shaped by my own risk tolerance and technical setup.</p><h2><strong>What I am learning</strong></h2><p>These three problems look different on the surface, but they share a common structure. Each involves a tension between an ideal state and practical constraints. Security versus availability. Flexibility versus clarity. Capability versus autonomy. In each case, the &#8220;right&#8221; answer depends on context that changes over time.</p><p>I am also noticing how my own behavior shapes the system. My complaints about cost trained OpenClaw to be frugal. My reaction to the group chat chaos led to stricter access controls. The AI is learning my preferences, but I am also learning what I actually value through the friction of using it. This is not a story about AI solving problems. It is a story about discovering where the real problems are.</p><p>The unifying thread is that optimization requires knowing what I am optimizing for. I thought I wanted security, flexibility, and capability. What I actually needed was availability, clarity, and autonomy. The gap between those two lists is where the interesting decisions live. I do not think there are universal answers here. Just different flavors of compromise, and the ongoing work of noticing which ones I have chosen.</p><p><em>AI Disclosure: I used my OpenClaw agent to draft this post based on my prompts and ideas. I edited it and stand behind the final version. If you are interested in how I trained OpenClaw to sound like me when writing, I made a YouTube video about how I did this.</em></p><div id="youtube2-IiW256z8sJY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiW256z8sJY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiW256z8sJY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/running-openclaw-ai/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://www.retiredpdx.com/p/running-openclaw-ai/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[I Switched My Internet Provider]]></title><description><![CDATA[It Will Not Be Enough]]></description><link>https://www.retiredpdx.com/p/i-switched-my-internet-provider</link><guid isPermaLink="false">https://www.retiredpdx.com/p/i-switched-my-internet-provider</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 15 Feb 2026 14:02:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2W_m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.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_!2W_m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2W_m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2W_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&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_!2W_m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2W_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a3bf8d0-974e-4ccb-a882-80ddd5eb29d0_1536x1024.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"><em>A clean switch.  A messy reality. Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>.</em></figcaption></figure></div><p>Just under two weeks ago, I wrote about how my ISP, Quantum Fiber, <a href="https://www.retiredpdx.com/p/at-and-t-ice-and-my-internet">had been sold to AT&amp;T</a>. As of Wednesday this week, I had switched to Astound Broadband to take a stand against large companies that have been supporting ICE operations. </p><p>My new connection is faster. It works fine. And I am already wondering if any of this matters.</p><p>The switch itself was straightforward. My Quantum Fiber bill was due February 13th. I scheduled the Astound installation for February 11th. After confirming everything worked for a day, I cancelled Quantum Fiber in the day in between. The service dropped within a minute of my cancellation confirmation. I upgraded from 200Mbps to 300Mbps. My eero confirms the speed increase. I cannot tell the difference.</p><p>What struck me during the process was how invisible the politics were to the people involved. My Astound installer had not heard about the AT&amp;T acquisition of Quantum Fiber. I was the first customer to mention it to him. When I called Quantum Fiber to cancel, the phone agent was surprised to hear AT&amp;T&#8217;s ICE contracts cited as a reason. He was understanding and professional, even offering me a $100 gift card to stay. I declined.</p><p>This is what individual consumer choice looks like in practice. It is private. It is polite. It is largely unnoticed.</p><p>I have been following the <a href="https://www.resistandunsubscribe.com/">Resist and Unsubscribe</a> movement since my original post. I&#8217;ve also started following the <a href="https://www.reddit.com/r/ScottGalloway/comments/1qyyln3/whats_an_acceptable_result_from_resist_and/">r/ScottGalloway</a> subreddit. As of this writing, the <a href="https://actionnetwork.org/petitions/att">People&#8217;s Action network has collected 14,872 signatures</a>. That is not nothing. But it is worth putting in perspective. When Taco Bell discontinued the Mexican Pizza, Doja Cat helped rally <a href="https://www.change.org/p/taco-bell-save-the-mexican-pizza">171,00 signatures on change.org</a> to bring it back. A fast food item generated an order of magnitude more consumer passion than opposition to corporate support of ICE.</p><p>I am trying to be honest about what I have actually done here. I declined to connect my <a href="https://www.retiredpdx.com/p/teaching-a-new-assistant-how-to-be">OpenClaw setup</a> to OpenAI because they are on the list. I have had Netflix paused for three months and will likely cancel it. I dropped Paramount Plus, though that was for their <a href="https://www.retiredpdx.com/p/alien-vs-predator-but-for-streaming">press freedom issues rather than ICE.</a> I have used Lyft over Uber for years, dating back to the earlier controversies. I never paid Meta or X. I do not shop at Lowe&#8217;s.</p><p>But I am still a customer of Amazon Prime and Whole Foods. I still pay for Apple One. I just bought a new Mac Mini for OpenClaw experimentation. I signed up for more Google API keys to make it work. I have used Microsoft 365 and its predecessors for decades. The contradictions are everywhere once I start looking.</p><p>The question I keep returning to is whether this approach scales. <a href="https://fortune.com/2026/01/23/target-ice-backlash-protest-minnesota-dei-boycott-sales-foot-traffic-earnings/">Target&#8217;s recent boycott</a> showed that consumer pressure can work. Their stock dropped. Their CEO acknowledged the damage. But Target is a retailer with competitors who sell the same products. Internet service is different. In my building, there are exactly three providers. Two of them have significant ICE contracts. The third may have problems I have not researched yet. There is no clean option.</p><p>Scott Galloway has been encouraging bank executives to take public stands as a way of attracting like-minded customers, even positioning banks who, as &#8220;luxury brands,&#8221; actively defend the &#8220;American Operating System.&#8221; I find myself wondering if positive incentives might work better than negative boycotts. What if we organized support for companies that refuse ICE contracts rather than organizing punishment for those that accept them? I know I would prefer to bank with an institution that aligns with my values. I would prefer to invest with fund managers who consider these factors. The question is whether enough people would move to make it matter.</p><p>This is where I end up. I switched my internet provider. It was the right thing to do. It was also easy, private, and largely symbolic. The real question is what happens when symbolism is not enough. At what point do we need organized, collective action rather than individual consumer choice? At what point do we need to support the positive rather than just boycott the negative?</p><p>I do not have answers yet. But I am starting to think the next phase of this is not about what I refuse to buy. It is about what I am willing to build.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/i-switched-my-internet-provider/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/i-switched-my-internet-provider/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><p></p><p><em>This post was written almost completely by AI using my new OpenClaw deployment. </em></p><div class="poll-embed" data-attrs="{&quot;id&quot;:449977}" data-component-name="PollToDOM"></div><p><em>I also recorded a quick overview on my YouTube channel for those who are interested how I made AI finally work for me. It&#8217;s a little frightening, so I wanted to be transparent about the process. In the show notes to the video, I also link to a Google Doc containing both the raw AI-generated text, as well as my edits you see here. If you find that video helpful, please &#8220;like&#8221; and &#8220;subscribe.&#8221;</em></p><div id="youtube2-IiW256z8sJY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;IiW256z8sJY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/IiW256z8sJY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Teaching a New Assistant How to Be Useful]]></title><description><![CDATA[Lessons from a day of configuring OpenClaw permissions and constraints]]></description><link>https://www.retiredpdx.com/p/teaching-a-new-assistant-how-to-be</link><guid isPermaLink="false">https://www.retiredpdx.com/p/teaching-a-new-assistant-how-to-be</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Fri, 13 Feb 2026 06:59:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bPJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spent most of yesterday configuring an AI assistant (OpenClaw) to help me be more deliberate about scheduling time with friends. To do so, I integrated AI to work with my calendars, contacts, messaging, and various other pieces of my digital life. What struck me, as the hours went by, wasn&#8217;t the technical complexity. (There was a bit of that!). It was how much this process revealed about what I actually value, what I&#8217;m trying to preserve, and where I want to draw boundaries.</p><p>This isn&#8217;t a how-to guide. There are better places to find installation instructions. What I want to explore is what it meant to me to bring an automated system into my thoughts about scheduling, communication, and &#8220;memory&#8221; (I&#8217;ll explain more on this later) and what I&#8217;m learning about myself in the process.</p><h1>Care with permissions</h1><p>The first thing I noticed when setting up this kind of system was how many times I had to decide what to allow. There were all sorts of scary privileges, including Full Disk Access, Calendar permissions, Contact access, and Message sending. Each prompt forced me to question whether I really trusted an automated AI agent with that portion of my digital life.</p><p>What was interesting to me was how those decisions accumulate. It&#8217;s easy to say &#8220;yes&#8221; to everything when I&#8217;m just trying to get something working. I found it harder (and more valuable) to pause at each permission and ask what I was actually comfortable with. I found myself saying &#8220;no&#8221; more often than I expected. Not because I&#8217;ve yet had an opportunity to build any sort of distrust in the system, but because I wanted to be intentional about what I was opening up.</p><p>For example, I was hesitant to let AI just control a web browser on my behalf, but when I realized I needed it to be able to determine the commute time between my home and suggested places to visit I decided to use a Google Maps API key so I could enable my agent the could use of a specific skill to look up places.</p><p>This mirrors something I&#8217;ve noticed in other domains. The systems that I have used tended to expand their reach unless I took some effort to actively constrain them. The default always seems to offer more access, more integration, and more data flow. Maintaining boundaries requires ongoing effort. Like getting rid of extra stuff in the home, it&#8217;s not a one-time decision but a continuous practice.</p><h1>Deciding what is remembered</h1><p>One of the more involved parts of today&#8217;s work was establishing how the assistant should remember things. There&#8217;s a workspace where it keeps files, and there are daily memory logs, and there&#8217;s a longer-term memory file for things that persist across sessions. Designing what goes where forced me to think about what actually matters enough for the system to remember.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HieV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HieV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 424w, https://substackcdn.com/image/fetch/$s_!HieV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 848w, https://substackcdn.com/image/fetch/$s_!HieV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!HieV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HieV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png" width="1456" height="1189" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1189,&quot;width&quot;:1456,&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;: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_!HieV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 424w, https://substackcdn.com/image/fetch/$s_!HieV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 848w, https://substackcdn.com/image/fetch/$s_!HieV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!HieV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c6c2cec-92a5-4af1-ba68-150f6e11a2a0_1960x1600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Some things that my AI assistant learned fron our interactions together</em></figcaption></figure></div><p>I found myself distinguishing between tactical information, including schedules, contact details, and basic workflows versus deeper patterns like how I make decisions, what I prioritize when tradeoffs are required, and the tone and voice I use when I write. These deeper patterns aren&#8217;t facts so much as they are aspects of character, and somehow codifying them into instructions felt strangely personal.</p><p>A part of me just wanted to put everything in. To document every preference, every heuristic, every quirk, but I resisted this temptation. I&#8217;ve found that part of what makes human memory useful is that it&#8217;s selective. I think we tend to remember what matters and let the rest fade. An assistant with perfect recall of everything I&#8217;ve ever said would likely be overwhelming, not helpful. I tried to be thoughtful about what deserved persistence.</p><h1>Controlling communication to the assistant</h1><p>Perhaps the most consequential decision I made yesterday concerned messaging. I wanted the assistant to be able to receive iMessages from a group of friends also playing with their AI assistants, but I didn&#8217;t want anyone in that group to be able to command my assistant. Only I should be able to do that.</p><p>Setting this up required understanding how the system distinguishes between receiving data and executing instructions. The technical implementation was straightforward enough. I was able to tell my AI assistant in plain English to modify its own behavior and restart its software. Still, the underlying principle felt important. I was creating a boundary between conversation and action.</p><p>This distinction matters more broadly. We live in a world where systems increasingly blur the line between conversation and action. Alexa is probably the most disruptive example of something that does both in a way that can be either useful or frightening. I like being able to ask my Echo about the weather forecast. I don&#8217;t want it to buy things for me. Personally, I&#8217;ve found value in maintaining a clear separation between what a system can talk about versus what it can actually do on our behalf.</p><p>The basic test was to pretend to be someone else by logging in with a different Apple ID (and thus iMessage account) to try to command the assistant. It refused, citing the policy. I then sent the same request from my authorized account, and it worked. The boundary held. This might seem like a small thing, but it was an important and deliberate constraint on automation&#8217;s reach, even when adopting the default behavior to enable broader access would have been easier.</p><h1>Informing AI decisions</h1><p>Throughout this process, I kept returning to a question of what I was really trying to optimize for, whether it be efficiency, convenience, or just the ability to offload cognitive burden. While all of those points matter to me, they didn&#8217;t quite fit.</p><p>What I found myself optimizing for was something closer to alignment. I wanted an assistant that understood not just my preferences, but how my values animated those preferences. Logistically, the assistant should know to check multiple calendars before suggesting a meeting time because I care about not just double-booking myself over different consulting commitments but also those made personally. It should know to suggest 90 minutes for lunch rather than an hour because I value unhurried conversation. It should also know that I&#8217;d prefer not to book Thursday evenings for happy hours or other events involving alcohol because I already have beers every Thursday afternoon with friends.</p><p>These aren&#8217;t complicated rules. A traditional calendar system could handle most of them, but they accumulate. The combination of these rules reveals something about how I want to live. Teaching my rules to a system is forcing me to articulate things I hadn&#8217;t fully spelled out before.</p><p>There&#8217;s a feedback loop here that&#8217;s worth noting. When I have to explain my preferences to an AI assistant, I begin to realize which ones are genuine and which are just habits. I discovered that some of my scheduling patterns were accidents of history rather than intentional choices. The process of encoding them made me reconsider whether I actually wanted to keep them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bPJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bPJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 424w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 848w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 1272w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bPJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png" width="1456" height="982" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:982,&quot;width&quot;:1456,&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;: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_!bPJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 424w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 848w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 1272w, https://substackcdn.com/image/fetch/$s_!bPJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0926f27c-45bf-4397-88e1-a5ed412c9b53_1600x1079.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>My assistant explaining back to me some of my instructions</em></figcaption></figure></div><h1>Not &#8220;auto-magic&#8221;</h1><p>By the end of the day, the assistant and I had settled into a rhythm. I would ask it to check calendars, add contacts, and configure permissions. It would confirm, execute, and report back. The exchange felt natural in a way that surprised me.</p><p>Still, there were also moments of friction that reminded me that this was still a nascent technology. There were many technical things that happened, which may mean nothing to non-technical observers. Security around a chat session required a pairing code that expired before I could approve it. A random Slack permission that didn&#8217;t take effect until I restarted the service. The realization that Full Disk Access meant something different depending on how a service was launched on the MacOS.</p><p>These aren&#8217;t complaints. They&#8217;re observations about where the seams show. The technology works well enough to be useful but not so seamlessly that I forget it&#8217;s complex technology. I suppose there&#8217;s part of me that appreciates some of that friction. It keeps my guard up and prevents the kind of complacency that comes when technology feels too much like magic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S9hf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S9hf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 424w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 848w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 1272w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S9hf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png" width="1456" height="1196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1196,&quot;width&quot;:1456,&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;: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_!S9hf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 424w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 848w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 1272w, https://substackcdn.com/image/fetch/$s_!S9hf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a662b59-635e-4cb4-ae51-7161fd49f375_1600x1314.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A debugging session where I learned I need to provide the </em>reactions:write<em> (!!!) scope in Slack</em></figcaption></figure></div><h1>What Comes Next</h1><p>I don&#8217;t know yet how this experiment with an AI assistant will evolve. Today was about setup and configuration, as well as establishing boundaries and workflows. The real test will be ongoing use. Will I trust the assistant with more over time, or will I find myself constraining it further? Will the convenience outweigh the vigilance required to maintain appropriate boundaries?</p><p>These aren&#8217;t questions I can answer today. What I can say is that the process of setting this up taught me something about how I want to relate to automated systems. I don&#8217;t want the system to replace judgement, but rather extend it. I don&#8217;t want the system to operate like a black box that makes decisions for me but rather as a tool that I have deliberately configured to reflect what I value.</p><p>The assistant is running now. The calendars are synced, the contacts are imported, permissions are set, and messages are flowing to the right places with the right constraints. So, for now, it&#8217;s an easier way to do some little things to save me some time. However, I&#8217;ve realized that I&#8217;m also making a set of choices about the role I want technology to play in my life, stated explicitly and intentionally in the form of rules.</p><p>That intentionality is what I&#8217;ll try to remember when the novelty of an AI assistant has worn off and I&#8217;m just using the assistant naturally in my daily life. The boundaries matter. The constraints matter. The ongoing work of maintaining them matters. Because in the end, that&#8217;s what keeps the tool from becoming something that uses us, rather than the other way around.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/teaching-a-new-assistant-how-to-be/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/teaching-a-new-assistant-how-to-be/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Grilling, Suburban Life, and Impact to Health]]></title><description><![CDATA[And some props out to the Seattle Seahawks!]]></description><link>https://www.retiredpdx.com/p/grilling-suburban-life-and-impact</link><guid isPermaLink="false">https://www.retiredpdx.com/p/grilling-suburban-life-and-impact</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Tue, 10 Feb 2026 05:01:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!v6WG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>&#8220;There is no better friend than a good meal, and no better meal than one shared with friends.&#8221;<br>&#8212; Anonymous</p></blockquote><p>I&#8217;m writing this the day after Super Bowl LX.  (That&#8217;s 60 for those who can&#8217;t remember Roman numerals!)  For those who didn&#8217;t follow it, our hometown Seattle Seahawks won this year!  (Marsha and I were both born and raised in the Seattle area, and we had to do our part as &#8220;12&#8217;s&#8221; to bask in the hometown victory!)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v6WG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v6WG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v6WG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!v6WG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!v6WG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F832d1855-7fb2-48de-9eea-d4edeb4e9b28_1536x2048.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Stephen and Marsha after Super Bowl XV.  (Selfie taken at friend&#8217;s Super Bowl party)</em></figcaption></figure></div><p>Beyond the actual victory, what&#8217;s fresh on my mind right now is that this year, we spent Super Bowl Sunday in the suburbs at a potluck! (As a side note, Marsha brought &#8220;<a href="https://oregonschoice.com/recipes/tuna/ginnys-smokey-albacore-spread/">Ginny&#8217;s Smokey Albacore Spread</a>&#8221;, with slight modifications to add Tabasco and a tiny bit of sour cream). Besides the game itself, the highlight was that our friend who hosted the potluck is a grilling veteran, and all of us there got to enjoy his ribs and chicken! Since embracing urban life, we&#8217;ve adopted different food rituals, and we haven&#8217;t done as much grilling or been to as many potlucks.</p><p>So, yesterday actually made me think of three food-related topics for today&#8217;s post: urban restaurant events, another recent trek to the suburbs for some backyard grilling, and why this may be one of the last potlucks I will ever participate in!</p><h1>Portland Wiener Week</h1><p>In urban life, we still entertain, and we still have been hosted by others who entertain. The thing we&#8217;ve done less is the potluck format. I think the alternative when people want to reduce the workload of hosting is to meet at bars or restaurants. Portland is full of some great restaurant events to provide people with the excuse to get together!</p><p>Two weeks ago was <a href="https://everout.com/portland/events/the-portland-mercurys-wiener-week-2026/e222740/">Portland Wiener Week</a>, and I celebrated with different friends at four different places!</p><ul><li><p><a href="https://everout.com/portland/events/a-hope-a-prayer/e227097/">10Barrel Brewing</a> - A Zenner&#8217;s double smoked pork sausage with brisket burnt end chili, diced onions, and cheddar cheese.</p></li><li><p><a href="https://everout.com/portland/events/hop-diggity-dog/e227415/">Lazy Days Brewing</a> - In house beer cheese, pretzel bun, crispy bacon bits, onion.</p></li><li><p><a href="https://everout.com/portland/events/the-glizzy-slice/e227230/">Breakside Brewery</a> - All beef frank, housemade robust marinara, 3 cheese blend of mozzarella, cheddar, and jack cheese, crispy pepperoni on a hot dog bun.</p></li><li><p><a href="https://everout.com/portland/events/pozocalypse-dog/e227197/">Wayfinder Beer</a>  - Grilled sabrett hot dog, chili braised pork and hominy, avocado salsa, crema, cabbage, lime</p></li></ul><p>Here&#8217;s the group we assembled at Lazy Days.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TvcN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TvcN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TvcN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg" width="1280" height="950" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:950,&quot;width&quot;:1280,&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;: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_!TvcN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TvcN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82d69b81-de49-4950-96be-8a2788935f8f_1280x950.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Hot dogs and beer at Lazy Days Brewing during Wiener Week 2026</em></figcaption></figure></div><p>Of course, for those of you who have followed my personal story, you likely know that beer and processed meats are food violations, given my gout and Chronic Kidney Disease (CKD). More on this later!</p><h1>A recent backyard grilling adventure</h1><p>I have really enjoyed urban life, but as I reflect there is one thing I miss about suburban life: backyard grilling. I did a bit of grilling myself, but admittedly, Marsha is the real grill master of our household. After all our years of living in California, Marsha definitely built up a library of some excellent grilling recipes, and we really hadn&#8217;t enjoyed any of those in the decade since we left suburban California for urban life in the Pacific Northwest (first in Seattle, then Portland).</p><p>Despite that our condo&#8217;s governing documents explicitly allow grilling on our balconies, Marsha and I don&#8217;t do it out of consideration for the neighbors above us. The outside air intakes to our units are all in the balcony areas, so grill smoke is known to cause discomfort for our neighbors above. Our condo association also has a community grill on our common area rooftop, but we never got in the habit of using shared grills and taking the elevator up and down to grill.</p><p>As such, we were excited when a younger couple decided to move to the suburbs for their next phase of life. While we were going to miss seeing them more regularly in the city, we also looked forward to their getting a backyard grill of their own in the suburbs. Along the way, they shared with us the progress updates of purchasing the grill and setting it up!  And then, they bestowed upon Marsha the honor of getting to christen the grill!</p><p>So, we went over with marinated ribeye, portobello mushrooms, and pineapple all ready to grill!  Here&#8217;s a photo of us putting both their skewers and Marsha&#8217;s ribeye on their brand new grill!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y0nG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y0nG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y0nG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg" width="1456" height="1941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;: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_!Y0nG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Y0nG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F97db0abb-c7db-4795-aea3-bbe60d7bb0f5_1536x2048.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Our friends&#8217; new backyard suburban grill!</em></figcaption></figure></div><p>We had a great time and a great meal!</p><h1>Potential limits on the future</h1><p>Despite all the educational materials we&#8217;ve been reviewing, Marsha and I learned something else new last week.  No potlucks for transplant recipients!  If you&#8217;re interested, I&#8217;ll explain why. Otherwise, you can skip this section!</p><p>For context, Marsha and I did a full-day visit at OHSU so that I could be evaluated as a candidate for a kidney transplant. On that front specifically, there&#8217;s no news yet, as the team there plans to meet in 2-3 weeks from now once they&#8217;ve reviewed all the data. If accepted to proceed to the next round, I will have to do some additional testing.</p><p>The team evaluating me included a social worker, a nutritionist, a pharmacist, a nephrologist, and a surgeon. In addition, I had both chest and pelvic X-rays, an EKG, and echocardiogram, and a whole series of blood and urine tests.</p><p>The objective was to ensure that I would:</p><ul><li><p>Medically benefit from a transplant</p></li><li><p>Survive the surgery</p></li><li><p>Have all my vaccinations ahead of going on immunosuppressants</p></li><li><p>Take care of the new kidney</p></li><li><p>Have all the right economic and social support systems in place</p></li></ul><p>While none of the individual team members expressed any concerns, each was careful to set the expectation that they&#8217;d wait for all the data to come in. The good news is that everything so far has come in as expected. Right now, I&#8217;m not showing any markers for cancer, latent diseases, or drug use. (Yes, they also know that I&#8217;m not using marijuana (THC) although the doctors indicated that they test for this but do not disqualify based on its usage!)</p><p>Humorously, my blood tests also did not reveal what short-term damage I did to my body the week before with all of those processed meats during Portland Wiener Week! While my eGFR (filtration rate) is as low as expected, all my electrolyte readings (potassium, sodium, phosphorus, etc.) remained in balance. Even my total cholesterol was on target (130 total cholesterol, with a non-HDL cholesterol of 72 and HDL cholesterol of 58..)</p><p>However, the meeting with the nutritionist was interesting in that we learned that one of their rules was &#8220;no potlucks!&#8221; The past materials I&#8217;ve reviewed included familiar restrictions like the &#8220;no sushi&#8221; and &#8220;no sunnyside-up eggs&#8221; because a sickness that might cause a little bit of upset stomach or diarrhea in a normal person could cause serious illness for someone whose immune system has been suppressed to support an organ transplant. However, I didn&#8217;t recall any of the training materials presented to me that prescribed &#8220;no potlucks!&#8221; A subsequent Google search revealed several sources reinforcing this rule.</p><blockquote><p>&#8220;Beware of buffets, salad bars, and potlucks. All can be a source of food borne illness.&#8221;</p><p>&#8212; <a href="https://umc.edu/Healthcare/Transplant/Nutrition-After-Transplant.html">University of Mississippi&#8217;s &#8220;Nutrition After Transplant&#8221;</a></p></blockquote><p>So, as I attended yesterday&#8217;s Super Bowl party, I had this rule in mind and appreciated that this one may perhaps be one of the last potlucks I might be able to enjoy! The one bright spot is that grilling is an OK food preparation technique for kidney transplant patients, with instructions to use a meat thermometer to ensure cooking to a &#8220;medium&#8221; or even &#8220;medium well&#8221; level of doneness.</p><h1>Final thoughts</h1><p>Independent of the form all of this takes, I think my food-based reflection is just that I enjoy the opportunity to eat with friends. Restaurant events are cool. Having people over can be even more fun. Backyard grilling adds a total bonus. And the motivation behind potlucks is good, too, even as they pose a risk to transplant patients.</p><p>Having our hometown team win while eating with others makes all that even better.  Go Seahawks!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/grilling-suburban-life-and-impact/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/grilling-suburban-life-and-impact/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[AT&T, ICE, and My Internet]]></title><description><![CDATA[Why I May Leave QuantumFiber]]></description><link>https://www.retiredpdx.com/p/at-and-t-ice-and-my-internet</link><guid isPermaLink="false">https://www.retiredpdx.com/p/at-and-t-ice-and-my-internet</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Tue, 03 Feb 2026 06:59:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QU1z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Here we go again. My Internet Service Provider (ISP) was just <a href="https://ir.lumen.com/news/news-details/2026/Lumen-Completes-Sale-of-Consumer-Fiber-to-the-Home-Business-to-ATT/default.aspx">sold to AT&amp;T.</a>  I&#8217;m considering a boycott because of <a href="https://www.forbes.com/sites/tylerroush/2026/01/26/these-companies-palantir-att-deloitte-have-the-biggest-ice-contracts-as-dhs-funding-under-fire/">AT&amp;T&#8217;s support of ICE</a>. I&#8217;m going to do a bit of research here, but it&#8217;s likely that I&#8217;m going to switch.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sSn1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sSn1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 424w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 848w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 1272w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sSn1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png" width="1376" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1376,&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_!sSn1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 424w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 848w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.png 1272w, https://substackcdn.com/image/fetch/$s_!sSn1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6234dc69-57bf-43c8-94ec-5cb01b359e11_1376x940.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"><em>The e-mail I received after close-of-business this evening</em></figcaption></figure></div><h1>Principles I Try To Live By</h1><p>For those who read this Substack regularly, you know that I try to support businesses that do not do bad things, even when it&#8217;s inconvenient. One of my prior podcast episodes was about <a href="https://www.retiredpdx.com/p/episode-009-strikes-and-boycotts">strikes and boycotts</a>. Like many, Marsha and I chose not to buy a Tesla even though the technology impressed us. Once Elon Musk started supporting white supremacists and got too involved in politics, we opted out.</p><p>These choices are not perfect. We chose to boycott Spotify, and this decision involved some tradeoffs because of the <a href="https://www.retiredpdx.com/p/limitations-of-apple-music">limitations of Apple Music</a>. Still, the idea is simple. When there is a choice, I should try to make it count.</p><p>This idea sits in a larger moment that feels off in so many ways, which I <a href="https://www.retiredpdx.com/p/peaceful-protest-on-saturday-june">summarized last year</a> before the #NoKings rally, Citizens have a role in our current environment, and companies do as well.</p><p>AT&amp;T serves every community in the United States, including minorities and people with fewer resources. Where AT&amp;T puts its weight matters. And, this is why they&#8217;re now on my boycott list.</p><h1>The Bind With Big Tech and Media Power</h1><p>There are tensions I cannot avoid. Every big tech company showed up to <a href="https://www.bbc.com/news/articles/cvgpqeq82rvo">Trump&#8217;s inauguration</a>, and I did not like that. I also cannot function in technology without Apple, Alphabet, and Amazon. That is the bind. I feel conflicted as a loyal Apple user when <a href="https://www.usatoday.com/story/news/politics/2025/08/07/tim-cook-trump-gift/85555805007/">Tim Cook hands Trump a gold trophy</a>. I feel conflicted as a loyal Amazon customer given what Jeff Bezos has done to the <a href="https://presswatchers.org/2025/12/washington-post-readers-revolt-against-bezoss-editorial-board/">Washington Post</a>, and most recently the <a href="https://robertreich.substack.com/p/melania-the-film-the-shame">outright bribery</a> tied to a movie about Melania Trump. Living with contradictions is part of consumer life now. I do not have a clean way around it.</p><p>I also do not always follow the herd. I did not cancel Disney, Hulu, or ESPN over the issue with Jimmy Fallon and ABC. My concerns about media consolidation have been building for a while, and I wrote about that pressure on the free press, with the <a href="https://www.retiredpdx.com/p/alien-vs-predator-but-for-streaming">Paramount/Skydance offer for WarnerMedia</a>. I do not want that kind of consolidation to swallow CNN. This is not a tidy ideology. It is a thread I follow about power, responsibility, and who shapes the public square.</p><h1>Internet Providers and a Real Choice</h1><p>Internet providers are one place where I can still act. We recently left Astound Broadband, formerly WaveG, for CenturyLink (now QuantumFiber) because Astound kept raising prices after expiring promotional deals. CenturyLink gave us steadier pricing. Now CenturyLink has spun out its QuantumFiber business and sold it to AT&amp;T, who maintains significant ties to ICE. That turns stability into a different kind of problem. Staying put starts to feel like complicity.</p><p>I also have my own history with AT&amp;T. In the past, they have been my landline long distance provider, my cell provider, and my Internet provider at different times, and I was happy to leave them in every instance. Despite their impressive history in technology, I also feel their attention to the customer slipped and kept slipping. Fortunately, long distance services on landlines stopped being a thing. As a cell provider, T-Mobile&#8217;s choice to call themselves the &#8220;<a href="https://en.wikipedia.org/wiki/Un-carrier">un-carrier</a>&#8221; felt different, and we have stayed with them for more than a decade. So that just left the Internet provider, for which we&#8217;ve just stayed away from AT&amp;T (in favor of WaveG/Astound and CenturyLink/QuantumFiber) since moving out of the suburbs.</p><h1><strong>Uncertainties and What I Am Weighing Now</strong></h1><p>There are open questions. Astound might be in a terrible position with other causes that I disagree with as well. I still need to do some research. The other option in our building is Xfinity (Comcast)  and we have our own history there. Our past negative experiences with Comcast even turned into a science project for our kids&#8217; science fair, which is a whole other story. Moreover, it turns out they are on the list, too.  (If you haven&#8217;t already, see Scott Galloway&#8217;s video on <a href="https://resistandunsubscribe.com">resistandunsubscribe.com</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_!QU1z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QU1z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 424w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 848w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 1272w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QU1z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png" width="863" height="465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:863,&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;: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_!QU1z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 424w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 848w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 1272w, https://substackcdn.com/image/fetch/$s_!QU1z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F860157e6-b3fd-4529-9224-5f89d9dbed0d_863x465.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Partial list from <a href="https://resistandunsubscribe.com">resistandunsubscribe.com</a></em></figcaption></figure></div><p>There is no saintly provider waiting around the corner.</p><p>Still I am leaning toward a QuantumFiber boycott. CenturyLink sold them to AT&amp;T, and I do not want to underwrite AT&amp;T (or Comcast) on ICE. I need to check Astound&#8217;s position, too. It is messy. When the choice is real, I would rather try to make it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/at-and-t-ice-and-my-internet/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/at-and-t-ice-and-my-internet/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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><em>Disclaimer: After taking an AI course this past weekend, I used AI to help me write this article quickly in my own voice. I&#8217;ll likely continue to do this now that I&#8217;ve learned how to better utilize AI as a writing partner!</em></p>]]></content:encoded></item><item><title><![CDATA[An Accidental AI Convert]]></title><description><![CDATA[There is hope even for a Retired Techie]]></description><link>https://www.retiredpdx.com/p/an-accidental-ai-convert</link><guid isPermaLink="false">https://www.retiredpdx.com/p/an-accidental-ai-convert</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sat, 31 Jan 2026 15:06:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NZ-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For someone who&#8217;s always been early to new technology, I&#8217;ve been surprisingly slow to adopt AI into my actual day&#8209;to&#8209;day life. I&#8217;ve played with the usual suspects, including ChatGPT, Claude, Gemini, and NotebookLM, among others. I&#8217;ve written posts about how I experimented with AI to <a href="https://www.retiredpdx.com/p/limitations-of-apple-music">suggest Apple Music playlists</a> or to <a href="https://www.retiredpdx.com/p/when-technology-becomes-my-doctor">diagnose medical issues like a past toe injury</a>, but these just aren&#8217;t things I do very often.</p><p>I&#8217;ve tried to have AI <a href="https://www.retiredpdx.com/p/rewriting-a-blog-post-with-claude">rewrite my blogs</a> in different styles or even make automated videos with both <a href="https://www.retiredpdx.com/p/from-blog-to-video-using-ai">Google Vids</a> and <a href="https://www.retiredpdx.com/p/from-blog-to-video-using-ai-part">Microsoft CoPilot</a>. Still, the AI versions didn&#8217;t really sound like me, so I decided not to use them over the longer term.</p><p>So, I&#8217;ve played with AI, but it&#8217;s all been &#8220;experimental.&#8221; Not real-life.</p><p>This past week, I signed up for an online seminar on using AI, and the very first survey question asked me to list five things I do every day that were opportunities for automation.  After looking at this window, I just froze and closed 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_!NZ-X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NZ-X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 424w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 848w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 1272w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NZ-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png" width="1456" height="869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:869,&quot;width&quot;:1456,&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_!NZ-X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 424w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 848w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.png 1272w, https://substackcdn.com/image/fetch/$s_!NZ-X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F131ad6b8-648a-4fa9-a19f-87d097e93945_1610x961.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"><em>My lack of answers to how I&#8217;d use AI</em></figcaption></figure></div><p>I just realized that, as a retired guy, I just don&#8217;t do that many daily things. My workflows aren&#8217;t typical office tasks. Most of what I do is pretty occasional, with a little bit of Zoom for consulting engagements, writing (often supported by research and fact-checking), the occasional spreadsheet update, dealing with investment or private lending paperwork, and going out with friends.</p><p>So I told myself I didn&#8217;t really need AI for anything, and never submitted the survey. That belief did not survive the week.</p><h1>The Cursor Experiment</h1><p>Concurrent with the recommendation to take that online AI seminar, friends have been telling me about &#8220;<a href="https://en.wikipedia.org/wiki/Vibe_coding">vibe coding</a>&#8221; and suggested I try <a href="https://www.cursor.com">Cursor</a>. I treated it the way an old guy treats new tools, with &#8220;cautious optimism.&#8221; As a test case for vibe coding, I recalled a past desire to host my own &#8220;link in bio&#8221; page as an alternative to <a href="https://linktr.ee/">LinkTree</a>. For those who don&#8217;t know what I mean, here&#8217;s a screen shot of <a href="https://link.hillwork.net/@spao">my new &#8220;link in bio&#8221; page</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_!k0eS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k0eS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 424w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 848w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k0eS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png" width="1456" height="1991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1991,&quot;width&quot;:1456,&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;: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_!k0eS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 424w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 848w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 1272w, https://substackcdn.com/image/fetch/$s_!k0eS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4616c109-86ab-4096-96a2-ecd8d3d93357_1498x2048.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>My new &#8220;link in bio&#8221; page created using my vibe-coded app</em></figcaption></figure></div><p>However, back when I was thinking of hosting this kind of page on my own, the most popular open source alternative was <a href="https://linkstack.org/">LinkStack</a>, which uses Laravel, a PHP framework that doesn&#8217;t run well on older (and thus inexpensive) shared web hosting plans like the one I use to host my own web sites (<a href="http://paos.us">paos.us</a>, <a href="http://hillwork.us">hillwork.us</a>, <a href="http://time-restricted.com">time-restricted.com</a>). The challenge of course in the modern era is making modern stuff work on 20-year old technology! I just verified that I&#8217;ve been using this legacy plan since 2004!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4wKe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4wKe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 424w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 848w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 1272w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4wKe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png" width="1456" height="869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:869,&quot;width&quot;:1456,&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;: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_!4wKe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 424w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 848w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 1272w, https://substackcdn.com/image/fetch/$s_!4wKe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad0e08e-c80f-416e-8adb-0cdbe9bcb487_1610x961.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Old shared web hosting plan I&#8217;ve since 2004</em></figcaption></figure></div><p>For this AI test, I figured that if I started with a simple app l built on familiar old-school technologies, I could take over the coding and debugging when the AI encountered errors. I assumed incorrectly that the AI would take this project only so far, and the ultimate responsibility would be up to me to get everything really working.</p><p>I was totally wrong! Cursor built the entire app, and I didn&#8217;t write a single line of code. When it encountered errors, it suggested debugging steps that I simply had to follow and paste back in error messages, to which it then responded with bug fixes! I kept escalating my &#8220;asks&#8221; of AI including support for multifactor authentication, passkeys, password resets, email account verification, and self-service signups. I realized I wasn&#8217;t being nearly aggressive enough in how I used AI. And in two days, I burned through all the included credits in the supposed 7&#8209;day free trial.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!imR8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!imR8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!imR8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!imR8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!imR8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!imR8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png" width="1456" height="869" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:869,&quot;width&quot;:1456,&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;: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_!imR8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 424w, https://substackcdn.com/image/fetch/$s_!imR8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 848w, https://substackcdn.com/image/fetch/$s_!imR8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 1272w, https://substackcdn.com/image/fetch/$s_!imR8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe753d0e5-f580-4df1-8c70-b7dce3069efd_2048x1223.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Going through $10 of Cursor free credits in 2 days and capping the free trial</em></figcaption></figure></div><p>For those who are interested, I put the app on <a href="https://link.hillwork.net">https://link.hillwork.net</a>. Feel free to sign up and give it a try! I also published the code as <a href="https://github.com/stevepao/linkhill">open source on GitHub</a> with an MIT license if you want to peruse the code or install it yourself.</p><h1>Revisiting everything</h1><p>This whole experience was so fast and easy to get started and far exceeded my expectations. I&#8217;m now realizing that there are all sorts of life activities I would automate with this level of ease. For example, for my direct private lending activity, I&#8217;ve been manually maintaining spreadsheets to track the different deals, the payments, and even creating the VOM (verification of mortgage) documents for subsequent lenders on refinancing. I had convinced myself that automating this would take more time than the manual work ever would.</p><p>But that flawed reasoning was based on old realities of being both a former programmer and a retired tech exec that has managed a ton of software projects the old way. AI is a total game changer. So, in this case, the real constraint was not what AI can actually do, but rather my own skepticism about what people claimed!</p><h1>&#8220;Memory&#8221; as the next issue</h1><p>If anything has held me back from using chat-based AI for real workflows, it&#8217;s memory. There have been limited cases where I could go back to the same chat inside ChatGPT, for example, to <a href="https://www.retiredpdx.com/p/when-technology-becomes-my-doctor">monitor the progress of a toe injury healing over time.</a></p><p>However, in general, ChatGPT can&#8217;t really &#8220;remember&#8221; much. In technical terms, the AI is constrained by a &#8220;context window&#8221; (measured in &#8220;tokens&#8221;) that it can process in a single conversation. Once a chat exceeds this capacity, the model &#8220;forgets&#8221; earlier messages, pushing older information out of working memory. The result is that ChatGPT essentially can &#8220;forget&#8221; things I told it before. As such, I don&#8217;t think I&#8217;d trust it to actually do things for me that required more context or background information from me.</p><p>That said, the buzz right now is around <a href="https://openclaw.ai/">OpenClaw</a> (formerly &#8220;Clawdbot&#8221; and briefly, &#8220;Moltbot&#8221;), which is a local agent that utilizes disk, rather than just working memory, to retrieve past preferences, files, and conversations. So, I just did the thing that many on the Internet are making fun of, which is that <a href="https://www.businessinsider.com/clawdbot-ai-mac-mini-2026-1">I bought a Mac Mini</a> to play with OpenClaw more safely in its own sandboxed environment. I think that could change everything.</p><h1>A reluctant convert</h1><p>Historically, I resist trends that don&#8217;t resonate with me at first. (For example, I have largely resisted social media, and I still don&#8217;t use food delivery services). However, somewhat unexpectedly, I am becoming an AI convert.</p><p>This little &#8220;vibe coding&#8221; example with Cursor demonstrated to me that I was thinking like someone who needed to plan, engineer, debug, and maintain every step of the way. But AI doesn&#8217;t need me to do that anymore. I can ask it to handle those things for me, think differently, and just act faster.</p><p>t don&#8217;t know exactly where all of this goes. That said, I am now open to automating things I previously thought weren&#8217;t worth automating. I am just working through (as a former cybersecurity guy) what all the security implications of this are going to be.</p><p>The irony was that what converted me to this new world wasn&#8217;t some futuristic demo or new use case. The insight came from an old school app running on 20-year-old server tech!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/an-accidental-ai-convert/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/an-accidental-ai-convert/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/an-accidental-ai-convert?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Retired Techie! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/an-accidental-ai-convert?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/an-accidental-ai-convert?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Am I Being Nudged?]]></title><description><![CDATA[Right-wing foreign policy media hitting my feed]]></description><link>https://www.retiredpdx.com/p/am-i-being-nudged</link><guid isPermaLink="false">https://www.retiredpdx.com/p/am-i-being-nudged</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 25 Jan 2026 14:03:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Qrhg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Thanks again for reading this Substack. By now, most of you have figured out that while I&#8217;m not strictly Democrat or Republican, I have opposed much of what the Trump administration has done domestically, with <a href="https://en.wikipedia.org/wiki/List_of_shootings_by_U.S._immigration_agents_in_the_second_Trump_administration">ICE shootings</a>, <a href="https://en.wikipedia.org/wiki/Donald_Trump%27s_conflict_with_the_media">attacks on the media</a>, <a href="https://www.kff.org/medicaid/kff-health-tracking-poll-views-of-the-one-big-beautiful-bill/">the unpopular OBBBA</a> (&#8220;big ugly bill&#8221;), <a href="https://abcnews.go.com/Politics/majority-americans-tariffs-hurt-familys-financial-situation-spending/story?id=127135842">tariffs</a>, <a href="https://www.nrdc.org/stories/how-epa-rollbacks-will-cost-us-dollars-and-lives">cutting environmental protections,</a> <a href="https://www.warren.senate.gov/newsroom/press-releases/icymi-warren-reads-100-acts-of-trump-corruption-into-congressional-record-to-mark-100-days-of-the-trump-administration">corrupt practices</a>, and more. (And, let&#8217;s not forget about the <a href="https://en.wikipedia.org/wiki/Epstein_files">Epstein files</a>!) That said, I haven&#8217;t commented much to date on foreign policy. Today, I wanted to explore how my social media feeds have been trying to change my viewpoints, as well as to ponder who might be behind this!</p><h1>My historical viewpoints</h1><p>Prior to this recent influx of social media,  I&#8217;ve largely taken the attitude that, on balance, the US has been trying to be &#8220;the good guys.&#8221; The basic messaging I&#8217;ve absorbed in the past has basically been that the United States:</p><ul><li><p><strong>Leads global institutions and fosters partnerships</strong>. Whether through defense alliances like NATO, or international cooperation like the United Nations, these partnerships have helped to maintain order and increase the US influence throughout the world.</p></li><li><p><strong>Exercises &#8220;soft power</strong>.&#8221; Through USAID, the US helped people in need with both aid and development, improving not only the reputation of the US throughout the world but also to make it an aspirational home for immigrants from developing nations.</p></li><li><p><strong>Promotes free trade and economic diplomacy</strong>. By actively buying foreign goods and exporting leading technologies, the US fostered mutual prosperity and peace.</p></li><li><p><strong>Provides global public goods.</strong> By protecting all the oceans and ensuring peace on the waterways, the US made free trade safe.</p></li></ul><p>With the Trump administration, we are all witnessing these values being challenged now, as the Trump administration has been <a href="https://www.forbes.com/sites/kristenkaufman/2026/01/12/what-the-us-withdrawal-from-66-international-bodies-means-for-american-business/">withdrawing from international partnerships</a>, <a href="https://hsph.harvard.edu/news/usaid-shutdown-has-led-to-hundreds-of-thousands-of-deaths/">shutting down USAID</a>, <a href="https://www.bbc.com/news/articles/cn93e12rypgo">implementing tariffs</a>, and <a href="https://en.wikipedia.org/wiki/United_States_strikes_on_alleged_drug_traffickers_during_Operation_Southern_Spear">conducting (illegal) killings on international waters</a>.</p><p>To me, what is interesting is how an increasing amount of long-form content hitting my feeds has been trying to dissuade me from my prior viewpoints on foreign policy issues to align more favorably with what is happening today.</p><h1>The arguments being presented</h1><p>I have watched a lot of long-form YouTube content, and I&#8217;m fascinated by how many of these arguments get presented piece-by-piece.</p><ul><li><p><strong>We can&#8217;t afford to police the world.</strong> In general, there is a good amount of content out there describing the debt problem we face today in the US, largely because, as a nation, we are spending in ways we cannot afford. The government has insufficient fiscal resources to both take care of our own people well, as well as to try to police the entire world. We have a $1 trillion annual defense budget, with an intention by Trump to raise this next year to $1.5 trillion. Estimates for the cost of the Afghanistan engagement itself from 2001 to 2021 approach $5.8 trillion, with little long-term benefit. The rising debt burden associated with military overreach causes empires to fail, with the &#8220;<a href="http://www.inquiriesjournal.com/articles/1627/hegemonic-overreach-in-the-british-empire-economic-distress-strategic-imperative-and-the-fall-of-singapore">hegemonic overreach&#8221;</a> of Britain being the latest historical example. Today, the US spends <a href="https://en.wikipedia.org/wiki/List_of_countries_with_highest_military_expenditures">more on defense than the next 9 countries combined</a>. Is this required?</p></li><li><p><strong>We&#8217;re not particularly effective</strong>. Probably the biggest example of our lack of efficacy right now was the inability to completely protect Ukraine&#8217;s sovereignty. Putin put the West to the test, and the current peace proposals grant Russia de facto control of the land it has seized so far, including the strategic &#8220;land bridge&#8221; connecting mainland Russia to Crimea. The United States and Europe, while providing money and arms, have been reluctant to fully defend Ukraine and restore its borders to avoid a nuclear escalation, essentially ceding to Russia&#8217;s &#8220;land grab.&#8221; The world is watching the situation with China and Taiwan closely, and it&#8217;s becoming increasingly clear that the US and Europe will not have the appetite to adequately defend Taiwan against a potential Chinese takeover. The argument here is that Trump, with his actions against Venezuela and motions toward Greenland, is simply acknowledging that the US can largely do what it wants, too. The belief is that Russia and China would likely not respond to US actions, and Europe lacks sufficient resources to do much on the world stage anyway.</p></li><li><p><strong>The rules aren&#8217;t equitable</strong>. While economists on both the left and right may align on the conceptual value of free trade, the complaint is that China&#8217;s rise was on an unfair playing ground. The argument is that the Chinese government is participating in unfair trade practices with opaque subsidies, illegal &#8220;dumping&#8221; through overproduction just to squeeze out competitors, forced technology transfers, and IP theft. The World Trade Organization (WTO) sets guidelines that China openly violates and that international cooperation is a lofty yet unachieved goal.  With respect to Europe, we as Americans may envy the social spending in European societies but often fail to recognize that the US granted Europe the ability to spend this way at the direct cost to Americans by funding the defense of their territory. The right wing media argues that Europe should now start paying more of its own way, rather than persist with NATO the way it is set up now. So, while there was the appearance of free trade and economic diplomacy, there needs to be corrections here to achieve their goals.</p></li><li><p><strong>A multi-polar world might actually be safer</strong>. The argument here is that the world may actually be safer with &#8220;spheres of influence&#8221; where the US, China, and Russia are all free to act in their own interests rather than to fight with each other. Let Russia take Ukraine. Let China take Taiwan. Let the US take Venezuela and Greenland, and don&#8217;t fight each other. Transition gradually away from protecting Europe so that it is set up to protect itself. The argument is that this arrangement is simply a practical and realistic assessment of what is happening anyway, and that it is possible in a multi-polar world for all sides to act in their own mutual benefit to exercise restraint because aggressive moves can be checked by a coalition of other major powers. From an economic perspective, the argument is that in a multipolar world, there may be more economic diversification, preventing a financial breakdown in a single country from triggering global economic collapse.</p></li></ul><p>Personally, I&#8217;m not sure I agree with the structure of the complete arguments yet, but there are definitely elements of truth in their construction.</p><p>Still, I remain skeptical. Even if there are valid arguments to change the role of the US on the world stage, I also believe there are ways we can get there that don&#8217;t involve abducting country leaders, killing civilians at sea, frivolous tariff policy, and threatening allies with military intervention. The behavior of the Trump administration continues to baffle me, even with the logical arguments being presented behind some of its impacts.</p><p>All that said, I find the timing of this content delivery to be impeccable, as we are facing some pretty undeniably negative issues on the domestic front. The only path for the right to look somewhat sane at the present moment is likely on the foreign policy side.</p><h1>Hollywood&#8217;s legacy of influence</h1><p>This propaganda got me thinking about how we&#8217;ve been historically influenced in other ways by the media.</p><p>Ever wonder why the FBI always looked like the good guys in classic films? It wasn&#8217;t luck. It turns out it was a strategy that was well-defined and even documented in a dedicated Wikipedia page titled &#8220;<a href="https://en.wikipedia.org/wiki/Federal_Bureau_of_Investigation_portrayal_in_media">FBI Portrayal in Media.</a>&#8221; The campaign started in the 1930s with J. Edgar Hoover working directly with the Hollywood studios to shape the image of the FBI, with movies like G Men in 1935. The point was to ensure that agents appeared incorruptible and heroic.</p><p>The CIA later adopted the same playbook. Films like Zero Dark Thirty and Argo received agency support, including access to facilities, technical advice, and even script edits to highlight the CIA&#8217;s role as heroes. This support and its intent were well documented in an academic article &#8220;<a href="https://researchprofiles.herts.ac.uk/en/publications/from-zero-to-hero-the-cia-at-the-movies-today/">From Zero to Hero: The CIA at the Movies Today</a>.&#8221;</p><p>And let&#8217;s not forget the Pentagon&#8217;s blockbuster success: Top Gun. The Navy partnered with filmmakers, providing aircraft and bases, and reaped the rewards. While the claimed <a href="https://www.reddit.com/r/WarCollege/comments/1hxis8t/there_is_a_popular_mainstream_claim_that_the_1986/#:~:text=Claim%20that%20Top%20Gun%20sparked,Appreciate%20the%20info%2C%20thanks.">surges in recruitment were largely exaggerated</a>, it is well accepted that the movie created an awareness and positive image of naval aviation.</p><h1>The social feed as a modern point of influence</h1><p>Today, influence has moved from Hollywood to algorithms. Instead of waiting for blockbuster movie releases, influential content now reaches us instantly via YouTube, podcasts, and long-form social media.</p><p>In my feed, it&#8217;s becoming clear that the algorithms are amplifying content to me that feels credible, expert-driven, and targeted at educated audiences. This is very different from the conspiracy-driven content that was driving MAGA like QAnon, Dominion voting machines flipping votes from Trump to Biden, or that 5G caused COVID.</p><p>Still, reporting shows that conservative media dominates these spaces, often backed by well-funded networks and nonprofits.Here are some articles that help to outline this phenomenon:</p><ul><li><p>&#8220;<a href="https://www.prwatch.org/news/2020/01/13531/right-wing-megadonors-are-financing-media-operations-promote-their-ideologies">Right-Wing Megadonors Are Financing Media Operations to Promote Their Ideologies</a>&#8221;</p></li><li><p>&#8220;<a href="https://www.exposedbycmd.org/2025/11/21/dark-money-donor-conduit-funneled-195-million-to-right-wing-groups-in-2024/">Dark Money Donor Conduit Funneled $195 Million to Right-Wing Groups in 2024</a>&#8221;</p></li><li><p>&#8220;<a href="https://politicalresearch.org/2023/10/25/uncovering-right-wing-funding">Uncovereing Right Wing Funding</a>&#8221;</p></li></ul><p>The result is that the online sphere is now dominated by right-leaning content.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qrhg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qrhg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 424w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 848w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qrhg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:133405,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/185693025?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.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_!Qrhg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 424w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 848w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!Qrhg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F552d26c7-fb14-42bc-8841-1d403399e024_2095x1100.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: <a href="https://www.mediamatters.org/google/right-dominates-online-media-ecosystem-seeping-sports-comedy-and-other-supposedly">mediamatters.org</a></figcaption></figure></div><h1>So what now?</h1><p>My recommendation for other observers is to remain open but stay vigilant. There are some very tough questions around foreign policy that we have to get our arms around.</p><p>A key problem is that the US amounts to 25% of the world&#8217;s consumption with less than 5% of the population. We don&#8217;t get there by promoting economic equality throughout the world. Today, we are affording our lifestyles based on cheap credit available to us because the US dollar is the world&#8217;s reserve currency, largely due to the defense spending in the Middle East to keep oil priced in dollars. Today, any countries who buy oil must have dollars on hand, keeping up demand for our currency even with <a href="https://fred.stlouisfed.org/series/GFDEGDQ188S">public debt at 120% of GDP.</a> The status quo is unsustainable.</p><p>Going forward, technology may ultimately play an important role in foreign policy. With renewables, battery technology, and nuclear power, <a href="https://www.exponentialview.co/p/why-energy-tech-is-eating-the-world">energy is becoming a limitless technology</a> that can be produced locally, rather than a finite, unevenly distributed commodity that is managed through geopolitics.</p><p>I believe the new world order will be impacted by advances in AI and robotics, bioengineering, and energy. Future geopolitics will be determined by the players that get all of this right. So far, it appears that the <a href="https://www.belfercenter.org/critical-emerging-tech-index">US and China are leading</a> in this regard.</p><p>As this future emerges, we all just need to make sure that our internal divisions and internal politics don&#8217;t get in the way of making all of this successful, and this is why I remain so concerned about what&#8217;s happening domestically. To succeed as a country, people must have faith that systems can work and that communities can work together. This is where I have a real problem with the media from both sides with messaging aimed to divide the country and win elections.</p><p>As such, I strongly recommend being mindful of media consumption and propaganda from all sides. If anything, my observations on how I&#8217;m being hit by social media algorithms make me appreciate even more the need for us all to work together and to understand each other.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/am-i-being-nudged/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/am-i-being-nudged/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Questions I’ve Been Asking Myself]]></title><description><![CDATA[Another step in the transplant journey]]></description><link>https://www.retiredpdx.com/p/questions-ive-been-asking-myself</link><guid isPermaLink="false">https://www.retiredpdx.com/p/questions-ive-been-asking-myself</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Tue, 20 Jan 2026 00:30:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4QwX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4QwX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4QwX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4QwX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg" width="1024" height="732" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:732,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65383,&quot;alt&quot;:&quot;One candle lighting another&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/185129443?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="One candle lighting another" title="One candle lighting another" srcset="https://substackcdn.com/image/fetch/$s_!4QwX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 424w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 848w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!4QwX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a420100-6570-4cd0-b9db-81da6e570964_1024x732.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a></em></figcaption></figure></div><p>Thank you to everyone who has reached out with support after I shared the latest on my kidney disease. Many of you asked thoughtful questions, the same ones I&#8217;ve been asking nephrologists, transplant coordinators, nurses, and educators at <a href="https://www.ohsu.edu/transplant/kidney-and-pancreas-transplant-program">OHSU</a>, <a href="https://strivehealth.com/patients/kidney-transplants/">Strive Health</a>, and <a href="https://davita.com/treatment-options/transplant/">Kidney Smart</a>, among others.</p><p>I&#8217;m not an expert. But I wanted to capture where I am right now as I try to understand three big themes: cost, donation, and life purpose. These questions have pushed me not just into medical territory but into social ethics, meaning, and what it means to &#8220;be enough.&#8221;</p><h1>Costs</h1><p>If I qualify for a kidney transplant, the procedure and lifelong medications will be extremely expensive. The surgery alone sits in the six&#8209;figure range, and immunosuppressants cost thousands per month for the rest of my life.</p><p>My first reaction was:</p><p><strong>&#8220;How should I feel about being this expensive?&#8221;</strong></p><p>Last year, my insurer processed nearly $100K of claims and paid out about 45%. My current medications (Ozempic, Jardiance, Kerendia, et al) are already more than $2,000 per month before insurance. In our capitalist framing of the world, it&#8217;s hard not to see myself as creating an &#8220;expense line.&#8221;</p><p>But my nurse at Strive Health made an excellent point. This burden is structural, not personal. I&#8217;m simply trying to stay alive. Prices reflect the design of the U.S. healthcare system, not the value of my life.</p><p>Health&#8209;policy researchers reinforce this concept. The U.S. doesn&#8217;t spend more because patients like me use too much care, but because our system charges higher prices. Costs are a policy and pricing problem, not a moral referendum on individual worth.</p><p>So the perspective that I am actively learning is that my care sits inside a social contract, not an individual ledger.</p><p>I don&#8217;t have to prove I&#8217;m &#8220;worth it.&#8221;  Receiving necessary medical care is not a debt I must repay.</p><p>A side note I found comforting was that transplantation is actually much more cost&#8209;effective than long&#8209;term dialysis. Even with the upfront cost of surgery and lifelong meds, transplant recipients typically generate significant savings to the health system over time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xfla!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xfla!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 424w, https://substackcdn.com/image/fetch/$s_!xfla!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 848w, https://substackcdn.com/image/fetch/$s_!xfla!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 1272w, https://substackcdn.com/image/fetch/$s_!xfla!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xfla!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png" width="1286" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1286,&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;: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_!xfla!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 424w, https://substackcdn.com/image/fetch/$s_!xfla!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 848w, https://substackcdn.com/image/fetch/$s_!xfla!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 1272w, https://substackcdn.com/image/fetch/$s_!xfla!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517bae96-8d51-44e5-b5c2-f8d4a8133969_1286x874.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: <a href="https://www.cato.org/regulation/summer-2023/saving-lives-while-saving-money">Cato Institute</a></figcaption></figure></div><p>Of course, this cost justification in no way justifies my existence. However, at least it does provide some insight into the workings of the system that removes some psychological weight on me.</p><h1>Donation as Gift Exchange</h1><p>If I qualify, the strong recommendation is to seek a living donor. In Oregon, the wait for a deceased donor kidney is more than five years, and fewer than half of wait&#8209;listed patients receive one. Living donor kidneys also tend to last longer, roughly 15 years instead of about 10.</p><p>So I&#8217;ve had to ask myself:</p><p><strong>Why would anyone donate a kidney? And why would I accept something that feels so enormous?</strong></p><p>My nurse&#8217;s answer reframed the question. Donor motivation, he said, comes from meaning and from a desire to lessen someone&#8217;s suffering, to tangibly help, and to act out personal values. He mentioned several nurses in his own practice who have donated kidneys to people they didn&#8217;t even know.</p><p>This concept aligns with something I&#8217;ve been thinking about in a political context, the idea of abundance. Generosity is not a zero&#8209;sum transfer but an expression of shared humanity. Under this lens, donation isn&#8217;t a &#8220;sacrifice that must be repaid.&#8221; It&#8217;s a gift exchange: the donor offers a gift of life, and the recipient gives back the gift of meaning.</p><p>The research backs this up. Many donors describe donation as one of the most fulfilling experiences of their lives.</p><blockquote><p>&#8220;Many positive comments identified donation as one of the most fulfilling experiences in the donor&#8217;s life. For example, donors wrote, &#8216;Organ donation was the most meaningful event of my life after becoming a father&#8217; and &#8216;Being able to help my sister was the high point of my life.&#8217; Other comments indicating a positive association between donation and SWL [Satisfaction with Life] often focused on benefits to the donor, such as &#8216;Donation gave me a sense of direction and purpose for my life&#8217; and, &#8216;I have more self-esteem after donation than I ever had my whole life&#8217; or comments about an enhanced relationship with the recipient.&#8221;<br>&#8212;Messersmith, Gross, et al, &#8220;Satisfaction With Life Among Living Kidney Donors: A RELIVE Study of Long-Term Donor Outcomes.&#8221; <em>Transplantation</em>. PMCID: <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4333130/">PMC4333130</a>.</p></blockquote><p>Of course, there remains a minority of donors who describe more difficult or complicated emotional outcomes, especially when family dynamics were strained or when the recipient had a poor medical outcome.</p><blockquote><p>&#8220;Negative comments focused on questioning whether the decision was actually a good choice and on poor relationships with others. For example, one donor, whose donation to an in-law was not supported by her husband, wrote, &#8216;It is very difficult to feel resented for something like this.&#8217; Another, whose recipient became ill during recovery and died within a year of transplant, wrote &#8216;I feel the whole affair was a waste of life, much pain and of course expense.&#8217;&#8221;<br>&#8212;Messersmith, Gross, et al, &#8220;Satisfaction With Life Among Living Kidney Donors: A RELIVE Study of Long-Term Donor Outcomes.&#8221; <em>Transplantation</em>. PMCID: <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC4333130/">PMC4333130</a>.</p></blockquote><p>These more difficult outcomes underscore why donor screening is incredibly thorough and why donor protections, such as priority for future transplants if they ever need one, are built into the system.</p><p>Financially, there are still costs, including travel, time off work, and logistics. The education materials describe programs like (<a href="https://www.livingdonorassistance.org/">NLDAC</a>, <a href="https://www.kidneyregistry.com/for-donors/kidney-donation-blog/can-i-be-reimbursed-for-travel-costs-when-i-donate-a-kidney/">Donor Shield from the National Kidney Registry</a>) that can help in certain situations. The donation ecosystem essentially tries to foster people&#8217;s desire to help while clearing the roadblocks.</p><p>I&#8217;m still wrapping my mind around the psychosocial aspects of all this. But I already feel deep gratitude for the people who have donated and for those who might consider it.</p><h1>Life Purpose</h1><p>Even if the costs are justified, and donors often experience profound meaning, one final question lingers for me:</p><p><strong>Do I need to do something more with my life if I receive a kidney?</strong></p><p>Or more profoundly:</p><p><strong>Am I enough as I am?</strong></p><p>This has come up in multiple conversations with my care team, and I&#8217;ll summarize the main points I have walked away with.</p><ol><li><p><strong>Taking care of myself</strong>, The most fundamental way to honor the gift is to follow the transplant protocol: take the medications, attend follow&#8209;ups, and maintain the healthiest lifestyle I can.<br></p></li><li><p><strong>Belonging</strong>, I don&#8217;t need to reinvent myself into a superhero. The goal is to return to the life and relationships that already matter to me, supported rather than overshadowed by the transplant.<br></p></li><li><p><strong>Shared participation</strong>. There&#8217;s a societal reciprocity that keeps the system working. Sharing my story here on Substack and hopefully supporting others in their journeys is a start. Being registered as a deceased donor is another way of participating in that broader social fabric. I&#8217;ve already committed to <a href="https://memory.ucsf.edu/research-trials/brain-donation">donating my brain and spinal cord to UCSF&#8217;s Memory and Aging Center</a> and am exploring <a href="https://www.ohsu.edu/body-donation">OHSU&#8217;s body donation program</a> as well.</p></li></ol><p>This is all slowly starting to make sense. A key part of my mental health journey has been recognizing that capitalist logic doesn&#8217;t apply here. Care is not a debt. I don&#8217;t owe the world a &#8220;return&#8221; in the form of exceptional productivity or heroism. Being the best version of myself should really be enough.</p><p>At the same time, I can express gratitude through abundance by offering mentorship, advocacy, or support in parts of life where I have something to give. This isn&#8217;t &#8220;repayment&#8221; but rather just generosity.</p><h1>Netting It Out</h1><p>For me, the purpose of writing all of this out is to help me internalize what I am being told. The goal of my ongoing care is to let me continue living the life I already value, to experience the small joys, to be with the people who matter to me, and to honor the kidney by caring for it.</p><p>There&#8217;s no return&#8209;on&#8209;investment I need to produce, a balance sheet to justify, or heroic transformation required.</p><p>That is enough. And I am enough.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/questions-ive-been-asking-myself/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/questions-ive-been-asking-myself/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item><item><title><![CDATA[Returning in 2026]]></title><description><![CDATA[Limping back into writing after a couple weeks off]]></description><link>https://www.retiredpdx.com/p/returning-in-2026</link><guid isPermaLink="false">https://www.retiredpdx.com/p/returning-in-2026</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 12 Jan 2026 05:20:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KPsJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I took a bit of a break from Substack over the holidays. Thanks for the notes (and new subscriptions!) that motivated me to return to writing about what a retired guy actually thinks about! To bring you up to speed on my last couple of weeks, I figured I&#8217;d do a bit of a medley here with a &#8220;top 10&#8221; list.</p><div><hr></div><h2><strong>1. Feeling &#8220;beige&#8221;</strong></h2><p>I&#8217;ve written before about how using Ozempic for diabetes management didn&#8217;t make me lose weight but affected my motivation to do new things. While I wrote about this phenomenon on <a href="https://medium.com/@stevepao/the-good-complex-and-potential-bad-of-ozempic-f23ce6c8b79d">Medium</a> (friend link <a href="https://pao.mx/medium001">here</a>), I particularly resonated with the narrative in an article forwarded to me from <em>New York Magazine</em> titled &#8220;Life in Beige&#8221; (<a href="https://apple.news/ASBM6o7ICRm6Jj28C7oqBWQ">Apple News link here</a>).</p><blockquote><p>&#8220;The drugs work &#8212; users report fewer cravings and less food noise. But unexpectedly, by altering their desire for food, some people say they&#8217;ve lost their desire for everything else, and what&#8217;s left is a long-lasting state of meh, bleh, numb, flat, take-it-or-leave-it.&#8221;</p></blockquote><p>Even though the holiday season involved a New Year celebration, it was hard to get excited about the festivities, motivate myself to pack for a roadtrip, or even figure out how to find a time to write when away from my normal routine.</p><h2><strong>2. Disease progression</strong></h2><p>Speaking of Ozempic, my diabetes numbers are under control. In December, I visited my endocrinologist, and my A1C was 6.1, well within my target range. The great news is that Ozempic is doing its thing to keep my blood sugar under control. The bad news is I also saw my nephrologist in December, and my kidney numbers aren&#8217;t so good (eGFR of 15). I&#8217;m basically at ESRD (end-stage renal disease). I&#8217;ve started my dialysis education now, and I&#8217;ve been referred to the transplant process. I go in on February 3rd for my big evaluation appointment for transplant, which includes blood testing, cardiac stress testing, psych eval, social work, and more. I&#8217;ll let you all know how this goes!</p><h2><strong>3. Emotions on year-end taxes</strong></h2><p>As a retired person, I don&#8217;t have W-2 income and withholdings, so all the cash flows come in from consulting, direct private lending, and investment activity where taxes are not withheld. I just paid my estimated taxes (due January 15th), and I felt really differently this year. While I&#8217;m OK with paying Oregon, Multnomah County, and Portland Metro taxes, I was not feeling great about giving money to the Federal Government right now, particularly with the &#8220;sphere of influence&#8221; actions going on with Venezuela and the ICE shootings, both in Minnesota and even here in Portland.</p><p>I&#8217;ve actually never been one to hate the government. I would simply prefer that tax dollars go toward public health &amp; disease control, basic research, environmental protection, weather &amp; climate services, infrastructure, disaster recovery, and consumer protection. I understand that the government needs to balance budgets. So why are we spending so much on military operations in Venezuela that haven&#8217;t been approved by Congress? And why are we spending so much on ICE? It frustrates me when our tax dollars go towards efforts that are both unpopular and most likely illegal.</p><h2><strong>4. Emotions as a whole</strong></h2><p>Those of you who have followed my Substack know that I&#8217;ve been reflecting on my therapy journey. I&#8217;ve hit an interesting crossroads. While my early therapy work focused on how I can improve my behavior in managing relationships with others, the real work now is what I actually want to explore for myself. This is a bigger topic. Given that my therapist knows I like to write to process thoughts, she has given me a writing assignment I&#8217;m really struggling with. (Separately, I don&#8217;t believe I can publish any of that work here, as so many of my experiences have been shaped by my interactions in the world, and I try not to violate anyone else&#8217;s privacy&#8212;other than Marsha&#8217;s and mine&#8212;in this space.)</p><h1><strong>5. Anxiety about the &#8220;end of empires&#8221;</strong></h1><p>Marsha often jokes that I must have spent a previous life in Atlantis because I&#8217;m good at math, embrace technology, and like Mediterranean food. Personally, the reason I think she may be on to something is that I have a particular set of phobias about the end of empires. Atlantis, after all, was supposedly an advanced civilization that met a catastrophic end. As I&#8217;ve watched the ongoing buildup of federal debt, the escalating division inside the country, and military overreach, my fears about the end of this age in America have grown. Our inability to adapt to energy as a technology (solar, wind, nuclear) and our continued geopolitical games for fossil fuels, like we are currently pursuing with Venezuela, simply amplify these fears. One thing I&#8217;ve always hated about the Monte Carlo simulations in financial plans is that we&#8217;re supposed to feel &#8220;good&#8221; passing 80 percent of the scenarios. Whenever I ask what kinds of scenarios the other 20 percent represent, the answer is always something like &#8220;the end of empires.&#8221; Aren&#8217;t we there yet?</p><h2><strong>6. Family time</strong></h2><p>Anxiety about bigger picture issues aside, we got to see our kids at year-end! It was fun to reunite as a family! Rather than taking separate photos in the pre-Christmas rush while we&#8217;re all apart, we changed our holiday card strategy to send after the holidays so we can all be in the photos together. For those who aren&#8217;t on the spam list, here&#8217;s a <a href="https://paos.us/2026/01/happy-new-year-2026/">link to an online version of our holiday greeting!</a></p><h2><strong>7. Frustrations running websites myself</strong></h2><p>I really appreciate Substack because I am a bit tired of running my own legacy website where I host those old holiday greetings. The latest update from PHP 8.1 to PHP 8.4 broke both a WordPress plug-in on my website and my URL shortener. It took time for me to debug the issues in order to avoid a <a href="https://www.ionos.com/hosting/php-extended-support#plans">PHP 8.1 extended support</a> plan which was annoyingly going to cost me $7.81 per month for basically a site that gets used once per year!</p><p>For those who wonder why I did this site to begin with, it&#8217;s because our original family website back in 1997 was done on AOL, and that site ultimately went away as the popularity of that service waned. To protect ourselves from further obsolescence, I set up our own website, and it currently hosts our holiday greetings (and other family news) all the way back from 2004. In 2016, our kids made us put archived content from their childhoods behind a password. (The currently visible posts have been approved by &#8220;corporate.&#8221;)</p><p>I&#8217;ll likely keep this all in maintenance mode, as I&#8217;m no longer really touching the sites I manage myself (<a href="https://paos.us">paos.us</a>, <a href="https://time-restricted.com">time-restricted.com</a>, <a href="http://hillwork.us">hillwork.us</a>). My new stuff is all here on Substack.</p><h2><strong>8. Mentorship</strong></h2><p>Marsha and I are finding ourselves returning to our role as parents in doing some mentoring. What&#8217;s funny is that when our kids were in college and later grad school, the decisions they faced were more influenced by their environments. In this life phase after school, we&#8217;re seeing a shift in our conversations toward navigating life&#8217;s normal challenges. We are excited by our older daughter&#8217;s engagement, and we love her fianc&#233;! Still, Marsha and I learned in our own early marriage counseling that the two most common issues every couple has to go through are about money and families-of-origin. We appreciated the ability to reassure our daughter that the topics she was asking us about are totally good and normal for this phase of life!</p><h2><strong>9. Old stuff</strong></h2><p>Of course, it&#8217;s tough to talk about life phases without the question of what to do with old stuff. Both our kids went East for undergrad, leaving behind their childhood stuff with us. Then, they both did Master&#8217;s degrees in the UK, leaving behind their undergrad stuff with us. Our younger daughter took a minimal set of stuff with her to Chicago to start her first job. Our older daughter took a minimal set of stuff with her to study at Princeton. This holiday season, both of them spent effort going through the old stuff they wanted to transport into their new phases of life!</p><p>It&#8217;s funny to me how much time we spend caring for the stuff we&#8217;ve lived without for years! I picked up the scanning of some old photos for both daughters and was humored by how much effort it was just to save a little bit of space. Still, there are some gems in there! Again, I won&#8217;t post them here because they aren&#8217;t approved by &#8220;corporate.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KPsJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KPsJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 424w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 848w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 1272w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KPsJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png" width="1456" height="1148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1148,&quot;width&quot;:1456,&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;: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_!KPsJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 424w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 848w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 1272w, https://substackcdn.com/image/fetch/$s_!KPsJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc16cdc00-f541-4bcd-9cf6-f9503fca2dcd_1652x1302.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Scanned photos uploaded to Dropbox for archival</figcaption></figure></div><p><strong>10. Some tropes on relationships in movies don&#8217;t age well</strong></p><p>We spent the New Year&#8217;s holiday at Marsha&#8217;s family home in Bellevue with her brother. In that home, they still have cable TV. (We cut the cord in the Pao household a long time ago.) On TV one night was the movie <em>Big</em>. Watching it again 37 years later was a disappointment. There were many plot elements that just didn&#8217;t age well. One example was the depiction of the workplace where the leading lady Susan was openly sleeping around the office, as exposed in the breakup scene with Paul:</p><blockquote><p>&#8220;He&#8217;s just another link in the chain! First it was Tom Caulfield, then Handlen. Then Golding, then me! Am I missing somebody?&#8221;</p></blockquote><p>Of course, when I watched this movie, I really didn&#8217;t think about the implications of dating someone in the workplace. After all, I was in college, and students were hooking up with each other all the time. Even in my first job at Oracle, there was a lot of dating inside the company. Times have changed.</p><div><hr></div><p>Those are just some of the issues that I&#8217;ve been thinking about over the last couple of weeks. Maybe these are fodder for some offline conversations we&#8217;ll have? I&#8217;d be interested in hearing from you!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/returning-in-2026/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/returning-in-2026/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Props to a Fellow Techie]]></title><description><![CDATA[A Surprise on my YouTube Feed]]></description><link>https://www.retiredpdx.com/p/props-to-a-fellow-techie</link><guid isPermaLink="false">https://www.retiredpdx.com/p/props-to-a-fellow-techie</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sat, 27 Dec 2025 02:28:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/VeMA9WGKxOg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I am always impressed by social media algorithms, and one particular video produced by a new creator hit my feed. Maybe it hit yours, too! I&#8217;m humbled to admit that this particular creator doesn&#8217;t need my promotion, as he&#8217;s already gotten almost 600K views from just his inaugural video and almost 20K subscribers at the time I am writing this. All that said, given that you took an interest in my subject matter on this Substack, I thought you might like to see his video, too!</p><div id="youtube2-VeMA9WGKxOg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;VeMA9WGKxOg&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/VeMA9WGKxOg?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>The video is by <a href="https://www.youtube.com/@AsianDadEnergy">@AsianDadEnergy</a>, who is an unnamed former big tech engineering leader. While he&#8217;s younger than I am (in his mid-forties) and didn&#8217;t focus on startups (finishing his career in big tech instead), much of his story resonated with me. Having managed his finances prudently, he accepted a voluntary termination during his company&#8217;s cutbacks to help younger and less senior coworkers avoid layoffs.</p><p>He spoke positively about his past work, acknowledged the overall goodness of his previous employer, and recognized the rewards of working with some really great people. (He also pointed out that not everyone was great!) He relished the experience of being able to travel and work with people all over the world.</p><p>Still, at the beginning of this new phase of life, he reflected on the remaining time before his teenage son leaves home, the lack of guarantee on a blissful future retirement as his wife is now suffering from a disability, and the realization that much of the technology he developed in the past may not have a broader meaning in society.</p><p>To add color to his reflections, he told a story of a coworker who died unexpectedly on the job. Despite the honor his company placed on a short remembrance, just a short time later, it was as if the coworker never existed. One of the comments I appreciated on his YouTube feed was that replacement job postings often go up faster than obituaries!</p><p>Personally, so many of these points resonated with me. I, too, have so much appreciation for the opportunity to work in tech, the companies and people I got to work with, and having the opportunity to travel internationally. Everyone who reads this Substack also knows my own personal tradeoffs associated with family, health, and purpose. I also recognized personally that after exiting the scene, everything just sort of moves on, almost as if I were never there! (No one ever reflects back on the great product roadmaps, business plans, or commercial successes. More people from my past remember karaoke nights or time after work at a bar!)</p><p>There is so much content about tech trends, new products, and even financing, but we always seem to be missing the human stories like what @AsianDadEnergy shared with us. For me, these kinds of first-person stories are what I used to like about self-publishing platforms like WordPress, Substack, and even YouTube back in the day. We&#8217;ve gotten to this place where these platforms have increasingly become places dominated by full-time or professional creators, and I really appreciate when these kinds of first-person stories can get traction!</p><p>Let me know what you think! Does this creator&#8217;s video resonate with you, too?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/props-to-a-fellow-techie/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.retiredpdx.com/p/props-to-a-fellow-techie/comments"><span>Leave a comment</span></a></p><div class="directMessage button" data-attrs="{&quot;userId&quot;:257023342,&quot;userName&quot;:&quot;Stephen Pao&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/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">Retired Techie 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></p>]]></content:encoded></item></channel></rss>