<?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, 14 Aug 2026 15:52:30 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[How my first three jobs wore on me (Part 1 of 2)]]></title><description><![CDATA[Oracle, Visioneer, and Latitude Communications were really different experiences that ultimately drew me away from Silicon Valley the first time]]></description><link>https://www.retiredpdx.com/p/how-my-first-three-jobs-wore-on-me</link><guid isPermaLink="false">https://www.retiredpdx.com/p/how-my-first-three-jobs-wore-on-me</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 09 Aug 2026 14:25:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!U6Y9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Editor&#8217;s Note: After graduating from MIT, I spent eleven years in Silicon Valley at Oracle, Visioneer, and Latitude Communications. This is the story of how those three jobs wore on me, and why by 2001 I was ready to leave all of it behind. I will cover what actually leaving looked like next week in a follow-on post I plan to call &#8220;Not Forever, Just for a While (Part 2 of 2).&#8221;</span></em></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_!U6Y9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U6Y9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U6Y9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg" width="1456" height="1009" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1009,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7158983,&quot;alt&quot;:&quot;Wayne Fenton and Stephen Pao in a 1990s cubicle office, arms around each other's shoulders and smiling. Fenton wears a yellow Tour de France leader's jersey over a collared shirt, holding a bundled white and pink cloth. Pao wears a red and white polka dot Tour de France jersey over a dress shirt and tie.&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/210422300?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Wayne Fenton and Stephen Pao in a 1990s cubicle office, arms around each other's shoulders and smiling. Fenton wears a yellow Tour de France leader's jersey over a collared shirt, holding a bundled white and pink cloth. Pao wears a red and white polka dot Tour de France jersey over a dress shirt and tie." title="Wayne Fenton and Stephen Pao in a 1990s cubicle office, arms around each other's shoulders and smiling. Fenton wears a yellow Tour de France leader's jersey over a collared shirt, holding a bundled white and pink cloth. Pao wears a red and white polka dot Tour de France jersey over a dress shirt and tie." srcset="https://substackcdn.com/image/fetch/$s_!U6Y9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 424w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 848w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!U6Y9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F851fff41-e8f4-4fd8-99b4-49197eb5a203_9109x6314.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Wayne Fenton (the friend who left a voicemail encouraging me to join Latitude) and me to celebrate the launch of MeetingPlace 2.0 in 1995. He got the yellow jersey. I got polka dot.</figcaption></figure></div><p><span>By early 2001, I didn&#8217;t feel like I was succeeding at anything. I wasn&#8217;t really making money, moving the industry forward, or even having as strong a family life at home that I wanted. Of course, hindsight is 20/20, and I couldn&#8217;t have written that as clearly then as I can now looking back. All I knew then was that something wasn&#8217;t working for me. The feeling built over eleven years in Silicon Valley and through experiences at three different companies, Oracle, Visioneer, and Latitude Communications. Each one added something different to the feeling.</span></p><h2>Oracle and office politics</h2><p><span>On paper, I think my years at Oracle (1990-1993) looked like they were going well for me. As a fresh graduate from my master&#8217;s program at MIT, I soon got promoted out of the cubicles into an office of my own, next to the VP&#8217;s. I was the product manager responsible for the most successful initial product launch on a single platform in Oracle&#8217;s history at the time (Oracle Data Browser V1.0 on Windows). I won an internal company award for my tour of 13 US cities and 5 European cities as part of that launch. On a lot of levels, I was actually having a good time.</span></p><p><span>On other levels, the internal politics wore on me constantly. My product, Oracle Data Browser, spent a year in alpha and a year in beta, not because the product itself wasn&#8217;t ready, but because it was built on shared libraries utilized by many product teams. The owners of the shared libraries were in the unenviable position of juggling priorities, and they solved it by fixing a handful of bugs for each product team, rather than wrestling any one team&#8217;s needs to the ground. The situation got serious enough where Larry Ellison&#8217;s chief of staff had to step in and create a &#8220;Product of the Month&#8221; club, where every open bug for one specific product had to get fixed before the shared libraries could move on to the next product&#8217;s bugs. The good news is that my product was first on that list. It just took longer than a month per product, but the products all eventually shipped.</span></p><p><span>At the time, what I learned was that I wasn&#8217;t happy to be in an environment where getting anything shipped required &#8220;winning&#8221; an internal political argument first. I got in my own head an idealistic view that by leaving for a startup, everyone would be on the same team. This was the first time I tried to change jobs to fix what was wearing on me.</span></p><h2>Visioneer and executive misalignment</h2><p><span>I joined Visioneer as employee #20 and its first product manager in 1993 at age 26. Candidly, I didn&#8217;t really pick Visioneer with much of a plan behind it. All I really understood about Oracle was that I wanted out of a really political environment, and the only alternative I could picture was a startup before the product had shipped, when everyone was supposedly still on the same team.</span></p><p><span>What I hadn&#8217;t figured out yet was that the moment a startup actually ships something, the same competing interests show up again, with just a different look. Our own executive team had been pulled together from a handful of different worlds, and nobody was fully reconciling those different visions across competing desires to target corporate end customers, OEM providers, consumers, or just tech early adopters. This lack of alignment left plenty of room for our lead Series B investor (Kleiner Perkins, as I wrote about previously) to end up dictating more of the strategy than any of us did.</span></p><p><span>Like my days at Oracle, some of the Visioneer experience was genuinely fun, if only in small slivers of the volume business. For example, I did enjoy the product evangelism. Local computer user groups were still a real thing in the mid-90s, and I often got tasked with traveling out to the bigger ones to do the 90&#8217;s version of influencer marketing. I&#8217;d present to the user group members, showing off the product like a Ginsu knife demonstration and offer a $100 discount on the spot for those who bought right then in the room. I would come home from these events with a pile of checks!</span></p><p><span>That said, most of my hours went into the daily grind of running product for a startup, on top of everything else the job required. The hours could be pretty bone-crushing. It probably wasn&#8217;t sustainable, though a company layoff kept me from ever finding how long I could have kept it up.</span></p><p><span>I found out I was being laid off while on a business trip to a Novell user conference, where I was scheduled to speak as one of their ISV (independent software vendor) partners about our integration with Novell GroupWise. I returned a voice mail from my CEO when I arrived at the hotel. When discussing my dismissal, I let him know I&#8217;d still give the talk and fly home afterwards to deal with actual termination paperwork. I didn&#8217;t want to tip off the market that Visioneer was going through internal turmoil. The CEO seemed genuinely moved that I chose to depart that way, and he treated me very well on my way out.</span></p><p><span>Silicon Valley turned out to be smaller than I expected. A recruiter who&#8217;d once worked for my boss heard about our layoff the day it happened and mentioned it to a mutual friend, who shared the news with a different friend of mine who was employee number 11 at a company called Latitude Communications. That friend also left me a voice message before I&#8217;d even made it home from that trip and encouraged me to interview there for a product manager position they just opened.</span></p><p><span>What actually convinced me to go with Latitude over my other job offers was watching how well its executives already understood each other. Most of them had worked together before, back at ROLM in the 1980s. When the CEO talked about a sales forecast, the VP of Sales and the VP of Marketing already understood what he meant. When he talked about a product plan, the VP of Marketing and the VP of Engineering did too. Visioneer&#8217;s executive team had been assembled from a variety of different backgrounds instead of growing together. Each executive team member individually was generally very talented, but I often felt the impact of their tendency to talk past each other despite that talent. Latitude looked like it had the fix for exactly that problem. Of course, that fix wasn&#8217;t enough to result in sustained success.</span></p><h2>The unraveling at Latitude</h2><p><span>I joined Latitude Communications in 1994. I was employee #30 and its first product manager. We built MeetingPlace, a data enabled voice conferencing server, years before anyone called it web conferencing. Its HQ was in Santa Clara, and ultimately, we expanded such that about half of my group went to our second office in San Francisco. We were a conferencing company, so when we outgrew our HQ building, we decided to open a second office in San Francisco to shorten the daily commutes of at least some of our employees while still keeping open the possibility of driving into our Santa Clara HQ when it mattered.</span></p><p><span>We grew consistently and became profitable. We went public in 1999, and I was an officer of a public company at age 32, first as VP of Product Management, and then as VP of Marketing also owning Product Management. That job at Latitude remains the favorite job of my career, for the culture and for the friends I made there.</span></p><p><span>Even though our product was a conference server, companies really weren&#8217;t buying just a product or technology. They were signing up to support an internal conferencing service, complete with IT deployment, help desk, and training considerations. Of course, conference calling was something that companies were previously outsourcing entirely, with AT&amp;T being the dominant provider. Deploying our product and an in-house service had a real hard-dollar cost justification behind it, and the customers with enough scale to use it were genuinely happy, valuing the relationship as much as the product.</span></p><p><span>However, the proposition also involved nine to twelve month enterprise sales cycles, as our champions had to navigate the process of converting expense dollars into capital investments and headcount concerns. While the deals did often come in over time, errors in forecasting the exact timing of big deals could be brutal when Wall Street expected our results to be predictable one quarter at a time.</span></p><p><span>The market was also getting more competitive. Some of this was not surprising, as we expected competitive telecom carriers to compete more aggressively against AT&amp;T on price. What did surprise us was how WebEx went after a completely different buyer. We were selling to IT and telecom departments trying to provide a conferencing service for their employees. WebEx sold directly to sales VPs who wanted to do remote presentations and demos to customers and prospects. That was a different approach and easier to absorb, with a model more similar to how companies were used to paying, by actual usage instead of hardware plus capacity-based software licensing we were selling. Ultimately, selling to interested end users with a service-based offering just proved to be a higher velocity commercial model than asking IT departments to purchase, deploy, and support on-premises conference servers.</span></p><p><span>The moment I actually realized where that left us didn&#8217;t happen at the office. It happened on a walk around Sharon Park in Menlo Park with Marsha and the kids. I&#8217;d been sitting in our executive staff meetings actively worrying with my colleagues about selling conference ports and concurrent user licenses, while WebEx executives were discussing their actual customer usage instead. Walking around that park, it was obvious to me there were two different mindsets, and theirs offered a better fit than ours to where the market was going.</span></p><p><span>I brought up this observation in our next executive staff meeting, and I got shut down. Everyone in that room was already stretched thin managing what Wall Street already knew about us, which were missed sales numbers and a stock that wasn&#8217;t recovering. There wasn&#8217;t much appetite left for changing how we would think and rebuilding the business model with new first principles. Even if we understood where things were heading, we just didn&#8217;t have it in us as a team to walk away from the model we&#8217;d already built and proven.</span></p><p><span>After missing our earnings projections, our stock went down.</span> <span>We had institutional investors, and there&#8217;s a mechanical cruelty to how that plays out. Once the price falls below a certain threshold, the institutions are forced sellers, whether or not they still believe in the business. A healthy share price rode down through $5, and eventually down to $1. Customers started pulling back right as the stock did, which created its own vicious cycle. We were still profitable when the slide started, but we ultimately had to do layoffs. Even though we weren&#8217;t a dot-com, our stock slide coincided with the dot-com bust, and I felt bad to have to let good people go. Of course, people eventually landed elsewhere but in many cases it just took longer than it should have just because of the timing of the dot-com bust.</span></p><h2>What was it all for?</h2><p><span>At this phase, I thought changing job situations would address what was wearing on me. For the first move from Oracle to Visioneer, I thought going from a big company full of office politics and many competing interests to a single-product startup would solve it. It didn&#8217;t. Then, I figured that going to a startup with an executive team more aligned at the outset would solve it. And that didn&#8217;t either. I continued feeling pretty worn out.</span></p><p><span>Also, there was a separate pattern running across the products and technologies I worked on. Oracle Data Browser, Visioneer PaperMax, and Latitude MeetingPlace all sold well for a while. Still, all three still got replaced within a few years by whatever came next, whether they took the form of new more advanced OLAP tools, multifunction peripherals, or cloud services like WebEx. It just didn&#8217;t feel like the products I put so much into were making a lasting impact.</span></p><p><span>It&#8217;s only looking back now that I can put it more plainly. So many aspects of those early job situations weren&#8217;t fun for me. I wasn&#8217;t moving the industry forward in any way that was going to last. With a layoff from one startup and a stock price of $1 at another, I wasn&#8217;t getting financially rewarded either. And then, with all the hours that Silicon Valley startups required at the time, I wasn&#8217;t running a great family life.</span></p><p><span>To net it out, after eleven years in Silicon Valley, I didn&#8217;t feel like I was succeeding at anything. I just didn&#8217;t have the words for it yet.</span></p><p><em><span>To be continued&#8230;</span></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/how-my-first-three-jobs-wore-on-me/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/how-my-first-three-jobs-wore-on-me/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[Remembering to Say “We”]]></title><description><![CDATA[How Marsha finally got me into marriage counseling in Seattle, and why the best tools got us only part way there]]></description><link>https://www.retiredpdx.com/p/remembering-to-say-we</link><guid isPermaLink="false">https://www.retiredpdx.com/p/remembering-to-say-we</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 02 Aug 2026 13:01:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b85b8bd7-13bb-46c8-8d1d-7fa13227b286_2436x1740.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_!UjMz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UjMz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UjMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg" width="3488" height="1729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1729,&quot;width&quot;:3488,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:746622,&quot;alt&quot;:&quot;Marsha and Stephen Pao family in 2001 Season's Greeting Card&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/209411595?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0653bd8d-5b0f-4e74-8009-b71ec266effa_3500x1752.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Marsha and Stephen Pao family in 2001 Season's Greeting Card" title="Marsha and Stephen Pao family in 2001 Season's Greeting Card" srcset="https://substackcdn.com/image/fetch/$s_!UjMz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 424w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 848w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!UjMz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16fa0bc7-f41f-4e94-bc62-f6cc0371db1d_3488x1729.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 first holiday card after moving back to Washington state in 2001</em></figcaption></figure></div><h1><span>A rough start</span></h1><p><span>Even though Marsha and I had been friends since we were twelve, our marriage had a bit of a rough start. Marsha&#8217;s dad was not supportive of us getting married and made declarative statements to that effect. Ultimately, we had a small wedding with only my parents and sister attending, and we didn&#8217;t communicate with Marsha&#8217;s parents for about two years. This situation took a toll on both of us, and it led to Marsha&#8217;s first experience with individual therapy. She had to come to terms with the concept and the reality that she was without a family of origin. We did our best to just move on with our lives, and, in some ways, life became easier to navigate.</span></p><p><span>Once Marsha was pregnant with our older daughter, some repair came about. The coming of a grandchild prompted Marsha&#8217;s cousin&#8217;s wife to confront Marsha&#8217;s dad. She laid out very clearly that on the current course, Marsha and Stephen would just live happily without them forever, and he would never be part of knowing his grandchild. Given that Marsha&#8217;s dad was the eldest son in a Japanese family, no one else in the family with the same cultural baggage would have taken this on. Marsha&#8217;s cousin&#8217;s wife, on the other hand, married into the family and watched Marsha grow up. The process of reconciliation began at that point, and I remain grateful to this day for that interaction.</span></p><p><span>Rebuilding the relationship with Marsha&#8217;s parents played a large role in our decision to move back to the Seattle area back in 2001, shortly after our younger daughter was born. I was working through a genuinely stressful stretch at Latitude Communications, which is its own story, and I wasn&#8217;t spending the quantity time with our family that either of us wanted. Underneath all of that, we both had grown up with a different set of family rhythms and habits, and there were just some underlying issues we couldn&#8217;t fully describe at the time.</span></p><p><span>Still, Marsha and I both knew we needed a change. Moving to Seattle seemed like a good next step to get support from grandparents. So, we drove to Washington with our kids and our cat (Hank) in our minivan in March, 2001. Marsha&#8217;s dad ended up dying two weeks after we arrived. Our best laid plans to get support from grandparents turned into a period of family grieving.</span></p><p><span>Of course, the backstory here is that unbeknownst to Marsha (and her brother), Marsha&#8217;s dad had been fighting liver cancer and was refusing treatment. With the prospect of the family reuniting, he underwent his first chemotherapy treatment which his body was too weak at that point to tolerate.</span></p><p><span>The death of Marsha&#8217;s dad didn&#8217;t create the friction in our marriage but rather helped bring forward our different rhythms to the surface.</span></p><h1><span>Marriage counseling begins</span></h1><p><span>As we were starting to confront our own issues, Marsha wanted us to go into marriage counseling. She asked me to find a counselor, and I didn&#8217;t. Both frustrated and determined, Marsha went and started seeing one on her own. The counselor let her know that they could no longer move forward in the process without me, and that I had to join her. This wasn&#8217;t a proud moment in my life.</span></p><p><span>Still, I must admit that even though Marsha was frustrated enough to force the issue, she kept sending a consistent message at every step. She told me, in different ways many times over, that she loved me and that we were going to get through this together. At the same time, she made it clear she wasn&#8217;t afraid to make a change if I wasn&#8217;t willing to do my part. It wasn&#8217;t a threat as much as it was a clear intention on her part to do everything she could to make the marriage work, and she was asking me to do the same.</span></p><p><span>Marsha picked a really good counselor. She found someone that had experience working with men, including professional athletes from the Seattle Mariners and Seattle Seahawks. I&#8217;m not an athlete, so the sports connection itself wasn&#8217;t the point. To me, it demonstrated that Marsha was willing to look outside of herself to find someone that would work for me, too. That said, she still tried unsuccessfully to start marriage counseling alone.</span></p><p><span>This process started a few months after her dad&#8217;s death, once the most immediate grief of his passing had settled a bit. Still, I felt we were living in its wake. We probably went for a couple of months in total. Marsha&#8217;s mom watched our kids for us every time we went, which was just one of many small gestures from her side of the family. I must admit that I feel like Marsha&#8217;s mom (now deceased, too) and her brother (very much alive and kicking!) have gone out of their way to be good to me since the time that Marsha&#8217;s dad passed.</span></p><h1><span>What we learned</span></h1><p><span>Even though Marsha and I had very different rhythms, we always talked about everything. The therapist very fairly noticed that Marsha and I generally agreed on the facts and circumstances for any incident that we described. Where he helped was explaining why we came away feeling very differently about these incidents.</span></p><p><span>Marsha had more than 25 years of relationship and experiences with her own family before we ever got together, and I had that same span of years with mine. Neither of us could set that history and background aside just because we&#8217;d become a couple. The therapist told us that the two top issues he saw for couples at our stage were money and in-laws. We didn&#8217;t have money issues, so our conversations really focused on families of origin.</span></p><p><span>A key takeaway for me was the need not only to prioritize my own family (Marsha and our kids) over my family of origin, but also to do my best to help Marsha to feel that way. When I expressed the need to prioritize my own family with my parents, they largely agreed in principle. Still, even with this understanding, they didn&#8217;t always demonstrate that understanding in how they acted afterward. Even with the best intentions, old habits can die hard.</span></p><h1><span>The tools that stuck with me</span></h1><p><span>Given that Marsha and I were largely aligned in our objectives, the therapist was able to offer several tools, which I remember today.</span></p><p><span>A really useful one was rephrasing from &#8220;if&#8221; to &#8220;when.&#8221; Instead of spending our energy worrying about hypotheticals, we should work together on our responses. For example, instead of worrying what will happen IF a bear attacks us in the woods, we should collaborate on how we will respond together WHEN the bear attacks. Of course, the bear attacks were an analogy for unexpected situations with our families of origin. Shifting our focus to working together on a response over one-sided and endless worrying was a positive step!</span></p><p><span>Another useful tip was about our use of pronouns. Whenever possible, we should prefer the first person inclusive over the second person. For example, when a situation arises, instead of asking &#8220;what are YOU going to do about it?&#8221;, ask &#8220;how can WE solve this together?&#8221;  There&#8217;s a lot of wisdom in this, particularly because each of us had established our own patterns in handling situations that could use some collaboration and refinement. Again, working together was a positive motion.</span></p><p><span>The last one was about bringing up past issues. The analogy here was a coffee table book. It was OK to take a book off the shelf to the coffee table, open it, look at it, discuss it, and eventually put it away. It was even OK to take it down again from time to time. What we didn&#8217;t want to do is leave the same book open on the coffee table indefinitely.</span></p><h1><span>What lasted, and what didn&#8217;t</span></h1><p><span>The shift from worrying about the potential of a situation to working together on a response was effective and got us through short-term situations in those early years. The tool became less relevant over time.</span></p><p><span>Probably the most lasting tool was the pronoun switch, or remembering to say &#8220;we.&#8221; We still remind ourselves of this today, and it really stuck with us. It&#8217;s why I used this tip as the title of this post.</span></p><p><span>What those initial tools couldn&#8217;t do for us was resolve feelings that had been sitting unprocessed for decades. Marsha can recall things that happened 30 years ago as clearly as if they happened yesterday. The situations themselves moved forward and got resolved logically at the time. The feelings underneath them didn&#8217;t. So, while she dutifully put the coffee table books back on the shelf, there was a backlog of books that she wanted to reopen.</span></p><p><span>That gap is what sent us back into counseling decades later, in our fifties. That round was less about pronouns and more about learning to ATTUNE to each other, the Gottman method I wrote about in a prior post (&#8220;</span><a href="https://www.retiredpdx.com/p/disrupting-patterns-of-disappointment"><span>Disrupting Patterns of Disappointment</span></a><span>&#8221;), and about refining how we communicate with each other. (For more context, see my post about </span><a href="https://www.retiredpdx.com/p/todays-vocabulary-word-alexithymia"><span>alexithymia</span></a><span>.)</span></p><p><span>The first round of counseling was exactly right for the stage of marriage we were in, as it was very solution focused. The next round really had to explore more of the &#8220;why.&#8221;</span></p><h1><span>Passing it forward</span></h1><p><span>I&#8217;ve told part of this story before. In an earlier post (&#8220;</span><a href="https://www.retiredpdx.com/p/why-am-i-willing-to-be-so-open"><span>Why am I willing to be so open?</span></a><span>&#8221;), I mentioned a friend whose pastor told him that God makes people attracted to partners that &#8220;rub each other the wrong way&#8221; so the two of them can polish each other into two smoother stones. I said then that the story helped me put our own marriage counseling in context, and that there was more to tell later. (That later time is now!) We tell our girls that friction is not a bad thing in relationships because it helps people navigate to the other side.</span></p><p><span>Being open about our experiences with marriage counseling, and about my own reluctance to do it, has mattered to me well beyond our own marriage. During retirement, one person took me out to lunch specifically to thank me. Years earlier, on a business trip, I&#8217;d shared my own experience with marriage counseling with him, and it helped destigmatize the idea for him. Since retiring, nobody has ever taken me to lunch to thank me for the great products or business plans we made together while working years ago. I&#8217;ve just found that sharing life challenges with each other has a more lasting impact than past business accomplishments!</span></p><p><span>I later watched a video of Alain de Botton (&#8220;</span><a href="https://youtu.be/DCS6t6NUAGQ?si=usI5XSbD1jx18Tgz"><span>Why you will marry the wrong person - Google Zeitgeist</span></a><span>&#8221;) making a related point that a successful marriage isn&#8217;t about finding someone without flaws. It&#8217;s about learning to negotiate the flaws each partner brings. Basically, de Botton was saying the same thing that my friend&#8217;s pastor told him. I mention that because I feel we&#8217;re all sort of living the same experience in private.</span></p><h1><span>An ongoing journey</span></h1><p><span>What we learned in our thirties got us through raising our families. As we became empty nesters, we realized that what we started wasn&#8217;t completely resolved by our fifties. Those of you following my health journey know that I&#8217;m about to undergo a set of procedures that will put me in recovery for a year to hopefully gain another twenty. What new learnings are ahead of us as we approach our seventies?</span></p><p><span>That question feels more real to me now than it used to. If this next round of treatment goes the way we hope, Marsha and I could have another twenty years together that might not have otherwise been available to us. Most couples historically didn&#8217;t get that many healthy decades together or the intention to keep growing their relationship. We are a bit like a mouse in a maze with few examples in our lives to follow, but we&#8217;re learning.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/remembering-to-say-we/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/remembering-to-say-we/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[(Human Version) The Point of a Playbook]]></title><description><![CDATA[Why I think AI should strengthen organizational learning instead of bypassing it]]></description><link>https://www.retiredpdx.com/p/human-version-the-point-of-a-playbook</link><guid isPermaLink="false">https://www.retiredpdx.com/p/human-version-the-point-of-a-playbook</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 27 Jul 2026 18:43:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wdIQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong><span>Editor&#8217;s note</span></strong><span>: Before Substack started using Pangram, I used AI to help me write </span><a href="https://www.retiredpdx.com/p/the-point-of-a-playbook"><span>a piece about AI</span></a><span>. Despite that the ideas were mine, a subsequent check on Pangram appropriately assessed that 100% of the text was generated by AI. (True story). I wasn&#8217;t that alarmed, as I disclose openly that I use AI. However, as an experiment, I went back to my original outline and wrote the piece by hand to see how vulnerable the content itself was to being detected as AI-generated, looking for a false positive.  It didn&#8217;t happen.  This time, the content was correctly assessed as 100% human written. The text follows below.</span></em></p><div><hr></div><h1><span>A drawing that resonated with me</span></h1><p><span>A few weeks ago while browsing Reddit, I came across a drawing that depicted a phenomenon I&#8217;d been observing with my consulting clients that I hadn&#8217;t described so succinctly. After a bunch of reverse image searches on Google, I couldn&#8217;t track down the original creator, but I copied it here.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OyaW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OyaW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OyaW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg" width="1067" height="882" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:1067,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201025,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OyaW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OyaW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83f0dfa4-2321-43d0-9b8b-0cd32dc92e9a_1067x882.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Image source unknown. I found it via a Reddit post titled &#8220;Anyone experience this&#8221; in r/AgentsOfAI, but I have not been able to identify the original creator.</figcaption></figure></div><p><span>The diagram shows three columns for ideas, execution, and usage for both the &#8220;before AI&#8221; and &#8220;after AI&#8221; eras. In the &#8220;before AI&#8221; era, it depicts a small group of people generating ideas, a slightly larger group focused on execution and scaling of those ideas, with a large swath of downstream users. In the &#8220;after AI&#8221; era, it depicts a very large group of people generating ideas, a relatively fixed number focused on execution, but very few successful downstream users.</span></p><p><span>Of course, one interpretation is that the &#8220;after AI&#8221; version is better because there are more people empowered to generate ideas and bring them forward. However, I think the real story is in the shrinking downstream usage column.</span></p><h1><span>What I&#8217;m seeing in consulting work</span></h1><p><span>I&#8217;ve personally observed a version of this phenomenon in my consulting work. AI adoption is certainly growing across functions, and the apparent productivity gains appear impressive at first. Sales people who used to spend an entire day putting together a proposal can now do it in minutes. Support engineers who used to have to escalate issues to more experienced colleagues now get immediate suggestions on potential next steps. I&#8217;ve seen similar results across many functions where the next steps almost always involve consulting with AI. And, in many cases, I think the productivity benefits are real.</span></p><p><span>Where I&#8217;ve been seeing potential breakdowns are that the work products don&#8217;t end up effecting the desired results downstream. I have always believed that it&#8217;s easier to replicate success than diagnose failure. Repeating successes is just key to scaling, and the ability to repeat success depends on consistently applying lessons learned.</span></p><p><span>The problem is that the AI often doesn&#8217;t really draw on the true organizational learning when it generates proposals, recommendations, analyses, and plans. General purpose AI tools, such as ChatGPT or Claude, are trained on publicly available data, and even when augmented with corporate data, that internal data often entails a mixture of outdated presentations, unresolved email threads, and backward looking data not representative of the current business situations. As such, the output generated by AI tools in use often sounds credible and well-reasoned but fails to incorporate the key insights known by the broader organization to produce results.</span></p><p><span>More concretely, by not rigidly applying lessons learned, there can be sales presentations that don&#8217;t result in closed deals, customer support solutions that don&#8217;t result in more long-term success in the accounts, or product features that simply don&#8217;t get used.</span></p><p><span>To me, the big part missing in discussions with my clients about AI strategy is how to utilize AI to build on and enhance organizational learning. So much of the focus has been on making individuals more capable, and how to develop the individual&#8217;s AI skills on the journey from AI-assisted to AI-augmented, to AI-native. Still, the employee&#8217;s ability to utilize AI agents in their work doesn&#8217;t automatically translate into stronger organizational learning.</span></p><h1><span>What changed my thinking</span></h1><p><span>Instead, what is changing my thinking about AI is how individuals often use AI to develop their own individual ideas. Some of this is good, for sure. Still, every company I have worked with already has more ideas than it knows what to do with. Sales teams have ideas. Product teams have ideas. Customers have ideas. Executives have ideas. The bottleneck was almost never generating possibilities. The bottleneck was almost always prioritizing which possibilities deserved attention and then learning from the results.</span></p><p><span>That realization caused me to think about playbooks differently. I used to view a playbook primarily as a set of instructions. A sales playbook was something that told salespeople how to run a deal. A support playbook told teams how to generate customer successes. Today, I think a better description is that a playbook is a common learning surface.</span></p><p><span>For example, scaling in sales can happen when 100 salespeople all engage with a common customer profile, messaging, and sales process. This allows the group to refine its customer objection handling and understand which value propositions resonate. They can learn together to discover which customer segments perform better. While variances with some individual sales people happen and are interesting, they become even more valuable when they occur within the same basic framework, so lessons can be applied by others, too.</span></p><p><span>When people are operating against a shared playbook, the rest of the organization can also  learn from their experiences. Sales Operations can identify patterns. Product marketing can adjust positioning. Leadership can rethink priorities. The important thing is not that everyone follows the playbook perfectly. The important thing is that everyone is contributing information back into a common system of learning.</span></p><p><span>The virtuous cycle comes from the organization&#8217;s ability not only to adhere to the playbook but to keep improving it. This is where I believe AI systems should play a critical role.</span></p><h1><span>The part that worries me</span></h1><p><span>I&#8217;m not worried about AI helping individuals in lowering the bar to create new ideas. A salesperson can generate a custom pitch. A marketer can create a new positioning approach. A support engineer can design a brand-new workflow. Much of this output is surprisingly good. In some cases it may even be better than what exists in the official playbook.</span></p><p><span>The issue is that every individualized version creates its own learning loop. There is a big difference between a hundred people improving one playbook and a hundred people improving a hundred different playbooks. In both situations people are learning, but only one of them creates organizational leverage. Utilizing the same, shared framework makes it easier to compare results, identify patterns, and refine the system. When everyone is working from their own AI-generated approach, the individual learnings become harder to aggregate and harder to interpret.</span></p><p><span>Individual ideas and deviations from the playbook have always existed. Great salespeople have always improvised and good managers have always tolerated a certain amount of drift from the script. What made that manageable was that deviation happened slowly enough and visibly enough for organizations to observe it and decide whether the change should become part of the playbook. AI changes that equation.</span></p><p><span>The problem is that widespread AI usage makes deviation fast, inexpensive, and often invisible. The deviation on its own is fine. The problems arise when organizations are unable to see the deviations clearly and learn from the outcomes. Without that feedback loop, everyone ends up choosing their own adventure. That may be empowering for individuals, but it does not necessarily help the organization learn.</span></p><h1><span>The proposal that should never have existed</span></h1><p><span>I observed this in my own consulting work. In that organization, the sales playbook called for the salespeople to identify the members of the actual buying committee before qualifying an opportunity. Numerous past deals demonstrated that involving the right stakeholders upfront made the deal more likely to renew, expand, and produce long-term customer value.</span></p><p><span>However, applying that lesson learned always involves more work for the salespeople, particularly when there are quarterly sales targets. In more than one example, AI was used to create highly customized, thoughtful, and persuasive proposals aimed at specific individuals in the account most likely to sign on their own, without the rest of the buying committee. The deals closed in the short term. The problem is that the organization had already learned that this kind of deal often performs poorly over time, and, consistent with those learnings, those deals resulted in customer churn.</span></p><p><span>In these cases, the proposals weren&#8217;t bad. AI didn&#8217;t create any mistakes. It simply made it easier to route around the institutional learning embedded in the playbook.</span></p><h1><span>Why this reminds me of product marketing</span></h1><p><span>This lesson in sales is consistent with one of my earlier writings about product marketing, where I focused on separating meaning from voice for AI content systems. In that piece, I argued that product marketing should own meaning, brand should own voice, and segment marketing should own a personalization layer for the type of customer targeted. The concept is that the AI tooling should be wired to render those shared assets into the form needed (e.g., sales email, web copy, blog post, etc.). This framework allows insights to be captured once, improved collectively, and adapted as appropriate.</span></p><p><span>Getting back to the diagram above, I believe the highest leverage use of AI isn&#8217;t helping every employee generate their own ideas, but rather helping the people responsible for the strategies and idea curation learn faster from the people executing it. When used this way, AI then becomes the enabler for accelerating organizational learning rather than fragmenting it.</span></p><h1><span>The question I keep coming back to</span></h1><p><span>While many are touting AI as a way to improve individual productivity because those gains are easier to observe, I want to focus on how AI can make organizations learn faster.</span></p><p><span>This shift toward using AI to strengthen organizational learning will involve a lot of instrumentation. How does feedback from the field actually reach the people responsible for improving the system? How does the next version of the playbook incorporate the learnings? How do we use AI to strengthen the connection between execution and learning?</span></p><p><span>To me, the Usage column is the most important in the drawing. While everyone notices the explosion in ideas, I don&#8217;t believe that more ideas necessarily lead to scale. I believe organizations scale when large numbers of people contribute to the same playbook to generate results. More ideas without more usage isn&#8217;t progress. It&#8217;s just more ideas.</span></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_!wdIQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wdIQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 424w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 848w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 1272w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wdIQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png" width="452" height="401" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:401,&quot;width&quot;:452,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45374,&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/208725723?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.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_!wdIQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 424w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 848w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.png 1272w, https://substackcdn.com/image/fetch/$s_!wdIQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafeb4e61-d1f8-47d5-a112-cd867526a96a_452x401.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="poll-embed" data-attrs="{&quot;id&quot;:870842}" data-component-name="PollToDOM"></div><p></p>]]></content:encoded></item><item><title><![CDATA[(AI version) Retiring to Roche Harbor?]]></title><description><![CDATA[A first trip to San Juan Island for a 70th birthday, the seafood that sold us, and the reasons we probably won&#8217;t move there]]></description><link>https://www.retiredpdx.com/p/ai-version-retiring-to-roche-harbor</link><guid isPermaLink="false">https://www.retiredpdx.com/p/ai-version-retiring-to-roche-harbor</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 27 Jul 2026 04:01:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!G84i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Editor&#8217;s Note</strong></em>: <em>My last post on Roche Harbor was fully human, no AI, specifically to see if Pangram could tell the difference. For this post, I ran the opposite test. I gave Claude the same outline of facts I wrote that post from, along with the style rules I&#8217;ve built up for it over several posts, and asked it to write a full draft on its own. What follows is Claude&#8217;s draft, unedited by me, and Pangram&#8217;s read on it.</em></p><div><hr></div><blockquote><p>&#8220;On Roche Harbor, everything comes with an island tax, including the view.&#8221;</p></blockquote><p>We spent July 15 through July 18 on San Juan Island, our first visit to Roche Harbor, staying in a home managed by the resort. The occasion was Marsha&#8217;s cousin&#8217;s 70th birthday, timed close enough to my own that we celebrated both together.</p><p>Roche Harbor is his favorite place in the world. He is an avid boater and fisherman, and he spends as much of every summer there as his construction company allows. Summer is also that business&#8217;s busiest season, so full time retirement there is still a few years off for him even though he would love it now.</p><p>Getting the four of us there took real coordination. Our older daughter flew in from Columbia, South Carolina, and our younger daughter flew in from Chicago. Both landed at SeaTac and stayed with Marsha&#8217;s brother, and we picked them up on our way north from Portland. From there, all four of us flew from Kenmore to Roche Harbor on a Kenmore Air seaplane. Marsha&#8217;s cousin and his wife stayed on their own boat in the harbor, and his two daughters stayed at the Quarryman, while we stayed in our rental.</p><h2>Some things we enjoyed</h2><p>The weather cooperated the whole trip, sunny and cool, with the kind of clean ocean air that made just standing outside feel good.</p><p>The seafood was the real story of the visit. Dinner at McMillin&#8217;s started with prawns and calamari, and I followed that with crab bisque, bread, and petrale sole, plus a sundae to finish. The Westcott Bay oysters we had were the best I have ever eaten. A stand right on the dock sold us spot prawns straight off the boat, Marsha&#8217;s cousin brought in fresh crab from his own crab pot, and his boat neighbor shared salmon he had just caught that day. One night we had San Juan paella catered at the rental for the family celebration, so nobody had to cook. The salad and the tapas were excellent. The paella itself was not really to my taste, but everything around it was.</p><p>Saturday brought a small dockside event, a live jazz band and beer from San Juan Brewing. Every night around 8pm, the resort runs what I learned is called its Colors Ceremony, a tradition going back to 1957. Music plays, the flags come down, a trumpet sounds, and a cannon fires. It is a genuinely nice way to end the day.</p><p>The people running the harbor were friendly across the board, right down to donuts appearing most mornings.</p><h2>Some surprises</h2><p>The island tax was real. Food, lodging, and getting there all cost more once a place is only reachable by boat or plane. Marsha&#8217;s cousin&#8217;s own numbers were on a different scale entirely, between his mooring fees and the general cost of keeping a boat.</p><p>There is no medical care on site. Everything is a boat or plane ride away, and that alone is a personal dealbreaker for me.</p><p>We lost a full day to a hard rain on Thursday and stayed in with takeout pizza.</p><p>Roche Harbor is more exclusive than it looks. The waitlist to moor a boat there runs close to 40 years. Most of the homes seem to be summer places, managed as rentals when their owners are away, and waterfront land is limited enough that owning one is probably a strong investment even though almost nobody treats one as a full time retirement home.</p><p>Days after we got home, a Kenmore Air seaplane went down near Sucia Island on the same Lake Union to Roche Harbor route we had just flown. All 11 people aboard survived, four were hospitalized, and one was listed in critical condition. We had taken that route specifically to avoid the ferry line, so the news landed differently once we knew.</p><h2>Where this leaves us</h2><p>I am not eager to go back. Motion sickness rules out ferries, seaplanes, boats, and even a floating dock, which does not leave much of Roche Harbor open to me.</p><p>Our older daughter had the opposite reaction. She never grew up boating because of my motion sickness, and this was her first time out on the water, with Marsha&#8217;s cousin driving. She saw orcas, went fishing, and had a great time. I think our younger daughter would want to go back too.</p><p>If this is really about time with that side of the family, a summer in Roche Harbor still beats what we currently do, which is fly back to Bellevue every New Year into bad weather and a worse drive.</p><p>Has anyone else found a place that works better for the family than it does for you personally?</p><div><hr></div><p>Note that Pangram believes this version was also fully human written!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!G84i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!G84i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 424w, https://substackcdn.com/image/fetch/$s_!G84i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 848w, https://substackcdn.com/image/fetch/$s_!G84i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 1272w, https://substackcdn.com/image/fetch/$s_!G84i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!G84i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png" width="902" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114194,&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/208635095?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.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_!G84i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 424w, https://substackcdn.com/image/fetch/$s_!G84i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 848w, https://substackcdn.com/image/fetch/$s_!G84i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.png 1272w, https://substackcdn.com/image/fetch/$s_!G84i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a432e41-04c8-48eb-989b-5a7b6398664d_902x806.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="poll-embed" data-attrs="{&quot;id&quot;:866800}" data-component-name="PollToDOM"></div><p></p>]]></content:encoded></item><item><title><![CDATA[Retiring to Roche Harbor?]]></title><description><![CDATA[A great visiting spot but perhaps not a home]]></description><link>https://www.retiredpdx.com/p/retiring-to-roche-harbor</link><guid isPermaLink="false">https://www.retiredpdx.com/p/retiring-to-roche-harbor</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Mon, 27 Jul 2026 02:55:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!k7LV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><span>&#8220;Island pricing is simple. First you pay for the item. Then you pay for its entire journey.&#8221;<br>&#8212; Anonymous</span></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k7LV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k7LV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k7LV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.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;:null,&quot;alt&quot;:&quot;Stephen Pao and Marsha Pao with Marsha's cousin, celebrating his 70th birthday, in front of the Kenmore Air seaplane to Roche Harbor&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stephen Pao and Marsha Pao with Marsha's cousin, celebrating his 70th birthday, in front of the Kenmore Air seaplane to Roche Harbor" title="Stephen Pao and Marsha Pao with Marsha's cousin, celebrating his 70th birthday, in front of the Kenmore Air seaplane to Roche Harbor" srcset="https://substackcdn.com/image/fetch/$s_!k7LV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 424w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 848w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!k7LV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa408d663-9482-42e4-83d9-75d5ce6f672d_1536x1097.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Marsha and I with her cousin leaving for Roche Harbor via Seaplane</em></figcaption></figure></div><p><span>Two weeks ago, I mentioned we went on vacation to celebrate the 70th birthday of Marsha&#8217;s cousin. He is an active boater and fisherman, and </span><a href="https://www.rocheharbor.com/"><span>Roche Harbor</span></a><span> on San Juan island is his favorite place in the world. Even though summer is the busiest time of year for his construction company, he tries to spend as much free time up there as he can. We&#8217;d never been there before, and his wife appropriately made the call that it was about time that the Pao family made the pilgrimage.</span></p><p><span>Given that I always now look at places like this with the eyes of a &#8220;retirement blogger,&#8221; I felt compelled to write about our experience here, as well as to share my own thoughts about the place as a potential place to retire. The net here is that I feel Roche Harbor is a great place to visit and perhaps less of a place to call &#8220;home.&#8221;</span></p><h1><span>Getting there</span></h1><p><span>Roche Harbor is busy in the summer, and reservations for accommodations for larger parties require planning because there are so many weddings held there. Still, we were able to find available accommodations at a time when both our daughters were able to fly out and Marsha&#8217;s cousin&#8217;s daughters could also come. The Pao family stayed at a </span><a href="https://www.rocheharbor.com/accommodations/rental/3b32/"><span>rental home managed by the resort,</span></a><span> Marsha&#8217;s cousin&#8217;s daughters stayed at </span><a href="https://www.rocheharbor.com/lodging/quarryman-hall/"><span>Quarryman Hall</span></a><span>. Marsha&#8217;s cousin and his wife stayed on their boat in the harbor.</span></p><p><span>Getting to Roche Harbor isn&#8217;t easy either. Taking the </span><a href="https://wsdot.com/ferries/schedule/scheduledetailbyroute.aspx?route=ana-sj-sid"><span>ferry from Anacortes</span></a><span> makes for a long, 3 hour journey from Seattle, so we all took a </span><a href="https://kenmoreair.com/roche-harbor/"><span>Kenmore Air seaplane</span></a><span>, which is just a 45 minute flight. It&#8217;s not cheap, but for a one-time visit, it was worth it! We took over all but one seat on the plane.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ttjs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ttjs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ttjs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.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;:null,&quot;alt&quot;:&quot;Stephen Pao, Marsha Pao, Christina Pao, and Annalisa Pao with the family of Marsha's cousin inside the cabin of a Kenmore Air seaplane&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Stephen Pao, Marsha Pao, Christina Pao, and Annalisa Pao with the family of Marsha's cousin inside the cabin of a Kenmore Air seaplane" title="Stephen Pao, Marsha Pao, Christina Pao, and Annalisa Pao with the family of Marsha's cousin inside the cabin of a Kenmore Air seaplane" srcset="https://substackcdn.com/image/fetch/$s_!Ttjs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ttjs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F959eb74a-6284-4883-892f-bfea95208ca1_1536x1097.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Taking over the Kenmore Air seaplane</em></figcaption></figure></div><h1><span>Some things we enjoyed</span></h1><p><strong><span>Summer temperatures</span></strong><span>. The combination of the mild Pacific Northwest summer temperatures and the crisp ocean air make for just a very pleasant outdoor experience. The little resort town is just so charming with artist stands, little shops, and eateries.</span></p><p><strong><span>Fine dining</span></strong><span>. We did our first night dinner at </span><a href="https://resy.com/cities/san-juan-county-wa/venues/mcmillins-dining-room"><span>McMillin&#8217;s</span></a><span>, which was outstanding. We were all impressed with the prawns and calamari as appetizers. I really enjoyed my crab bisque and petrale sole. I tasted my older daughter&#8217;s salmon and my younger daughter&#8217;s sable fish, and I thought those dishes, too, were excellent. I eagerly ate the rest of Marsha&#8217;s flame-grilled prime rib as leftovers a couple days later, and it was very good (although not among the best steaks I&#8217;ve had in life).</span></p><p><strong><span>Casual dining. </span></strong><span>The next day, we had lunch at </span><a href="https://www.westcottbayshellfish.com/lunch"><span>Westcott Bay</span></a><span>, and the &#8220;Little Olys&#8221; are probably the best oysters I&#8217;ve had in my life. Even though I get really seasick, I felt it was definitely worth the boat ride out just to eat there. The clam bowl was also excellent. We should have skipped the mezze platter and just eaten more seafood!</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ur5Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.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;:null,&quot;alt&quot;:&quot;A dozen Little Olys oysters on ice served at the Tide Tables at Westcott Bay&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A dozen Little Olys oysters on ice served at the Tide Tables at Westcott Bay" title="A dozen Little Olys oysters on ice served at the Tide Tables at Westcott Bay" srcset="https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ur5Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F76a29d18-30e9-4ef2-a04b-906876eb3e5c_1467x1048.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 favorite &#8220;Little Olys&#8221; oysters at Westcott Bay</em></figcaption></figure></div><p><span>The seafood there in that part of the Northwest seems to be just so uniformly good. Marsha&#8217;s cousin caught fresh crabs in his crab pot, their boat neighbor gave us some fresh caught salmon, and Keith, who has a stand right on the dock, has amazing spot prawns.</span></p><p><strong><span>At-home catering</span></strong><span>. It was also fun to get dinner catered for us one night. </span><a href="https://www.paellassanjuan.com/"><span>Paellas San Juan</span></a><span> came to our rental home and made a feast. Candidly, the seafood paella wasn&#8217;t my thing, as I think I preferred just eating the local seafood on its own. Still, the salad and tapas were excellent, as was the whole experience. It was nice to do an evening at &#8220;home away from home&#8221; for an extended birthday celebration for Marsha&#8217;s cousin, without worrying about restaurants having to turn tables.</span></p><p><strong><span>Events</span></strong><span>. Every night at sunset, there is a cool &#8220;</span><a href="https://www.rocheharbor.com/experiences/colors/"><span>Colors</span></a><span>&#8221; ceremony where they play the national anthems of the US and Canada, and then shoot a cannon! Local boaters also participate in the festivities by honking the horns after the cannon. It is really beautiful to be outside at that time in the evening.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-vwk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-vwk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-vwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_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;:&quot;Photo of Roche Harbor at sunset during the Colors Ceremony in July 2026&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Photo of Roche Harbor at sunset during the Colors Ceremony in July 2026" title="Photo of Roche Harbor at sunset during the Colors Ceremony in July 2026" srcset="https://substackcdn.com/image/fetch/$s_!-vwk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_2048x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-vwk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2877aa3e-04e1-47f0-bdaa-a46b65f9ad98_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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Roche Harbor at sunset</em></figcaption></figure></div><p><span>We also attended a very daytime fun event serving San Juan Brewer beers, hosted right off the dock where there was a live jazz band.</span></p><p><strong><span>Boating</span></strong><span>. Our kids really enjoyed the boating part of the trip. Given that I get really seasick, we were never a boating or fishing family. That said, Marsha&#8217;s cousin took the kids out on his boat, and they all had a great time, even spotting some Orca whales!  Marsha graciously hung back with me on shore to keep me company. I know that day our older daughter got the boating bug, and she intends to return with her husband at some point. He had to miss this trip to attend a bachelor party in Krak&#243;w, Poland for a long time friend.</span></p><p><span>Overall, we had a really special time there with family, and this trip, while short, was full of wonderful memories. I can definitely see why retired people enjoy spending time in Roche Harbor.</span></p><h1><span>Some surprises</span></h1><p><strong><span>Costs</span></strong><span>. Probably the biggest surprise to me was how expensive everything was there. It&#8217;s expensive to get there (over $400 roundtrip per person on the seaplane) and expensive to stay there (over $3,000 for a 3-night minimum stay). Moreover, anything purchased there is more expensive. Conservatively, it seemed like a bottle of nice alcohol (e.g., Veuve or Grey Goose) cost at least $20 more on the island than on the mainland!</span></p><p><span>Of course, when Marsha&#8217;s cousin also shared the cost of mooring, fueling, and maintaining his boat there, we were talking about a totally different type of expense. I won&#8217;t share his actual numbers, but a quick Google search estimated that for a typical 35 to 55-foot power boat kept in Roche Harbor all year round, owners should expect to spend between $23,000 and $46,000+ per year in total cash outlays. Still, there is no lack of demand, and he told us that the wait list is now over 40 years long to get a spot there.</span></p><p><strong><span>Rain</span></strong><span>. We lost a day of our vacation to a pretty severe rain storm. We got drenched that day. Fortunately, our rental home had an in-unit washer/dryer. Still, there were no outdoor activities the rest of that day, and Marsha was a hero picking up takeout pizza and salad from </span><a href="https://www.rocheharbor.com/dining/lime-kiln-cafe-menu/"><span>Lime Kiln Cafe</span></a><span> at the bottom of our hill, using an extra jacket borrowed from her cousin&#8217;s wife. While the region&#8217;s weather is known for a broader summer stability, there are localized &#8220;microclimate anomalies&#8221; which cause &#8220;unseasonal maritime disruptions.&#8221; Another downside of island living.</span></p><p><strong><span>Dangers of seaplanes</span></strong><span>. For a more serious risk associated with island living, we were surprised to learn that just a few days after we returned from Roche Harbor, </span><a href="https://www.seattletimes.com/seattle-news/kenmore-air-crash-updates-latest-on-investigation-injuries/"><span>Kenmore Air experienced a seaplane crash</span></a><span> from Seattle to Roche Harbor. The pilot and 10 passengers survived, but three remain hospitalized longer-term. This incident highlighted how seaplanes </span><a href="https://aopa.org/training-and-safety/air-safety-institute/accident-analysis/seaplane-accident-report"><span>introduce some added risk</span></a><span> because operating on water removes almost all the safety infrastructure standard land aviation relies on. It also highlighted the problem with access to medical care on the island.</span></p><p><strong><span>Distance from emergency medical care</span></strong><span>. Hospitalizations after the crash required that patients be flown via helicopter to Bellingham and Seattle for ongoing care. Typically, medical emergencies on the San Juan islands require air transport to a hospital on the mainland. While plane crashes are unique occurrences, medical emergencies get more common as we all age. This is a big difference to our lives in Portland, where we&#8217;re just 2 miles from OHSU.</span></p><h1><span>Where this leaves us</span></h1><p><span>At a personal level, I myself would never consider Roche Harbor as a permanent retirement destination. I know I have a pretty unique medical situation, and living too far from a leading hospital pretty much disqualifies it. In addition, my own motion sickness makes ferries, seaplanes, boats, and even floating docks pretty unpleasant, so it&#8217;s hard to imagine making a life for myself out there.</span></p><p><span>I believe the numbers reveal that my views are pretty common. The population of Roche Harbor is estimated to be </span><a href="https://www.censusdots.com/race/roche-harbor-wa-demographics"><span>fewer than 800 residents</span></a><span>, whereas the transient overnight guests number about 2,500-3,000 during peak seasons, with another 1,000+ day trippers. In other words, Roche Harbor is largely a place to visit, not live.</span></p><p><span>This makes sense to me. Despite my reservations about any sort of permanent home there, on balance, I think I&#8217;d prefer to reunite with family over summer there in Roche Harbor over Bellevue at New Year&#8217;s like we do right now. Those New Year&#8217;s visits almost always involve a terrible drive from Portland up I-5 in inclement weather, icy and steep streets in South Bellevue, and even less daylight. While the geographic difference is only about 2 degrees of latitude, the perceived gloominess is just a lot higher in South Bellevue when combining the terrain and low cloud cover. Moreover, a significant part of the vacation is always spent stressing about preparing traditional Japanese dishes that aren&#8217;t fully appreciated by the younger generations anyway. As I mentioned earlier, our older daughter would like to return to Roche Harbor, and I think our younger daughter would be game, too. Still, with the costs involved, I think both returning might be dependent on whether others (e.g., Mom and Dad) foot the bill!</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/retiring-to-roche-harbor/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/retiring-to-roche-harbor/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>Author&#8217;s note</strong></em>: I normally use AI to assist with preparing these pieces. However, given that Substack has now started using <a href="https://www.pangram.com/">Pangram</a> to analyze posts, I decided to go &#8220;all human&#8221; this time around to see if Substack can properly profile my own writing in the absence of any AI assistance. (It did!) My own &#8220;How I make this&#8221; section Substack does fully disclose my normal usage of AI.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GLgn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GLgn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 424w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 848w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 1272w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GLgn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png" width="944" height="846" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e44956d1-34c6-4304-a732-92e9c56249a8_944x846.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:846,&quot;width&quot;:944,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127072,&quot;alt&quot;:&quot;Pangram analysis of this post as \&quot;Fully Human Written\&quot;&quot;,&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/208631946?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Pangram analysis of this post as &quot;Fully Human Written&quot;" title="Pangram analysis of this post as &quot;Fully Human Written&quot;" srcset="https://substackcdn.com/image/fetch/$s_!GLgn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 424w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 848w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.png 1272w, https://substackcdn.com/image/fetch/$s_!GLgn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe44956d1-34c6-4304-a732-92e9c56249a8_944x846.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Pangram analyis of this post as &#8220;Fully Human Written&#8221;</figcaption></figure></div><div class="poll-embed" data-attrs="{&quot;id&quot;:866573}" data-component-name="PollToDOM"></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Power Law Comes to Seattle]]></title><description><![CDATA[Why the $9.6 Billion Seahawks Sale Feels Completely Different to an Old Tech Operator and Childhood Fan]]></description><link>https://www.retiredpdx.com/p/the-power-law-comes-to-seattle</link><guid isPermaLink="false">https://www.retiredpdx.com/p/the-power-law-comes-to-seattle</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 12 Jul 2026 22:18:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rn3y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>I need to apologize for hitting your inbox twice in one weekend. The news about the formal agreement to sell the Seahawks just dropped yesterday afternoon, and I had to sit down and process it. Coming off our recent Super Bowl victory under Mike Macdonald, the timing is a lot to take in. The estate of Paul Allen is selling the team to the Khosla family for $9.612 billion.</span></p><p><span>Most people in the tech community see Vinod Khosla as a Silicon Valley legend and the co-founder of Sun Microsystems. Others in the greater community would probably have differing opinions based on the </span><a href="https://en.wikipedia.org/wiki/Martins_Beach"><span>Martins Beach controversy</span></a><span>. To me as a former Silicon Valley operator, he is the reason a boardroom for a company I used to work for ran the way it did.</span></p><p><span>My connection to the Seahawks team goes back to the 1980s. My parents had season tickets on the 2-yard line of the Kingdome when the Nordstroms owned the franchise. The seats were seven dollars each. Back in grade school, my friends and I would play, pretending to be Jim Zorn and Steve Largent. </span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rn3y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rn3y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rn3y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg&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;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Rn3y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rn3y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21180e4d-56a9-4ff2-b33a-edd34446b1d2_1920x1080.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>In high school, we painted our faces green and blue, with homemade signs for Kenny Easley (&#8220;Kenny Does It Easily!&#8221;)</span></p><p><span>Then Ken Behring, a California developer bought the team and threatened to move them. Later on, we watched our professional basketball team, the Seattle Supersonics get packed into moving trucks for Oklahoma City to the hometown of the new owners. Seattle fans know exactly what happens when our hometown treasure becomes the financial asset of a rich man who has no ties to the community.</span></p><p><span>Seeing Vinod Khosla take the microphone yesterday triggers those old alarms inside me. It is a massive shift from the quiet and stable stewardship of Paul and Jody Allen. I used to be a product manager at a company where Vinod&#8217;s fingerprints were on every hard call, and I personally felt how that wildcard energy impacts people downstream.</span></p><h1><span>The Danger of the Interventionist Playbook</span></h1><p><span>In the 1990s, I was the first product manager for a startup called Visioneer. Kleiner Perkins led our Series B, and Jim Lally held the board seat. But it was Vinod&#8217;s name that came up in every conversation the leadership team had with us about strategy. He wasn&#8217;t the one with a vote, but everyone in the building understood whose judgment actually carried the day.</span></p><p><span>Top-tier venture capitalists operate under a concept called the </span><a href="https://www.av.vc/blog/what-the-heck-is-the-power-law"><span>power law</span></a><span>. They know a tiny handful of blockbusters will return the whole fund, and everything else will flatline. This creates an intense impatience. If a company hits a market shift, the investor&#8217;s instinct is to aggressively intervene and force a top-down pivot rather than letting management figure it out.</span></p><p><span>That heavy intervention is exactly what happened in Visioneer&#8217;s boardroom. When those of us on the ground pushed back, the friction resulted in a clean house. Our VP of Marketing was let go and </span><a href="https://www.retiredpdx.com/p/my-own-tech-layoff-story"><span>I was laid off</span></a><span> right along with the bulk of her team.</span></p><p><span>The company eventually found its footing and had a successful long-term future. My point is not about who won the argument. It is about management style. An ultra-interventionist owner can have an outsized impact on the human elements on the ground. There is danger in missing the value of culture, continuity, and a stable environment.</span></p><p><span>This is my main concern as a fan. A sports franchise is not a tech startup. A football team cannot be run through the lens of ruthless corporate optimization without ripping out its soul. If ownership begins second-guessing personnel or demanding sudden structural pivots after a brief losing streak, the fabric of a championship team breaks.</span></p><h1><span>The Myth of the Reformed Investor</span></h1><p><span>Some tech coverage claims Vinod changed his ways because of OpenAI. Pundits point to his hands-off backing of Sam Altman as proof of a new philosophy.</span></p><p><span>I don&#8217;t buy that narrative. The reality of the OpenAI situation was that he had zero legal leverage. OpenAI had a unique non-profit board structure that locked investors out of voting control. He had to stay out of the way because his hands were legally tied from day one. The exact moment that board exercised its power and fired Altman in late 2023, the old Vinod reappeared. He launched a furious public campaign on social media to protect his financial asset. He did not change. He just lacked the leverage to dictate terms.</span></p><h1><span>The Real Guardrails for the Franchise</span></h1><p><span>If he has not changed his DNA, what stops him from treating the front office like a tech startup? The answer lies in the structural cages of the NFL.</span></p><p><span>First, the league rules are very strict. The NFL mandates that a single human being hold a minimum 30 percent equity stake as the controlling owner. According to the league documents, that title belongs to his wife, Neeru Khosla. Their son, Neal Khosla, is also slated for a significant operational leadership role.</span></p><p><span>In Silicon Valley, Neeru and Neal have a completely different reputation than Vinod. Neeru focuses on collaborative philanthropy and open-source education. Neal is an operator focused on scaling healthcare access. If the Seahawks are going to maintain the community stability we had under the Allens, it will be because Neeru and Neal act as the true cultural stewards. They need to keep Vinod&#8217;s trademark impatience away from football operations.</span></p><p><span>Second, the team is legally locked down. Ken Behring could quietly pack trucks for Southern California, and Clay Bennett could exploit a weak lease to steal the Sonics. The Seahawks are bound by an explicit lease at Lumen Field that runs through 2032, and it includes three consecutive 10-year options. The NFL has spent thirty years closing the legal loopholes that allowed those mid-90s relocations. The system now is designed to protect premier markets like Seattle from wildcard owners.</span></p><h1><span>What Money Can&#8217;t Buy</span></h1><p><span>We are firmly in an era where professional sports teams are global financial assets. The days of seven-dollar seats are ancient history. Only mega-wealth can play in this sandbox now.</span></p><p><span>I still hold onto one ultimate comfort. Billionaires can buy the keys to the stadium. They can control the press conference microphone, optimize the balance sheets, and change the executive tiers. They still do not own the culture.</span></p><p><span>Ken Behring could not strip the blue and green makeup off our high-school faces, and he could not erase our memories of the Enforcer patrolling the secondary. Generational fandom is not tied to some balance sheet on Sand Hill Road in Menlo Park. As fans, we loved the deafeningly loud noise of the Kingdome that created the 12</span><sup><span>th</span></sup><span> man legacy. We thrived in the transition to an outdoor stadium (also really loud!) just so they could build indoor luxury boxes for the corporate crowd. (Boo!)</span></p><p><span>Even though the financial landscape of professional sports has taken away its accessibility for many families, to me, the soul of an NFL franchise should still live in the backyards where kids play catch. It should still live in the stands where Seattle fans have cheered together for decades. The Khosla family purchased the business of the Seattle Seahawks, but the team should still belong to us.</span></p><p><strong><span>Go Hawks!</span></strong></p><div><hr></div><p>Again, apologies for crowing your inbox twice in one weekend. I&#8217;ll plan to take next weekend off from writing, as we&#8217;ll be on vacation celebrating the 70th birthday of Marsha&#8217;s cousin. Our kids will be flying in, too!  I&#8217;ll be back again in two weeks!</p><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/the-power-law-comes-to-seattle/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-power-law-comes-to-seattle/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><span>AI disclosure:</span></strong><span> 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.</span></em></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Point of a Playbook]]></title><description><![CDATA[Why I think AI should strengthen organizational learning instead of bypassing it]]></description><link>https://www.retiredpdx.com/p/the-point-of-a-playbook</link><guid isPermaLink="false">https://www.retiredpdx.com/p/the-point-of-a-playbook</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sat, 11 Jul 2026 13:01:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!d4J-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><span>Editor&#8217;s note: Unlike a lot of my journaling which covers the personal tech side of AI, this piece goes into a bit more of the business side of AI because I&#8217;ve recently been in so many conversations about this.</span></em></p><div><hr></div><p><span>Recently, I came across a drawing comparing organizations before and after AI. I don&#8217;t know who made it originally, and I haven&#8217;t been able to track down the source since then.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d4J-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d4J-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d4J-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg" width="1079" height="885" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:885,&quot;width&quot;:1079,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Drawing comparing organizations before and after AI. Source unknown, found via a Reddit post in r/AgentsOfAI, not created by the author.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Drawing comparing organizations before and after AI. Source unknown, found via a Reddit post in r/AgentsOfAI, not created by the author." title="Drawing comparing organizations before and after AI. Source unknown, found via a Reddit post in r/AgentsOfAI, not created by the author." srcset="https://substackcdn.com/image/fetch/$s_!d4J-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 424w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 848w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!d4J-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60425a3d-1b54-47d4-9a2a-85bf9dee0d1b_1079x885.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 source unknown. I found it via a Reddit post titled &#8220;Anyone experience this&#8221; in r/AgentsOfAI, but I have not been able to identify the original creator.</em></figcaption></figure></div><p><span>The drawing uses three columns: Idea, Execute, and Usage. Before AI, Idea and Execute are both fairly small, and Usage is the largest column by a wide margin, a big funnel of people actually using what got built. After AI, Idea explodes, Execute grows only a little, and Usage shrinks down to almost nothing. Some might read that as good news, since more people are generating ideas. However, I believe the real point lies in the shrinkage of the Usage column.</span></p><p><span>Some of my discomfort comes from what I&#8217;ve been seeing in my consulting work since retirement. The companies I work with are rolling out Claude, ChatGPT, and similar tools broadly, and they&#8217;re pushing employees to go from AI-assisted to AI-native. In practice, that shift means a salesperson who used to spend a day assembling a custom proposal can now generate one in a few minutes, and a support engineer who used to escalate an unusual case to a senior colleague can generate a full troubleshooting plan on their own in the same amount of time. I get the motivation. AI can help people write faster, analyze faster, research faster, and communicate faster. When used well, AI removes a lot of low-value work. I&#8217;m not skeptical of that promise.</span></p><p><span>The deeper issue is what that AI is actually drawing on. Most companies hand employees a general-purpose assistant that has read the open Internet, not the narrow set of things the company has actually learned about its own customers. Even when a company does point its AI at internal documents, in my own consulting work I have yet to see one with a clean, canonical body of material an AI could reliably draw from. What exists instead is usually a mess of outdated decks, internal debates nobody resolved, and practices that some people follow without the reasoning behind them ever being written down. So the AI can produce something confident and well-argued without ever touching what the organization has actually validated works. That gap between how confident the output sounds and how little of it has been tested against reality is exactly why so much of it never turns into real usage, whether that means a pitch that lands, a deal that renews, or a process that actually gets adopted.</span></p><p><span>What I keep noticing is that in all these discussions about making individuals more capable, there&#8217;s a lot less discussion about how organizations actually learn. That might sound like an odd thing to worry about, since companies are made of individuals, so if the individuals get more capable, shouldn&#8217;t the organization too? The more I think about it, the less sure I am.</span></p><h1><span>What changed my thinking</span></h1><p><span>One thing I&#8217;ve come to appreciate over my career is that successful organizations rarely win because they have more ideas than everyone else. Most organizations already have plenty of ideas. Product teams have them, engineers have them, salespeople have them, customers have them, and executives have them. Most companies have far more potential opportunities than they have time, money, or attention to chase. The hard part was never generating possibilities. It&#8217;s deciding which ones deserve attention, and then actually learning from how they play out.</span></p><p><span>That&#8217;s where playbooks come in. For most of my career I thought of a playbook mainly as an instruction manual. Sales playbooks told salespeople what to do, support processes told support engineers what to do, and marketing frameworks told marketers what to do. I don&#8217;t think that&#8217;s the important part anymore. I think a playbook is better understood as a </span><em><strong><span>common learning surface.</span></strong></em></p><p><span>Picture a sales org with a hundred salespeople, all pursuing roughly the same customer profiles, using roughly the same messaging, and following roughly the same process. Now the organization can learn from all hundred at once. One seller keeps running into the same objection, another notices a value prop that resonates unusually well, and a third finds a customer profile that converts better than expected. None of those observations mean much on their own, but they become valuable because they&#8217;re all happening against the same shared framework. SalesOps can see the patterns, product marketing can refine positioning, and leadership can adjust priorities, so the next version of the playbook reflects what the org learned. What scales isn&#8217;t the playbook itself. It&#8217;s the organization&#8217;s ability to keep improving it.</span></p><h1><span>The part that worries me</span></h1><p><span>Once I started thinking about playbooks that way, AI adoption looked different to me. Most of the conversation is about what one person can do with a tool. A salesperson generates a new pitch, a marketer builds a new positioning framework, a support engineer designs a new workflow, and an account team spins up a customized engagement model. A lot of that output is genuinely good, and some of it is even better than what already exists. That&#8217;s not really what worries me.</span></p><p><span>What worries me is that every one of those individualized alternatives creates its own separate learning loop. If a hundred salespeople are refining one playbook, the organization learns from a hundred salespeople. If a hundred salespeople are each refining their own version, everyone may still be learning something, but the organization has a much harder time turning those individual experiences into collective knowledge. Outcomes get harder to compare, feedback gets harder to aggregate, and patterns get harder to spot. Everyone is learning, but they&#8217;re not learning together.</span></p><p><span>None of this means individual variation is the enemy. Reps have always improvised, and some of that improvisation is exactly how playbooks get better over time. The old kind of improvisation was slow and visible enough that sales management could see it and weigh it against results. What matters isn&#8217;t whether someone deviates from the playbook. It&#8217;s whether the organization can see the deviation and measure what happened because of it. AI makes deviation cheap and easy to produce, and invisible unless someone builds the system to track it.</span></p><p><span>The phrase that keeps coming back to me is that everyone ends up &#8220;choosing their own adventure.&#8221; That sounds empowering at the individual level, but I&#8217;m not convinced it creates any leverage for the organization. It&#8217;s a smaller version of the same thing the drawing showed me. A lot more ideas, and not much more that actually gets used.</span></p><h1><span>The proposal that should never have existed</span></h1><p><span>One example from my own consulting work makes this concrete. In the B2B sales motions I tend to see, a good playbook usually pushes reps to identify the real buying committee before treating a deal as qualified. That discipline exists for a reason. Deals that go through real discovery and land the right stakeholders are more likely to have the internal support needed to renew and expand. Reps under pressure to hit a number do not always have that patience. With AI, it becomes easier to build a narrower and more urgent value proposition around whoever in the account is willing to move quickly, skip the harder discovery work, and still get something signed. The deal may count toward this year&#8217;s revenue, but if it was sold without real consensus, it may be much less likely to renew or expand. In the worst case, the short-term booking creates a larger long-term revenue problem than it solves.</span></p><p><span>That&#8217;s the realization that changed how I think about this. Sometimes the problem isn&#8217;t that an AI-generated proposal is low quality. Sometimes the proposal should never have existed in the first place, because the organization already learned that a deal built this way doesn&#8217;t hold. AI just made it easy to route around that discovery process and produce something that looks like a win in the moment. The rep&#8217;s number for the quarter goes up. The company&#8217;s actual revenue the following year may not, and this is the same pattern the drawing depicts, showing a lot more activity up front and a lot less that survives to be used later on.</span></p><h1><span>Why this reminds me of product marketing</span></h1><p><span>Working through this, I kept circling back to a piece I wrote recently about </span><a href="https://www.retiredpdx.com/p/separating-meaning-from-voice-in"><span>separating meaning from voice in AI content systems</span></a><span>. The idea there was that product marketing should own meaning, brand should own voice, and AI should act mostly as a renderer. At the time I was thinking about content quality and semantic consistency. Looking back, I think I was really writing about organizational learning.</span></p><p><span>If product marketing figures out something important about positioning, I don&#8217;t want every salesperson, agency, regional team, and demand-gen team inventing their own version of it. I want that learning captured somewhere shared, adapted appropriately by brand, and given context by regional teams where it&#8217;s needed, with AI helping to distribute it quickly and consistently. In practice, that might look like this: the messaging comes from product marketing, the voice comes from brand, industry-specific information comes from segment marketing, and reps add their own context, account notes, and what they actually know about the buyer. What reps aren&#8217;t doing is inventing new messaging or a new business case from scratch every time. AI&#8217;s job in that model isn&#8217;t to help each rep write something new. It&#8217;s to render the shared assets into something personalized, flag when a deal has drifted away from them, and tie that drift back to whether the deal actually renewed. Product marketing still does what product marketing does, brand still does what brand does, and segment teams still do what segment teams do. AI just helps the learning move through the system with less effort and less distortion, while also helping the organization see when downstream motions have drifted away from the shared model.</span></p><p><span>I think this is where some organizations are leaving value on the table. The highest-leverage use of AI probably isn&#8217;t helping every employee build their own version of the strategy. It&#8217;s helping the people responsible for the strategy learn faster from the people out there executing it.</span></p><h1><span>The question I keep coming back to</span></h1><p><span>The AI conversation usually centers on individual productivity, because those gains are easy to see. Someone writes faster, someone researches faster, and someone generates more options. The question I keep asking myself is different. Does the organization learn faster? Does feedback from the field actually make it back to the people responsible for improving the system? Does the next version of the playbook get better because of what everyone learned together?</span></p><p><span>Those questions matter more to me than whether any one employee can crank out another deck or another proposal. I don&#8217;t think organizations scale because everyone invents their own playbook. I think they scale because a lot of people help improve the same one. The drawing that started this whole train of thought put it more plainly than I can. More ideas without more usage isn&#8217;t progress.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/the-point-of-a-playbook/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-point-of-a-playbook/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><span>AI disclosure:</span></strong><span> 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.</span></em></p><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Fourth of July Grab Bag]]></title><description><![CDATA[This week&#8217;s mixed bag of good news, price hikes, and one good rant]]></description><link>https://www.retiredpdx.com/p/the-fourth-of-july-grab-bag</link><guid isPermaLink="false">https://www.retiredpdx.com/p/the-fourth-of-july-grab-bag</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 05 Jul 2026 03:45:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MZV6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>There&#8217;s been a lot on my mind this week. Good medical news, an AI rabbit hole that&#8217;s raising hardware prices for everyone, a savings hack from Marsha, and (of course) another rant. Here&#8217;s the mixed bag.</span></p><p><strong><span>Health.</span></strong><span> Thanks for all the nice notes after my last post (</span><a href="https://www.retiredpdx.com/p/the-detour"><span>The Detour</span></a><span>), which described the vascular issues I need to resolve before a potential kidney transplant.  This past week, I saw the cardiothoracic surgeon, and he let me know that the transplant team has decided to let me skip the bypass surgery for now in favor of </span><a href="https://my.clevelandclinic.org/health/treatments/22066-percutaneous-coronary-intervention"><span>PCI</span></a><span> (stents). The basic explanation was that if it weren&#8217;t for my kidney disease, bypass surgery (</span><a href="https://my.clevelandclinic.org/podcasts/love-your-heart/coronary-artery-bypass-surgery-cabg"><span>CABG</span></a><span>) would be the way to address my coronary artery disease. However, the multidisciplinary team agreed that my best path forward is to address the kidney issues first. This doesn&#8217;t take cardiac bypass surgery off the table for the future, but at least such a major operation isn&#8217;t holding me up. I am still awaiting word on next steps for stents.</span></p><p><strong><span>Reflections</span></strong><span>. In addition to my physical health, I have also been looking to change psychologists. I like my current therapist, but she doesn&#8217;t have as much experience with alexithymia and neurodivergence (</span><a href="https://www.retiredpdx.com/p/todays-vocabulary-word-alexithymia"><span>something I&#8217;ve written about before</span></a><span>). She likes to refer to the &#8220;</span><a href="https://openemotionwheel.com/wp-content/uploads/2025/07/open-emotion-wheel-v1_1_0.png"><span>feelings wheel</span></a><span>&#8221; and this type of tool isn&#8217;t as useful for me. So, we agreed that we&#8217;d take a little break while I interview other therapists, and our couples therapist was able to help me assemble a list of people to interview that have availability and that have many neurodivergent clients. The bummer is that my current therapist was in my health plan&#8217;s EPO. The two I like the most from the list are out-of-network for me. Boo.</span></p><p><span>The good news is that I was able to use AI to help me both parse the &#8220;pitch&#8221; emails responding to my own couples therapist for referrals, as well as to visit the websites of all the therapists for fit. While I chose to interview them myself, it summarized the upfront research really well.</span></p><p><strong><span>Business</span></strong><span>. Speaking of AI, I&#8217;ve been so impressed with the relative ROI of AI. I am getting much more value from it than what I&#8217;m paying for in subscriptions. However, the piece of this I&#8217;m not sure how to measure is how much the AI boom has increased the costs of everything else. For example, a conventional 32GB (2x16GB) DDR5 memory kit sold for around $100 to $200 in October 2025, but the same kit now starts at $350, if it&#8217;s even in stock. (</span><a href="https://www.tomshardware.com/pc-components/ram/ram-price-index-2026-lowest-price-on-ddr5-and-ddr4-memory-of-all-capacities"><span>Tom&#8217;s Hardware</span></a><span>, </span><a href="https://www.consumerreports.org/electronics-computers/laptops-chromebooks/ai-data-centers-buying-up-ram-and-raising-laptop-prices-a3637558313/"><span>Consumer Reports</span></a><span>). The memory shortages are even affecting the PS5 gaming market (</span><a href="https://www.techradar.com/gaming/gaming-accessories/the-ram-shortage-claims-another-victim-as-ps5-ssd-prices-rocket-heres-why-now-is-the-worst-time-to-buy-and-what-to-do-instead"><span>TechRadar</span></a><span>). All of that traces back to the same root cause. AI data centers are on track to eat up around 70 percent of the world&#8217;s memory output this year, and Samsung, SK Hynix, and Micron have shifted almost all their production toward feeding them (</span><a href="https://spectrum.ieee.org/dram-shortage"><span>IEEE Spectrum</span></a><span>, </span><a href="https://www.cnbc.com/2026/01/10/micron-ai-memory-shortage-hbm-nvidia-samsung.html"><span>CNBC</span></a><span>). Most analysts don&#8217;t expect real relief until new fab capacity comes online in 2027 or 2028. The most visible impact for me personally is that Apple has raised prices across MacBooks and iPads. The M4 iPad Air had already gone up $150 by the time I got to it. I missed Prime Day, which would&#8217;ve caught the old price, and by the time I bought it, the higher price was all that was left. I paid the new price.</span></p><p><strong><span>Tech</span></strong><span>. So, why did I buy the M4 iPad Air? My old iPad was a 9th generation iPad (with only 3GB of RAM), and with iPadOS 26, it was running pretty slow. While I considered buying a newer 11th generation iPad, it only has 6GB of RAM. I decided that with the new Apple Intelligence features, getting 12GB of RAM would be more future-proof, so I got the M4 iPad Air. I know this is likely overkill for iPadOS right now, but I didn&#8217;t want to be constrained in using AI in my ecosystem.</span></p><p><strong><span>Finance</span></strong><span>. To mitigate at least some of the cost increases for Apple products, Marsha pointed me to Capital One Shopping, which had a 9% cash back offer running on Apple purchases through July 4th. It was pretty straightforward to just click a link in an email, buy the product, and get the rewards. We got $83.52 back for the iPad and case.</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MZV6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MZV6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 424w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 848w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MZV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png" width="1428" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1428,&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_!MZV6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 424w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 848w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!MZV6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c57dabd-1c07-4229-a5f2-1c43860be429_1428x1072.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Capital One Rewards from Apple. Screenshot by author.</em></figcaption></figure></div><p><span>Even when Marsha doesn&#8217;t get the emails, she often uses the &#8220;</span><a href="https://lifehacker.com/get-a-discount-shopping-online-by-abandoning-your-cart-512616024"><span>cart abandonment hack</span></a><span>.&#8221; (Yes, look it up!) This time, she added an </span><a href="https://www.ondemand.labcorp.com/lab-tests/nmr-lipoprofile-test"><span>NMR LipoProfile</span></a><span> test from Life Extension to her cart and then walked away. The next day, she got an email offering her both a discount and cash back on the test. For anything you don&#8217;t need immediately, this hack is a good one!</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bSMg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bSMg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 424w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 848w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bSMg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png" width="1428" height="1072" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1072,&quot;width&quot;:1428,&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_!bSMg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 424w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 848w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!bSMg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75bcb619-1bbe-4c18-91c9-0dbe8fc88008_1428x1072.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Capital One Rewards from Life Extension. Screenshot by author.</em></figcaption></figure></div><p><span>The backstory: Marsha has &#8220;</span><a href="https://time-restricted.com/blog/is-your-ldl-pattern-a-or-pattern-b"><span>pattern A</span></a><span>&#8220; LDL, which is protective and not at all a risk for cardiac issues. However, the cheap tests ordered by PCPs don&#8217;t test for this by default, so we had to order that NMR test on our own. Knowing that Life Extension was a Capital One Shopping partner is exactly what made the cart abandonment trick above possible.</span></p><p><strong><span>PNW</span></strong><span>. This is July 4th weekend and the first year in a while that we haven&#8217;t had the </span><a href="https://www.travelportland.com/event/6848ccba7cd4cd78fede14e1/"><span>Portland Craft Beer Festival</span></a><span>. What a disappointment! This event used to be literally on my block in the Pearl District, and with a construction project in the Fields Park where it was held, they moved it to Elizabeth Caruthers Park down in South Waterfront. This year, they&#8217;re not doing it at all! I&#8217;m super disappointed that the number of beer events here in the city have dwindled quite a bit as of late. (I will be out of town for </span><a href="https://www.fujitohood.com/"><span>Fuji to Hood</span></a><span>, which is a cool collaboration between Portland and Japanese brewers). So, it looks like the next beer festival for me will be across the county line in Washington County, which is the </span><a href="https://www.tigardbrewfest.com/"><span>Tigard Brewfest</span></a><span> out in the suburbs, suggested by a couple of guys who live out there in our beer group.</span></p><p><strong><span>Politics.</span></strong><span> And, of course, this week&#8217;s rant. As much as I love Portland, I&#8217;m frustrated watching our income tax base leave. This isn&#8217;t just my imagination, and it isn&#8217;t a settled question either. There&#8217;s been a real fight over the numbers. Governor Kotek and a Tax Advisory Group report pointed to a big jump in the average income of people leaving Multnomah County as proof that high earners are fleeing the county&#8217;s Preschool for All tax (</span><a href="https://www.axios.com/local/portland/2023/08/16/portland-migration-leaving-cost-multnomah-county-1-billion"><span>Axios</span></a><span>). The county&#8217;s own commissioned rebuttal pushed back hard (</span><a href="https://www.portland.gov/council/districts/4/mitch-green/documents/multnomah-county-fiscal-migration-analysis-preschool-all/download"><span>Portland.gov</span></a><span>), pointing out that a simple average can be wrecked by just one or two ultra wealthy households in a small sample, and that people who move to the suburbs might still be commuting into Portland and paying the same taxes anyway.</span></p><p><span>So I went looking for someone who actually controlled for that outlier problem instead of eyeballing an average. There&#8217;s a new academic paper (</span><a href="https://www.opb.org/pdf/ConwayIselinRork2026_1776369046481.pdf"><span>Conway, Iselin, and Rork, 2026</span></a><span>) out of the University of New Hampshire, the Budget Lab at Yale, and Reed College right here in Portland that does exactly that. Instead of a raw income average, the authors used two independent datasets and a battery of causal inference methods, including placebo tests where they check whether every other county in the country would show as big an effect if they&#8217;d gotten the same tax. The result held up. Adjusted gross income leaving Multnomah County rose by 3.7 percentage points after the tax took effect, worth about $1.4 billion a year, and Oregon&#8217;s state income tax take from the county dropped by about $78.6 million a year because of it. This isn&#8217;t a couple of billionaires skewing an average. It&#8217;s a real, measurable effect.</span></p><p><span>The honest caveat, which the authors raise themselves, is that this tax launched right at the start of Covid, alongside the George Floyd protests and drug decriminalization, so some of that exodus probably isn&#8217;t about the tax alone. And relative to the whole county economy, the hit is modest, a few percent of state tax revenue, not a collapse. But modest is not zero, and it&#8217;s stacked on top of a housing affordability problem that&#8217;s pushing out exactly the people we need to keep. That combination, the tax and the cost of living, is a big part of why, for the first time, getting to a beer festival here means getting in a car. I&#8217;ve walked to every one of these in the city until now.</span></p><p><span>So that&#8217;s the week. Cardiac reprieve, a decent research assistant in the AI, a discount well earned, and a tax base still leaking out the door, for real, measurable reasons this time. On to whatever comes next!</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/the-fourth-of-july-grab-bag/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-fourth-of-july-grab-bag/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><span>AI disclosure:</span></strong><span> 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.</span></em></p><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Seeing People]]></title><description><![CDATA[What we chose to do with a week]]></description><link>https://www.retiredpdx.com/p/seeing-people</link><guid isPermaLink="false">https://www.retiredpdx.com/p/seeing-people</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 28 Jun 2026 13:01:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vjJv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.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_!vjJv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vjJv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vjJv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.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;:1697974,&quot;alt&quot;:&quot;Marsha Pao and Stephen Pao (with a mask on)in Terminal 1 at SFO airport&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/203919389?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Marsha Pao and Stephen Pao (with a mask on)in Terminal 1 at SFO airport" title="Marsha Pao and Stephen Pao (with a mask on)in Terminal 1 at SFO airport" srcset="https://substackcdn.com/image/fetch/$s_!vjJv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 424w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 848w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!vjJv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b60dae8-6db1-4f5b-9862-396cc409ab7c_3671x2622.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>Arrived at SFO. We had a plan, and Marsha was ready to execute it. Selfie by author.</span></em></figcaption></figure></div><h1><span>Not really a vacation</span></h1><p><span>Marsha and I spent a week in the Bay Area and decided to take something we&#8217;d done in smaller ways and turn it up another notch or two. It didn&#8217;t feel quite like a normal vacation. It felt more intentional than that, and that distinction ended up mattering to us.</span></p><p><span>We had done lighter versions of this before. We still go down biannually for my cognitive testing at UCSF as part of an observational study I&#8217;ve been participating in for a few years now. When we&#8217;re in town we&#8217;ll see a few people along the way. Those trips always felt incidental, more like a bonus than a purpose. This was the first time we went with the primary goal of seeing people and built the entire week around that.</span></p><h1><span>How things used to work</span></h1><p><span>Before retirement, this almost never would have happened, not because we didn&#8217;t care, but because of how life filled in around us. Work, kids, activities, logistics all occupied the space where a phone call or a visit might have gone. Over time, relationships from earlier phases thinned out, people from previous jobs, friends who lived just one or two towns over, even neighbors or parents of our kids&#8217; friends whom we genuinely liked. We would think about reaching out, but usually didn&#8217;t get around to it because life always got in the way.</span></p><p><span>The closest I came was a running group from my Latitude days that met every Sunday, which sounds like more than it was. We would run for an hour and then get back to everything else. It rarely expanded beyond that.</span></p><p><span>Driving around the Bay Area this past week, I was reminded how much simple friction plays a role in not engaging more regularly. Getting from one suburb to another can take real effort, and layering that onto already full lives makes it easy to see why we didn&#8217;t do more to stay connected when neck deep in full career and family mode.</span></p><h1><span>What&#8217;s different now</span></h1><p><span>Portland has been different for us. It&#8217;s more compact, easier to get around, and easier to see people who live nearby. Over time, especially in retirement, we&#8217;ve gotten used to meeting friends more often.</span></p><p><span>So this trip was intentional. We didn&#8217;t plan around places. We planned around people, which turned out to be a very different kind of trip.</span></p><h1><span>What the week felt like</span></h1><p><span>This trip didn&#8217;t come together on its own. Weeks before we left, we were tracking availability windows, routing each day around who could meet when, and figuring out how to move from one part of the Bay Area to another without losing half the day to traffic.</span></p><p><span>We saw more than twenty people over the course of the week. Some visits were just a couple of hours, and others stretched into half a day or more. We focused mostly on couples where both Marsha and I had relationships, which we realized isn&#8217;t that common. Just a few times we split up and saw people separately.</span></p><p><span>The conversations started with catching up and shared history, but they didn&#8217;t stay there. As we sat together, people moved quickly into where they actually are now, talking about kids getting married, relationships evolving, parents aging, and plans for what comes next.</span></p><p><span>One of the more unexpected moments came from a couple we hadn&#8217;t seen for a very long time. Years ago, Marsha and I had introduced two people, her former boss and someone I had worked with at a past company. That introduction turned into a marriage, a family, a home, and an ongoing successful business. The wife told us she owes her whole wonderful life to us! We never could have anticipated everything that followed when we made the introduction.</span></p><p><span>There were also things we learned that we simply didn&#8217;t know. One friend&#8217;s wife had been a kidney donor for her cousin, and in another conversation someone told us about an anonymous kidney donation in their family through the NHS in the UK. Given what we&#8217;re going through right now, those conversations landed when we needed them most.</span></p><p><span>There was also an offer that has stayed with me. Another couple, also empty nesters, said without hesitation that they would fly up to Portland to help take care of us if I end up needing close monitoring after a kidney transplant. They mentioned that they can both work from anywhere and could just come up to help. It was such a gift to receive.</span></p><h1><span>What we noticed</span></h1><p><span>By the end of the week, we were pretty drained socially. Spending that much concentrated time with people, even people we care about deeply, takes energy, and we felt it.</span></p><p><span>There were also moments that made the passage of time more visible. My aunt, my dad&#8217;s youngest sister, couldn&#8217;t really hear anymore. We had known this going in, because my cousin mentioned it on a family call a few weeks earlier. But knowing something and experiencing it in person are different things, and sitting across from her was its own kind of moment.</span></p><p><span>The conversations reminded us how much has changed since we all had young kids. Back then we talked about preschools, homework, and after-school schedules. Now we were talking about adult children trying to match their education to careers that would actually work for them.</span></p><p><span>We were intentional about how we chose to spend the time. We didn&#8217;t revisit old neighborhood haunts, and we didn&#8217;t try to see everyone. We spent 21 years in the Bay Area, so seeing everyone was never realistic anyway. We focused mostly on people where both of us had a relationship, and on people who had, at some point, said &#8220;next time you&#8217;re in town, let&#8217;s get together.&#8221; Those signals mattered.</span></p><p><span>One thing that stood out is that even among our friends who still live in the Bay Area, and even among those who know each other, they don&#8217;t necessarily see each other that often. In Portland, we probably see friends more regularly now than we ever did during our working years, in part because the city is more compact and easier to get around. But what struck us just as much is that when we reconnect with people from earlier phases of life, it still feels easy to pick right up.</span></p><p><span>What I keep coming back to is what makes those reconnections feel different. With people we&#8217;re in regular contact with, we already know what&#8217;s going on in their lives. With people we&#8217;re close to but see less often, we arrive without that background, and what they share has an impact in both familiar and wonderful ways.</span></p><p><span>That&#8217;s what happened here. Hearing that kids the same age as ours were struggling to find their footing professionally felt familiar and such a common theme for the times we live in. The kidney conversations landed the same way. These were not topics we would have encountered in daily life, yet they were so on point. There is something about that combination of closeness and distance that makes these relationships feel comfortable, raw, and well worth the effort.</span></p><h1><span>Where this is going</span></h1><p><span>One thing we genuinely appreciate is finding couples where both Marsha and I really value our own relationships with both people. Those visits had a different quality to them. The conversations went deeper and ranged more widely. When people had said &#8220;next time you&#8217;re in town, let&#8217;s get together,&#8221; they meant it. And when we showed up, so did they.</span></p><p><span>I came away feeling grateful and reminded of what these relationships actually represent in my life and why they&#8217;re worth making time for. We&#8217;ve started talking about doing something similar in Seattle. Those trips have always been about family, but there are friends there we&#8217;ve been meaning to see for a long time. I don&#8217;t think we stop with Seattle. Perhaps there are friends in other parts of the country we should make more of an effort to see as well. Retirement gives us more time, and investing in friendships is one of the ways we&#8217;re choosing to use it.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/seeing-people/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/seeing-people/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><span>AI disclosure:</span></strong><span> 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.</span></em></p><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Detour]]></title><description><![CDATA[Before the kidney, the plumbing needs attention first]]></description><link>https://www.retiredpdx.com/p/the-detour</link><guid isPermaLink="false">https://www.retiredpdx.com/p/the-detour</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 21 Jun 2026 17:19:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0D49!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.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_!0D49!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0D49!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0D49!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0D49!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0D49!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0D49!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1001,&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_!0D49!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0D49!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0D49!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0D49!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44b1d6e2-5823-4a45-9249-bfadcb3fbacf_1512x1040.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><span>The straight path is blocked for now, but the trail still leads to the same place. </span><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">Image generated by </span><a href="https://designer.microsoft.com/">Microsoft Designer</a><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">, prompted and edited by the author.</span></em></figcaption></figure></div><p><span>I got a call on Wednesday, a follow-up on a small hematoma at the incision point on my wrist from the coronary angiogram. In the middle of that call, I learned that the transplant team had met that same day to discuss the results of the test. The conclusion was that I would not be eligible for a kidney transplant until the issues with my coronary artery blockage get resolved first.</span></p><p><span>That&#8217;s not exactly the news I was expecting, but it isn&#8217;t entirely bad news either. It is a detour.</span></p><p><span>I&#8217;ve </span><a href="https://www.retiredpdx.com/p/writing-my-own-story"><span>written before</span></a><span> about living with diabetes for most of my adult life, about the slow decline of my kidneys, and about </span><a href="https://www.retiredpdx.com/p/returning-in-2026"><span>what it&#8217;s meant</span></a><span> to start the transplant evaluation process. This is the next chapter, not a new one.</span></p><p><span>Here&#8217;s the short version, for anyone catching up. My kidneys have been declining for a while now, a long-term consequence of having type 2 diabetes for over twenty years, most of those years before the medicine caught up to people like me. I&#8217;m on the transplant waitlist, and we&#8217;re investigating the possibility of a living donor, which means skipping the years-long wait for a deceased donor organ entirely. I feel positive about that part of the story, and I&#8217;ll get to that part more in a bit.</span></p><p><span>But before any of that can happen, the transplant team needs my heart and its plumbing to be cleared for the surgery itself. As part of the medical evaluation for transplant, they found blocked arteries. I&#8217;ve been told the heart muscle itself is fine. My pumping function tested completely normal, so this isn&#8217;t a heart problem so much as a plumbing problem. From what my cardiologist has explained, stenting may not be a great option given where the blockages are and how extensive they are, which is why a bypass is the path being set up as the likely fix. Nothing is on paper yet, but it&#8217;s clearly the direction things are leaning. If it does come to that, it&#8217;s open chest surgery, the real thing.</span></p><p><span>So that&#8217;s the detour, or at least the shape it&#8217;s taking. It is most likely looking like a bypass, then months of healing, and then, hopefully, the transplant.</span></p><h1><strong><span>Why I&#8217;m not panicking</span></strong></h1><p><span>I&#8217;ll admit my first instinct, hearing &#8220;open heart surgery&#8221; mentioned as a real possibility, was to think of my dad. He had a bypass in his seventies, and while he survived it, he came out the other side with vascular dementia. He was never quite himself again. That memory sat in the back of my mind for about a day.</span></p><p><span>But I&#8217;m not 72. I&#8217;m about to turn 59, and I&#8217;ve been told the difference matters more than I would have guessed, that a younger body and brain tend to recover differently, with more cellular reserve and better resilience to the stress of surgery. I&#8217;ve also stayed physically active for years, and apparently that&#8217;s not just good for the body. I&#8217;ve been told consistent activity can have a real protective effect on the brain too. I&#8217;m certainly not invincible, but I&#8217;m also not starting from where my dad started either.</span></p><p><span>I&#8217;ve also lived through a case of diabetes that wasn&#8217;t so forgiving. Chronically high blood sugars, constant management, and no real safety net did the damage to my kidneys back in that era. I&#8217;m not in that era anymore though. Ozempic has made my blood sugar control about as stable as it&#8217;s ever been, and I&#8217;ve been told that stability gives me a real shot at sailing through this without things spiraling. It&#8217;s old damage, but I&#8217;m working with new tools now.</span></p><h1><strong><span>The part that&#8217;s actually moving me</span></strong></h1><p><span>What&#8217;s been catching me off guard isn&#8217;t the surgery. It has been the response.</span></p><p><span>When I started expressing that I needed a kidney, several people closest to me didn&#8217;t hesitate. There&#8217;s been testing, conversations, and real willingness, more of it than I expected, and I don&#8217;t think I&#8217;ll ever stop appreciating the support.  Marsha and I have been doing both individual and couples therapy to work through what it means for her to potentially be a donor, too. That whole process is on pause for now, until my vascular issues are sorted out, but it hasn&#8217;t gone away. It&#8217;s just waiting.</span></p><p><span>I&#8217;ve also learned that compatibility is its own small lottery. Blood types, antibodies, and tissue matches are things I never thought much about until I had to. Some people who offered to help weren&#8217;t able to. That&#8217;s part of why I hold the people who tried so close, since the willingness mattered every bit as much as the outcome. Whatever happens next, I already feel so supported.</span></p><p><span>I&#8217;m staying vague here on purpose. Nothing is finalized, and this is other people&#8217;s story to tell too, not just mine. But I want everyone who has raised a hand, tested, or simply asked how they could help to know I see it, and I&#8217;m not taking it lightly.</span></p><h1><strong><span>What&#8217;s next</span></strong></h1><p><span>I&#8217;m waiting on a scheduling call for my next consultation, where I expect to get more clarity on whether the bypass is really the path forward or if there&#8217;s still something else on the table. My transplant advocate is almost certainly working through insurance and logistics behind the scenes right now, the way she has been doing before each step of the process. If the bypass does turn out to be the next step, I&#8217;m looking at three to six months of healing before the transplant itself can happen, time for my chest and my heart to settle.</span></p><p><span>It&#8217;s a long way around. But it&#8217;s a way through, not a dead end, and that&#8217;s the part I keep holding onto. So, for now, I&#8217;ll be 59, active, and with people who have volunteered to help. That&#8217;s not a bad place to be standing when a detour shows up.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/the-detour/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-detour/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><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);">AI disclosure:</span></strong><span data-color="rgb(54, 55, 55)" style="color: rgb(54, 55, 55);"> 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.</span></em></p><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Eight Years In and Still Figuring It Out]]></title><description><![CDATA[Part 2 of 2: On subscriptions, second-guessing, and leaving well enough alone]]></description><link>https://www.retiredpdx.com/p/eight-years-in-and-still-figuring</link><guid isPermaLink="false">https://www.retiredpdx.com/p/eight-years-in-and-still-figuring</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 14 Jun 2026 13:01:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GiFZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_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_!GiFZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GiFZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GiFZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2ff4102-a57e-434d-8999-6e2d5ae76b84_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_!GiFZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GiFZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2ff4102-a57e-434d-8999-6e2d5ae76b84_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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>I wrote all of this instead of canceling Dropbox.  Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted and edited by the author.</em></figcaption></figure></div><div><hr></div><p><em>This is Part 2 of <a href="https://www.retiredpdx.com/p/overengineering-a-case-study">yesterday&#8217;s post</a>. I split one long piece into two for readability and am releasing them back-to-back. Yesterday was about what I built. Today is about other stuff I&#8217;ve been poking at in retirement, and what I decided to do (or not do) about it. I am not planning to make a habit of showing up in your inbox twice in one weekend.</em></p><div><hr></div><p>Yesterday, I wrote about rebuilding my web hosting setup from scratch. Today, now eight years into retirement and still figuring it out, I want to put that project in a wider context. It turns out it was just one of several technology decisions I&#8217;ve been examining in retirement. Having the time to look at things is one of retirement&#8217;s gifts. The judgment to leave well enough alone is apparently not included.</p><h1><strong>Leaving things alone intentionally</strong></h1><p>Not everything I&#8217;ve examined has led to action. Some things I&#8217;ve looked at clearly and chosen to leave exactly where they are. I am choosing to take credit for this.</p><p>I&#8217;ve had Microsoft 365 since before it was Microsoft 365. It started in late 2005, when I took a job at Barracuda and needed to learn Exchange administration to understand the customers and the technical space. So I stood up an Exchange Server on Windows SBS at home, with my server living in the garage. (Marsha had some thoughts about this and our sky-high California energy prices that I will not be sharing here.) When our customers started migrating to Exchange Online around 2011 or 2012, I migrated everything to the cloud and started another subscription. That was over fourteen years ago.</p><p>What started as email is now a lot more, and most of it I would not know how to reconstruct. Last year I went looking for a video a friend had shared with us years ago, found the email, clicked the YouTube link, and discovered the video had been taken down. The email was the only proof it had ever existed. That is a small example of a much bigger reality. We live in an urban condo with no file cabinet, and everything that arrives on paper and matters gets scanned and lives in OneDrive. Tax documents, insurance forms, things mailed to our address for our adult kids, and even Marsha&#8217;s recipes have all ended up there over fourteen years. The built-in search reads the scans, so finding anything takes seconds. I looked at this subscription and did not touch it.</p><p>There&#8217;s also a Google Workspace account I&#8217;ve had since Google was still calling it Google Apps. I didn&#8217;t really use it until 2018, at which point I decided it was the right place for consulting and volunteer email, safely away from the accounts I&#8217;ve had since before smartphones existed. Sometimes things find their purpose late. I left this one alone for the same reason. Too much would break, and it is actually working.</p><h1><strong>The easy ones to drop</strong></h1><p>Not everything requires that much thought. I canceled Medium because I wasn&#8217;t writing there anymore. I canceled Riverside because I&#8217;m not podcasting anymore. When a subscription maps to an activity and the activity stops, the decision makes itself. I want to be clear that I did not rebuild anything first.</p><h1><strong>The new pile</strong></h1><p>And then there&#8217;s the new pile of technology. I have subscriptions to Claude and Cursor for coding and day-to-day AI tasks. I have a top-up account to run OpenClaw with Moonshot AI for Kimi. (If that sentence made no sense to you, welcome to how Marsha feels every time I explain what I spend my evenings doing.) This pile is growing. These don&#8217;t feel like the other subscriptions. They don&#8217;t map cleanly to &#8220;do I use this&#8221; or &#8220;could I get this cheaper elsewhere.&#8221; They feel more like infrastructure, like paying for a capability woven into how I work, with the awareness that the landscape could look completely different in eighteen months. I&#8217;m genuinely excited about them and a little resigned to them at the same time. They are the one category where I can&#8217;t audit my way to clarity, because the thing I&#8217;m buying is still becoming what it is.</p><h1><strong>The one I&#8217;m avoiding</strong></h1><p>Dropbox is the one I haven&#8217;t been able to look at honestly yet despite all of my misgivings every August when I pay the renewal. I don&#8217;t want to spend the mental energy sorting through it and deciding what to keep accessible, what to archive to lower cost storage, and what to trash. It doesn&#8217;t cost enough to force the issue. So it sits there, and I let it, and I notice that I&#8217;m letting it. Dropbox is costing me about $10 a month to avoid a weekend (or maybe two) of sorting. Rather than deal with that, I made it worse. I wired it into the backup server for my web hosting setup via rclone because the unused capacity was cheaper than Cloudflare R2 or Backblaze. This is what economists call sunk cost reasoning. I call it pragmatic.</p><p>What I do know is that the looking itself is something retirement made possible. Whether that&#8217;s liberating or unsettling seems to change depending on the day and depending on the thing I am looking at. After eight years, I&#8217;ve mostly stopped expecting that to resolve. I wrote all of this, I should mention, instead of just canceling Dropbox.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/eight-years-in-and-still-figuring/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/eight-years-in-and-still-figuring/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[Overengineering: A Case Study]]></title><description><![CDATA[How I set up an enterprise-grade stack for a resume site and a blog nobody reads anymore]]></description><link>https://www.retiredpdx.com/p/overengineering-a-case-study</link><guid isPermaLink="false">https://www.retiredpdx.com/p/overengineering-a-case-study</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sat, 13 Jun 2026 13:02:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y5Mo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.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_!Y5Mo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 424w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 848w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1001,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2038292,&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/201866562?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.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_!Y5Mo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 424w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 848w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!Y5Mo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e764181-fb19-42f8-9802-3c98449875ee_1512x1040.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Several nuclear reactors later, it&#8217;s still just a toaster. Image generated by <a href="https://designer.microsoft.com/">Microsoft Designer</a>, prompted and edited by the author.</em></figcaption></figure></div><p>Most people try to save money by cutting back on streaming services or making coffee at home. I tried to save money by declaring war on my web hosting company&#8217;s ridiculous fees. It turned into an absolute masterclass in engineering overkill. I ended up rebuilding my entire digital footprint using tools designed to keep multi-billion-dollar corporations online.</p><p>I used those same tools to host <a href="https://hillwork.us">my resume</a>, <a href="https://paos.us">my family portal</a>, and an <a href="https://time-restricted.com">old blog</a> I haven&#8217;t regularly updated in years.</p><p>If a rogue nation-state decides to flood my family&#8217;s <a href="https://paos.us/2026/01/happy-new-year-2026/">Christmas letter</a> site with traffic, the Vercel frontend will shrug it off. My little $60/year VPS in the back? That&#8217;s a different story. But hey, at least the front door looks intimidating.</p><p>I figured I&#8217;d write up what I did and why it makes absolutely no functional sense.</p><h1>The Inertia Tax (and the Domain Racket)</h1><p>For over twenty years, my sites sat on a standard shared hosting plan from the dot-com era, back when IONOS was called 1&amp;1 Internet. The plan was easy to keep, but the hosting bill kept creeping up. It started small back in the early 2000&#8217;s.  At the time of my June cancellation, I was paying $17 per month for my &#8220;Expert&#8221; plan which included unlimited bandwidth, unlimited storage, and unlimited SQL databases. On top of that was a ridiculous $100 annual &#8220;Unlimited SSL&#8221; fee, which to me is like paying a landlord for &#8220;protection money&#8221; just to have a front door with a lock on it.</p><p>There was also the racket of the domain registration. IONOS made a business of luring me (and many others) into initially free, then cheap introductory prices. They made the real money on domain renewals at inflated prices. Over the years, I&#8217;ve accumulated around 10 domains, including vanity domain names like spao.net, paos.us, and pao.mx, business domains like hillwork.com, hillwork.us, hillwork.org, and hillwork.net, as well as blog domains like time-restricted.com, retiredpdx.com, and bykumi.com (for Marsha). For each of these domains, IONOS was charging me at least $10 more per year than they were actually worth. In my defense, domain names felt cheap when I bought them. In my further defense, this is not actually a defense.</p><p>I realized that with a little sweat equity, I could escape this trap entirely. By moving to a hyper-optimized &#8220;budget stack,&#8221; I was able to reduce my baseline costs.</p><ul><li><p><strong>Domains: </strong>I transferred all ten domains to Cloudflare and Porkbun, escaping the retail markup trap and getting near-wholesale pricing. That alone saved me $100 per year right out of the gate.</p></li><li><p><strong>Email: </strong>I still pay for Microsoft 365 for our family&#8217;s actual email. But for all the automated emails my sites and apps send (password resets, notifications, that kind of thing), I moved to Purelymail for a flat $10/year.</p></li><li><p><strong>Server: </strong>A dead-cheap $60/year virtual private server from RackNerd.</p></li></ul><p>By combining the email and server for $70/year, I saved over $200 per year.  I&#8217;m now hosting seven different websites and five personal apps for less than the cost of a fast food meal per month. The catch? To &#8220;save money,&#8221; I built two tech stacks so complicated there&#8217;s just about no way that saving only $300 per year was worth it.</p><h1>What I Actually Built (The Part Where I Lose Half of You)</h1><p>Fair warning: this next section is where other techies will nod along and everyone else will briefly wonder if they left the oven on. I&#8217;ll keep it short. The point isn&#8217;t the technology. It&#8217;s the sheer disproportionality of it.</p><h2>The Resume: Just Vercel</h2><p>My resume at hillwork.us gets the simplest treatment of the three. It&#8217;s a single page, so I dropped the WordPress backend entirely. Vercel hosts it directly. To be honest, I don&#8217;t update it often. If I need to update it in the future, I plan to just describe the change to an AI and let it rewrite the relevant code. Prompting AI to update a webpage seems easier to me than logging into WordPress for one page. Which, now that I write it out, raises the question of why I used WordPress to host that site in the first place.</p><h2>The Family Portal and Blog: WordPress + Vercel + GraphQL</h2><p>For the family portal and the natural health blog, there&#8217;s years of existing content in WordPress that I wasn&#8217;t about to migrate. So, for these two sites, I implemented a new setup. WordPress runs in the back doing content management, shielded behind Nginx Proxy Manager so the public never hits it directly. Out front, Vercel serves the actual pages from its own global network. When the front needs fresh data from the back, they talk to each other through something called GraphQL, which is essentially a very polite, very efficient courier. If a million people visit at once, Vercel handles it. The WordPress server in the back doesn&#8217;t even know it&#8217;s happening.</p><h2>Apps (Docker + Isolated Private Networks)</h2><p>For the four WordPress sites I host for my wife and older daughter, plus the five apps I built myself, I created what is essentially a tiny private cloud on that same $60/year server. Every single app lives in its own sealed container, like individual storage units in a facility where none of the tenants can see each other, share a wall, or accidentally knock over someone else&#8217;s stuff. A traffic manager (again, Nginx Proxy Manager) stands at the front door and routes each visitor to exactly the right unit.</p><p>The five apps I built myself are things I&#8217;d otherwise have lived with in a more compromised way.</p><ul><li><p><strong>A link-in-bio page</strong>. Linktree would have been free, but with their ads plastered all over it.</p></li><li><p><strong>A group scheduling tool</strong>. Doodle&#8217;s free version would have done the job, also with ads.</p></li><li><p><strong>A private gratitude-sharing app for close friends and family</strong>. Some freemium thing with constant upgrade nudges would have technically worked.</p></li><li><p><strong>A tracker for my private lending activities</strong>. I was handling this in Excel. Awkwardly.</p></li><li><p><strong>An app that generates repeated fabric patterns</strong>. Marsha&#8217;s influence, not mine. I&#8217;m not sure there&#8217;s even a free alternative for this one.</p></li></ul><p>With all three of these setups now live, every time I vibe code a new feature, I just push the code to GitHub. The infrastructure automatically builds and deploys it in the background via Vercel or Docker while I make another pot of tea. That part is genuinely as satisfying as it sounds.</p><h1>The Hilarious Reality Check</h1><p>The irony is real. I took a system that was zero-maintenance, where IONOS handled the server updates, security patches, and backups, and I traded it for a system where I have to do all of that.</p><p>In terms of actual day-to-day utility, this setup gives everyone else involved almost nothing new. When people visit my sites, the text is the same, the buttons are the same, and the images are the same. My vibe-coded apps work exactly as they would on a simpler setup. The users have no idea they&#8217;re running inside sealed Docker containers on a $60/year server. And Marsha and my older daughter? I didn&#8217;t change their WordPress experience at all. They log in the same way they always have. They have absolutely no idea anything is different. In some sense, I built several nuclear reactors to power a collection of toasters. Nobody using the toasters noticed.</p><p>On the flip side, if a container hangs or a background code library breaks on a Saturday night, I can&#8217;t call customer support. I have to put down my beer, open a terminal, and debug lines of code just so our friends can read our annual Christmas letters.</p><h1>The Ultimate Silver Lining</h1><p>So why do it?</p><p>I am retired. Nobody is looking at my CV anymore. My occasional consulting business is just helping out friends&#8217; companies, and they certainly don&#8217;t care about my tech stack. Updating my resume with corporate buzzwords boasting about my hands-on experience at this point would be completely pointless.</p><p>So the real victory isn&#8217;t a career flex. It&#8217;s just the satisfaction of knowing I built the thing myself, on my own terms, for about the cost of a nice dinner. That&#8217;s retirement, I suppose. You finally have time to do things the hard way. Nobody can stop you and nobody needs to!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/overengineering-a-case-study/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/overengineering-a-case-study/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[One Wedding, Many Parties]]></title><description><![CDATA[On scattering a daughter&#8217;s celebrations across continents and why I&#8217;d recommend it, with one honest caveat]]></description><link>https://www.retiredpdx.com/p/one-wedding-many-parties</link><guid isPermaLink="false">https://www.retiredpdx.com/p/one-wedding-many-parties</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sat, 06 Jun 2026 18:01:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DAa-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.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_!DAa-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DAa-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DAa-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg&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;:625246,&quot;alt&quot;:&quot;Wedding day photo for Stephen Pao's older daughter&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/200919163?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Wedding day photo for Stephen Pao's older daughter" title="Wedding day photo for Stephen Pao's older daughter" srcset="https://substackcdn.com/image/fetch/$s_!DAa-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DAa-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5c6571-b1eb-4452-b534-7a3e374d6567_1600x1067.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 full Friday wedding group. Small by design, and exactly right. Photo by <a href="https://timankov.com/">Timankov Photography</a>.</em></figcaption></figure></div><p>Marsha and I have always had a soft spot for non-traditional weddings. We had a small, intimate ceremony ourselves, and we don&#8217;t regret the choice. So when our daughter started planning her own wedding, we were perhaps more open than most parents to formats that did not follow the usual script. What actually took shape surprised even us.</p><p>It was more logistically complicated and more scattered across the globe than anyone anticipated. Having now lived through it, it was also considerably better than any single-venue wedding could have been.</p><h1>How the Plan Kept Changing</h1><p>The original idea was a wedding in the UK. Our daughter and her now-husband both spent time at Oxford, at different points. He is from the UK, and he studied at Oxford as an undergraduate. She was there for her master&#8217;s degree. It felt like a natural home for a celebration. The problem was that it would have meant a transatlantic trip not only for most of our family, spread across the West Coast, Houston, and Las Vegas, but also for many of their friends who were also based across the US. That felt like a lot to ask of everyone.</p><p>So the plan evolved into a smaller wedding in the UK, with engagement parties in the US for the friends and family who could not easily make the trip. That felt workable, until it didn&#8217;t. Getting legally married in the UK involves residency requirements and potential visa complications. So the next idea was a civil ceremony in the US, followed by a celebration in the UK, but that started to feel performative and that idea faded too.</p><p>And then, almost by accident, the answer presented itself. The groom&#8217;s family was already planning to travel to Princeton for his doctoral hooding ceremony, and there was already an engagement party planned for that same trip. The couple looked at the calendar and thought: why not just get married then too, with a small ceremony for close family the same week? And that was that. The wedding found its own shape.</p><h1>The Implicit Division of Labor</h1><p>What emerged from all this back-and-forth was something nobody quite planned but that turned out to be genuinely elegant. Each family celebrated with their own community, on their own turf.</p><p>In December, the focus was on the groom. The couple hosted a party in the UK for his mother&#8217;s side of the family and some of his childhood friends from the neighborhood. It started at an Indian restaurant and, as good parties do, continued on and migrated back to our in-laws&#8217; home with all the relatives and childhood friends in tow. Marsha and I were not present for any of the international celebrations. It was a time strictly focused on the groom&#8217;s family and friends.</p><p>In March, the couple celebrated with family members based in the US. Our daughter organized a road trip across the US, with the couple spending a couple of days in each place. They started in Bellevue, Washington, where Marsha&#8217;s family is concentrated, with relatives from Washington and Oregon. Then they continued to Houston, where my mother and sister live, along with my cousins and our close family friends.  The last stop of that trip was Las Vegas, where we had a nice combination of Marsha&#8217;s family and some of my family in attendance. It was symbolically a nice way of ending the week.</p><p>And similarly, the groom&#8217;s parents were not present at any of the March parties in the US. We all came together in Princeton in June for the wedding itself.</p><p>Nobody explicitly negotiated this division. It emerged from doing what was logistically easiest for everyone. But in retrospect it was one of the smartest things about the whole format. Each family celebrated on familiar ground, with their own people, without the complexity of the other family being present. There was no divided attention, just each community getting its own moment with the couple.</p><h1>What the Format Made Possible</h1><p>Our family and friends are spread across multiple continents and have their own dynamics. A single event in one place would have forced everyone into the same room at the same time, which would not have been the ideal fit for our particular situation. The distributed format let people participate in the way that suited them best, at gatherings built around their own communities. For many, it was not only a celebration of the couple but a reunion of sorts. Our daughter organized each event around the people who mattered to that group, and everyone got their own version of the celebration.</p><p>There is also something that happens when a couple sits down with a smaller group of people who all know each other. The conversations go deeper and the couple actually gets to spend time with the people they love, rather than moving through a receiving line. At every one of these gatherings, our daughter and her husband got to be present with the people in the room, which is harder to pull off when the room has two hundred people in it.</p><h1>The Friday Wedding</h1><p>The ceremony itself was small by design, with just close family and the wedding party. I will be honest. I had a complicated day, as I wrote about in my last post. Having the ceremony be intimate and low-key was, under the circumstances, exactly right.</p><p>But beyond my particular situation, everyone genuinely seemed to have a good time. It was a beautiful day, and the food was excellent. It was not the rubber chicken of a traditional wedding banquet but the menu of a real farm-to-table venue chosen for a small group of people who were actually going to taste it. There is something to be said for feeding a small group of people really well.</p><h1>The Saturday Reception (and Laser Tag?!)</h1><p>The big celebration was the following day after a morning of outdoor laser tag. Yes, that&#8217;s right. Outdoor laser tag was on the schedule. And shout out to the father who captured the flag and won with seconds left on the clock! This is what can be done when the couple intimately knows each of the guests. The crowd included the couple&#8217;s Princeton friends and advisors, a few Oxford friends, former Yale advisors, Yale friends, parents of friends who came from as far as South Carolina and Alabama, and the family and close friends who had been at the wedding the day before. All of it took place in the downstairs of a popular Princeton restaurant called The Meeting House, with a full bar and a spread of flatbreads, charcuterie, and fancy crudites.</p><p>However, again knowing the crowd was mostly people in their late twenties on graduate student budgets, the couple made sure there were constant opportunities for food. They served pizzas after laser tag, Mediterranean in between laser tag and evening celebration, and more food at the evening celebration itself.</p><p>As a parent, the evening event was the one I enjoyed most. I got to meet the Princeton advisors I had only heard about, reconnect with Yale advisors who made the trip down, and spend time with friends whose names I had known for years without ever having met them in person. I was not worrying about whether relatives were having a good time. I, too, was  a guest in their world, and it was a genuinely wonderful feeling.</p><p>The after-party was at a divey bar called The Ivy, and we stayed until around 12:30am, still dressed up, until Marsha decided it had gotten too cold to continue. It was not exhaustion or the bar closing that ended the night, just the temperature. It felt like the right way to end the week.</p><h1>The Honest Tradeoff</h1><p>I have been mostly enthusiastic about this format, and I stand by that. But I want to be honest about what it cost.</p><p>Unfortunately, because the Friday wedding was very small and intimate, most of the people who celebrated with the couple were not there for the ceremony. They did not hear the vows. They did not see the toasts, which by all accounts were exceptional, delivered by the groom&#8217;s brother, the bride&#8217;s sister, and the bride&#8217;s best friend. They did not enjoy watching the couple&#8217;s friend officiate the ceremony or the bride&#8217;s Uncle&#8217;s speech during the ceremony. They did not see Marsha&#8217;s dress or her other wedding creations, which likely could have deserved their own post and probably their own gallery exhibit. The wedding photographer captured a beautiful record of the day, but it is a record most of the people who love this couple will never fully share.</p><p>Also, most of those who celebrated with the couple in the UK, Bellevue, Houston, and Las Vegas did not see the couple&#8217;s Princeton friend give his toast (and roast) Saturday night. He humorously had been lobbying to be best man for a full year to no avail. A week before the wedding, he caught the groom in a weak moment, and he secured the opportunity to give a speech at the Saturday reception. Both the writing and the delivery were epic.</p><p>The couple kept a book of Polaroids, snapshots from every gathering with little captions written by the guests. It is a lovely artifact and a genuine attempt to knit the whole distributed celebration into something unified, but it is not the same as being there.</p><p>There is also the matter of travel costs. Our daughter organized a lot of road trips and the couple spent more on travel than a single-venue wedding would have required. The tradeoff is that by avoiding one big wedding venue they were able to host everyone at real restaurants with real menus, without the wedding tax of a banquet hall. But the travel added up, in both cost and in bandwidth while they were finishing their doctoral dissertations.</p><p>What I keep coming back to, though, is a bar in Princeton at 12:30am with everyone still dressed up and Marsha finally declaring it too cold to stay, and the memory of so many people across so many gatherings who got their own real time with the couple, without having to compete with a hundred other people for their attention. It was truly a wedding about the couple, for the couple and spending time intimately with people that have meant so much to them.</p><p>Nobody planned it this way from the beginning. The format found itself, shaped by residency requirements and flight logistics and a doctoral hooding ceremony that happened to fall in the same week as an engagement party. But sometimes the accidental solution is the right one.</p><p>It was a good format. Even the parts that were complicated.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/one-wedding-many-parties/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/one-wedding-many-parties/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><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Some Role Reversal]]></title><description><![CDATA[Weddings, waiting rooms, and what it means to start feeling like the kids are taking care of me!]]></description><link>https://www.retiredpdx.com/p/some-role-reversal</link><guid isPermaLink="false">https://www.retiredpdx.com/p/some-role-reversal</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Tue, 02 Jun 2026 05:53:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YHN8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.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_!YHN8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YHN8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YHN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg" width="1456" height="1040" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/509572e1-991f-41d8-b235-9f4913543878_2970x2121.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;:2854376,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.retiredpdx.com/i/200247734?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YHN8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YHN8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F509572e1-991f-41d8-b235-9f4913543878_2970x2121.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 newlyweds with their siblings, after the ceremony. Photo by author.</em></figcaption></figure></div><p>We just flew home last night after a week on the East Coast, and I&#8217;ve been spending the day with jet lag, trying to figure out how to write about these past few days. There was so much happening that when I started to outline this post, I kept feeling there were so many stories nested inside another! There may be some follow-on posts here, but I thought I&#8217;d start with an interesting transition that started with a moment of minor panic for me.</p><h1>An Unexpected Visit to the ER</h1><p>The morning of our older daughter&#8217;s wedding, I woke up in the middle of the night with oozing and spreading blisters on my hands. What started as a minor case of ring rash from the hot weather was becoming really uncomfortable and looking pretty gross. Based on my medical history with chronic disease (CKD and diabetes), I decided it needed to be looked at. I have experience with ordinary viruses like the flu ending up in pneumonia. I&#8217;ve just learned after all these years that I need to be extra careful.</p><p>So at 4am, I let Marsha know I was going to head to the ER because urgent care didn&#8217;t open until 8am, and I didn&#8217;t want to miss the wedding later that morning! Unfortunately, the ER was packed. The triage nurse told me that given the backlog, there was no way I was going to make the wedding, so she and her colleague advised me to come back afterwards.</p><p>So that was the plan. I was just going to go to the wedding and ride share to urgent care afterwards, hoping to avoid the mess at the ER. As we were getting ready for the wedding to start, I let our daughter (the bride)  know my plan, and she insisted on taking charge once the (successful!) wedding and lunch reception ended.</p><p>After we all changed out of our wedding attire, our new son-in-law drove me and Marsha first to urgent care, and then, after urgent care referred me back to the ER, he dropped us off there so he could join their out-of-town guests for a small open house at their apartment. Marsha was with me in the waiting room for five hours. At the direction of our daughter, her friend, who also happened to be the wedding officiant, drove over extra clothes for the cold waiting room, phone chargers, and even food. We were well taken care of.</p><p>When their guests left, our daughter even offered to join us in the waiting room for moral support. Marsha and I declined, but our daughter&#8217;s offer reinforced an important shift I had been feeling all week. We were being so well taken care of by the next generation.</p><h1>Logistics and Tolerance for Chaos</h1><p>The week started five days earlier with our son-in-law&#8217;s doctoral hooding ceremony. He received his PhD in the same week he got married, which worked out to be convenient because his family was already planning to travel from the UK to attend the graduation festivities. The plan also demonstrated a strong tolerance for chaos on their part. Our daughter, who is also finishing her doctorate, elected to defend her thesis on a different date to better align with the start of her next position as an assistant professor at a state university in August. So she was in the crowd seated with the rest of us, cheering for him, but also taking care of all the spectator logistics for us and the rest of his family. We were well fed, and transportation to all the events was well coordinated the whole week.</p><p>Our soon to be son-in-law&#8217;s family arrived from the UK at the beginning of the week. In fact, they landed just a couple of hours ahead of us at Newark. In attendance were his parents, his brother and sister-in-law with their young son, and his maternal grandmother. A few days later, his best friend, his paternal grandmother, and her partner made the trip as well. What struck me immediately was how easy it all was for me and Marsha.</p><p>We&#8217;d already met his immediate family before. Marsha and I had spent a week with our daughter, our future son-in-law, and his parents in an Airbnb in the English countryside two Christmases ago. The six of us played board games, had meals together, and wandered through small adjacent towns in the cold. By the time we were all assembled last week, it felt less like meeting the other family and more like picking up where we left off.</p><h1>Friends for Life</h1><p>In the middle of the week, Marsha and I slipped away to New York City for a day. We went to a few stores we don&#8217;t have in Portland, including Uniqlo, Mood Fabrics, and the MoMA Design Store. We got a tour of the new JPMorgan Chase headquarters, which is genuinely impressive.</p><p>But the highlight for me was spending an evening with two of my closest friends from my time at MIT which is now over 35 years ago! We caught up on where we all are in life, with all the texture of being in our late fifties, including aging parents, relationships, even the early talk of retirement.</p><p>The contrast hit me as I reflected on the difference in life stages between us and most of the cohort I was encountering all week. In meeting our daughter&#8217;s friends from her undergraduate, graduate, and emerging professional network, the conversations were all about completing education, new jobs, and moving to new places. I suppose that was a different version of where my friends and I were over 30 years ago. And it was fun for me to think about how the people in her life today will still be in her life 30 years from now, just as my old college friends are still so much a part of mine. My MIT friends are, in that sense, the proof of concept.</p><h1>New Friends Among Parents</h1><p>One of the more surprising things about the week was the instant community that formed among the parents of their friends who attended. While I had met some of them in the past, I&#8217;d expected to simply exchange pleasantries with a few people I&#8217;d never met. What I didn&#8217;t expect was how quickly we all took to each other. Parents from South Carolina, Alabama, New York, and the UK were technically strangers but also a self-selecting group of people who had children that attended demanding schools and stayed genuinely involved as their children transitioned into &#8220;grown ass&#8221; adults (as Marsha and I would say&#8230;). We, the parents all shared a set of common experiences before we ever met.</p><h1>Intentionality, and the Kids Investing in Us</h1><p>What I keep coming back to, though, is how different this feels from my own relationship with my parents at this age. Our daughter and her husband have invested a lot to ensure we get to know the people that now form and shape their community. They engineered that English countryside week specifically so our families could really know each other before their married lives began. They invited their friends&#8217; parents to help them celebrate and made space for them to meet their wider community. They introduced us to their advisors, their colleagues, and the people who matter in their lives. This isn&#8217;t obligation. It&#8217;s intention. They are curating the village they want around them, and they&#8217;re including us in it.</p><h1>Made by Hand</h1><p>I haven&#8217;t mentioned yet what might be the quiet center of the whole week.</p><p>Marsha made our daughter&#8217;s wedding dress. It wasn&#8217;t her first. She made her own wedding dress at age 28, though she&#8217;d be the first to say her skills have come a long way since then. She also made our son-in-law&#8217;s tie and pocket square, her own top and skirt, and a matching pocket square for me. And then there were the hair pieces. Marsha incorporated fabric from her own mother&#8217;s wedding dress, her own wedding dress, and our daughter&#8217;s new dress into hair pieces that both she and her younger sister wore that day. The five of us walked into that wedding visually connected by what Marsha&#8217;s hands had made, and our daughter got married with artifacts spanning three generations of her family with her.</p><p>And then, later that same night, after we had all changed out of our wedding attire, my son-in-law drove me to urgent care and then to the ER. Just hours earlier, he had worn that Marsha-made tie to get married. He is the kind of person who shows up when it counts, even if the details along the way might feel a bit overwhelming at times.</p><h1>The Shift: The Kids Are Taking Care of the Parents</h1><p>Marsha and I sat in that ER waiting room for five hours. At some point, her friend arrived with warm clothes, phone chargers, and food. Our daughter had arranged all of it. Her new husband had driven us there and now her friend, wedding officiant and chosen family member was a part of the support team taking care of us.</p><p>As a parent, I&#8217;m used to taking care of the kids. Sitting in that waiting room, I found that I could just let things happen. The kids had our backs. We were okay. We were more than okay, we were being looked after by a team of caring people. We received texts from multiple of the newlyweds&#8217; friends and parents. We had others not even having met us offer to sit with us in the waiting area. It was truly remarkable and speaks to the community of people that they have built around them.</p><p>The infection turned out to be manageable. I missed a couple of events during the week, including a &#8220;welcome&#8221; open house for out-of-town guests and a blow-out outdoor laser tag event, but I made it to almost everything that would be considered a headline event, including the hooding, the commencement, the wedding, the big party, the after-party, and even the after-after-party. The ER visit was a blip, medically speaking. I left with two tubes of cream.</p><p><em>(Note: Marsha might agree that getting two tubes of cream was a &#8220;win.&#8221; Still, she felt a bit cheated by the experience of waiting five hours in rather harsh conditions with little payback. She reflected on the seemingly freezing temperatures in the waiting room, the exposure sitting next to a boy being swabbed in the throat and nose, and being stopped multiple times by the same security officer as if he had never seen her before. She felt like the least the ER staff could do was hook me up to a machine for show, arguing that really any machine would do, with bonus points for a machine that might push me around the hospital for a short spin. Unfortunately for her, there was no such fun. Still, I think she has fully recovered!)</em></p><p>Anyway, while the ER experience was a blip, it didn&#8217;t feel like a blip. It felt like something quietly shifting. The week was full of transitions for the newlyweds, including a doctorate, a marriage, and new jobs on the horizon. And I had one of my own. I recognize that the children we raised are now adults, and they are people, who are now taking care of us, too.</p><p>It was a good week. Even the parts that weren&#8217;t.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/some-role-reversal/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/some-role-reversal/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>]]></content:encoded></item><item><title><![CDATA[What Real Data Does to Vibe Coding]]></title><description><![CDATA[Building a private lending tool, and what it taught me about transitioning from a spreadsheet]]></description><link>https://www.retiredpdx.com/p/what-real-data-does-to-vibe-coding</link><guid isPermaLink="false">https://www.retiredpdx.com/p/what-real-data-does-to-vibe-coding</guid><dc:creator><![CDATA[Stephen Pao]]></dc:creator><pubDate>Sun, 17 May 2026 13:03:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uOfK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_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_!uOfK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uOfK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uOfK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e222d58f-c794-4f6e-b512-1a1851fc1dc7_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;:2457844,&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/198051858?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_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_!uOfK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uOfK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe222d58f-c794-4f6e-b512-1a1851fc1dc7_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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 numbers were in the cells. The terms weren&#8217;t. . Image generated by<a href="https://designer.microsoft.com/"> Microsoft Designer</a>, prompted by the author.</em></figcaption></figure></div><p>By the time I built a loan management app for my private lending portfolio, vibe coding had stopped feeling like a novelty to me. I had already built<a href="https://www.retiredpdx.com/p/an-accidental-ai-convert"> LinkHill</a> because LinkTree annoyed me,<a href="https://www.retiredpdx.com/p/vibe-coding-in-practice"> Hillmeet</a> because Doodle didn&#8217;t have an MCP gateway,<a href="https://www.retiredpdx.com/p/building-a-gratitude-app-i-wanted"> Thankhill</a> because Gratitude Plus wouldn&#8217;t stop upselling me, and a<a href="https://www.retiredpdx.com/p/on-repeating-patterns"> fabric pattern generator</a> because image AI couldn&#8217;t lay down kanji characters precisely enough for textile printing</p><p>If you&#8217;ve read my earlier pieces on this, you know the pattern. Find something that doesn&#8217;t fit, build exactly what does, stop there.</p><p>What was different about the lending app was not the motivation. The motivation was the same. What was different was that this time I had years of real, messy data that predated the app, and getting that data right turned out to be the hardest part of the whole project.</p><h1><strong>My old spreadsheets were getting stale</strong></h1><p>I manage a small portfolio of private construction loans across multiple entities. The loans aren&#8217;t all the same. Some are interest&#8209;only, some prepaid, some amortizing. The spreadsheet had no real model for any of that.</p><p>I had been tracking everything in a spreadsheet for years. It worked in the way spreadsheets always work. It evolved. Over time, it also accumulated evidence of that evolution. In my case, that evidence showed up as comments.</p><p>The spreadsheet stopped being a system and became a place where I stored numbers and carried the meaning in my head. When I added new loan types, I didn&#8217;t restructure anything. I just pushed the missing pieces into comments. Month after month, I found myself annotating cells to explain what the numbers actually meant. It worked until it didn&#8217;t.</p><h1><strong>The recurring friction</strong></h1><p>Each month I receive one payment per loan and have to confirm it&#8217;s correct. Before the app, that meant mental math or digging through the spreadsheet. Now the app pre&#8209;calculates what each payment should be. I confirm and move on. That improvement alone would have justified building something.</p><p>However, the moment that crystallized the problem was tax season. Each entity issued its own 1099&#8209;INT, and I had to reconstruct a full year of payments to separate principal from interest across loans and entities. That was the same split I had been tracking in comments. I realized I hadn&#8217;t actually modeled the data. I had been approximating it.</p><p>A month later, I started vibe coding an app.</p><h1><strong>Why commercial software was not the answer</strong></h1><p>I looked at dedicated loan servicing software the same way I had looked at commercial gratitude apps. These packages are built for someone else.</p><p>The loan servicing category serves mortgage servicers processing large volumes across many borrowers. I have one borrower relationship and one question I need answered every month. I need to know the net spread between what I earn on the loans and what I pay on the lines of credit that fund them.</p><p>I couldn&#8217;t find an off&#8209;the&#8209;shelf product that modeled my situation. Building from scratch took a few days. Configuring something general&#8209;purpose into shape would have taken longer and still not quite fit.</p><h1><strong>What made this project harder</strong></h1><p>The hard part wasn&#8217;t writing the app. It was reconciling the reality my old spreadsheet had been approximating.</p><p>With Thankhill, there was no prior history. We started journaling and the app captured it from day one. With this lending app, I had years of activity that predated the system. Getting it right meant going back to original contracts, matching deposits to bank records, and aligning every payment to the right loan, entity, and period.</p><p>That process surfaced something I had been glossing over.</p><p>With the app, March 2026 shows zero income in the monthly report. That is correct. In late March, a batch of checks was stolen in the mail, cancelled, and reissued on April 2nd. My old spreadsheet tracked the month a deposit corresponded to, which would have placed those payments in Q1. The app records actual deposit dates, which places them in Q2.</p><p>My tax advisor and I work on a cash basis. The old approach was silently wrong in a way I had never been forced to confront.</p><p>The other thing I did differently this time was verify the interest calculations by hand before trusting the app with anything real. A vibe&#8209;coded financial tool can be wrong in ways that are hard to notice until the number matters. I checked the math carefully against known figures. It was correct. But that step wasn&#8217;t optional.</p><h1><strong>Where it stands</strong></h1><p>The app generates payoff statements in a few clicks and reports principal, accrued interest broken out by period, total due, and a daily interest rate. It used to be a manual calculation done under time pressure.</p><p>The monthly report shows interest income, line of credit cost, and net spread side by side. March is negative. The app says so clearly, which is exactly what I wanted.</p><p>Through all of this, the build versus buy question ended up being the least interesting part. The app came together quickly. The harder work was confronting all the quiet assumptions my spreadsheet relied on me to carry.</p><p>Vibe coding made it easy for me to build something that felt right. Real data forced me to make it actually correct.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/what-real-data-does-to-vibe-coding/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/what-real-data-does-to-vibe-coding/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><hr></div><p><em>Editor&#8217;s note: In reading this, Marsha did make the very good point about my use of AI. Even though the AI did a good job analyzing my old spreadsheet and correctly calling out the loan types from the spreadsheet comments, it left out, without my realizing it, one of the loan types in the spec as it was constructing the development plan. Once it had built the user interface, I asked it what happened, and AI told me that it simplified the spec to get me started quickly. But then, when I started adding back the missing loan type, the perfectly working MVP started unexplainably breaking! Frustrated, I went to bed and tackled the missing loan type with my AI agent the next day! Marsha felt it was important to relay this point to anyone who thinks that AI is unadulterated magic. It&#8217;s magic, for sure, but it can go wrong when the user (in this case, yours truly) is not paying attention!</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/what-real-data-does-to-vibe-coding/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/what-real-data-does-to-vibe-coding/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><hr></div><p><em>P.S. I am also pasting in the conversation I had with Claude AI after finishing this app to ask if I did the right thing.</em></p><h4><em><strong>Me:</strong></em></h4><p>Given that I didn&#8217;t use you to help write it, I wanted an objective analysis on why this was a good candidate for vibe coding. I found that the AI who used to help me write it was a bit syncophantic about why this was done so well, so I wanted to go to you (because you weren&#8217;t involved). Here are some more screens. Tell me what is right about this (and what is wrong about this), as I&#8217;d like to share this experience with others. Also, without my telling you, how long do you think it would take a reasonably decent vibe coder to build, debug, and get all the data into a tool like this?</p><h4><em><strong>Claude:</strong></em></h4><p><strong>Why this was a genuinely good candidate:</strong></p><ul><li><p><strong>No commercial fit.</strong> The LOC-funded lending spread model &#8212; borrow from JPM/NTRS at one rate, lend at a higher rate, track net income &#8212; isn&#8217;t a standard product category. You&#8217;d be fighting software designed for mortgage servicers or simple bookkeeping.</p></li><li><p><strong>Contained, stable domain.</strong> Private lending rules (interest accrual, payoff math, amortization) are precise and don&#8217;t change shape. AI coding works best when you can describe the rules clearly, and loan math is describable.</p></li><li><p><strong>CRUD-heavy with isolated complexity.</strong> Most of the app is standard database operations. The hard parts (interest calculation, payoff generation) are small and isolatable &#8212; which is why you could verify them manually.</p></li><li><p><strong>The PDF payoff statement is the killer justification.</strong> That one feature alone &#8212; automatically generating a formatted letter from structured loan data &#8212; is genuinely painful in Excel and easy to describe to an AI.</p></li><li><p><strong>Single user, single borrower.</strong> No multi-tenancy, no permissions model, no scale concerns. Scope was tight enough to describe completely.</p></li></ul><p><strong>What&#8217;s legitimately questionable:</strong></p><ul><li><p><strong>No audit trail.</strong> Financial records ideally should be append-only with history. If someone edits a past cash event, there&#8217;s no log. This is the most serious structural gap &#8212; not a vibe coding criticism specifically, but something that gets missed without deliberate attention.</p></li><li><p><strong>Dependency rot is coming.</strong> Whatever versions of npm packages, frameworks, and runtime were used at build time will have vulnerabilities and breaking changes in 2-3 years. Nobody is maintaining this. Spreadsheets don&#8217;t have this problem.</p></li><li><p><strong>Raw IDs in the UI</strong> (Loan ID 11, Entity ID 4, etc.) are a tell of vibe-coded origins &#8212; fine for a personal tool, but worth noting.</p></li><li><p><strong>March 2026 showing -$8,004</strong> &#8212; either correct (LOC interest accruing with no payments received) or a data gap. Hard to know from the outside, but it&#8217;s the kind of anomaly that warrants a clear explanation in the tool itself.</p></li><li><p><strong>Hosting/security assumptions</strong> &#8212; a sign-in screen exists, but where is this running? Financial data in a personally-maintained web app has a different risk profile than a spreadsheet on your local machine.</p></li></ul><p><strong>Time estimate for a reasonably competent vibe coder:</strong></p><p>I&#8217;d estimate <strong>20&#8211;35 hours of active work</strong>, probably spread over 2&#8211;3 weeks part-time. Breakdown:</p><ul><li><p>Data model / schema design: 3&#8211;5 hours (getting borrower &#8594; entity &#8594; loan &#8594; cash event relationships right is the conceptual hard part)</p></li><li><p>CRUD for all entities: 4&#8211;6 hours</p></li><li><p>Interest/payoff calculation and debugging: 5&#8211;8 hours (this is where time goes &#8212; edge cases like partial periods, day-count conventions)</p></li><li><p>Report aggregation: 2&#8211;4 hours</p></li><li><p>PDF generation: 2&#8211;3 hours</p></li><li><p>Auth: 1&#8211;2 hours</p></li><li><p>Data entry (migrating real loan history): 2&#8211;4 hours</p></li><li><p>Debugging and polish: 3&#8211;5 hours</p></li></ul><p>The calculation debugging is the long pole. Everything else moves fast with AI assistance.</p><h4><em><strong>Me:</strong></em></h4><p>You got the level of work correctly. Do you think this was worth doing over just using the different spreadsheets it replaced?</p><h4><em><strong>Claude:</strong></em></h4><p>Yes, but the answer depends on one specific thing: <strong>how often you generate payoff statements.</strong></p><p>If payoff statements are frequent &#8212; and from the loan count it looks like they would be &#8212; that alone probably justifies it. Generating an accurate, professionally formatted payoff letter manually from spreadsheets every time is error-prone and tedious. Getting it wrong has real consequences.</p><p>The second justification is the <strong>report</strong>. The monthly net spread view (interest in minus LOC cost) across all loans simultaneously is exactly the kind of thing that&#8217;s painful to maintain correctly in spreadsheets once you have 11 active loans across multiple funding sources. Keeping that accurate in Excel requires discipline that&#8217;s easy to slip on.</p><p><strong>Where spreadsheets would have been fine:</strong></p><ul><li><p>Loan tracking at this scale (11 loans) is honestly manageable in a well-structured spreadsheet</p></li><li><p>Data entry is actually <em>slower</em> in a custom app than in Excel for someone comfortable with spreadsheets</p></li><li><p>The entities/borrowers structure adds overhead that doesn&#8217;t matter much with one borrower</p></li></ul><p><strong>My honest take:</strong> The payoff statement + the report together justify it. If you were only tracking loans and not generating payoff letters or the net spread report, I&#8217;d say the spreadsheet was probably good enough. But those two outputs &#8212; especially the payoff letter &#8212; are where the app earns its keep every time you use it.</p><p>How often do you generate payoff statements?</p><h4><em><strong>Me:</strong></em></h4><p>The loans are designed to each be 12-15 months in length.</p><h4><em><strong>Claude:</strong></em></h4><p>Then it&#8217;s clearly worth it. With 11 active loans averaging 12-15 months, you&#8217;re generating roughly <strong>8-11 payoff statements per year</strong> &#8212; probably more since loans get refinanced (you already have loan 14 as &#8220;19960 SW Cascadia St before refi,&#8221; showing at least one refinance cycle).</p><p>Each payoff statement done manually from spreadsheets would require:</p><ul><li><p>Looking up the exact last payment date</p></li><li><p>Calculating partial period interest correctly</p></li><li><p>Formatting a professional letter</p></li><li><p>Getting the math right under time pressure (payoffs are usually requested when a closing is imminent)</p></li></ul><p>Getting that wrong &#8212; even by a day&#8217;s interest &#8212; creates friction at closing. The app eliminates that entirely.</p><p>The report is a secondary but real benefit as portfolio size grows. At 11 loans across two funding sources, the mental overhead of tracking net spread manually is non-trivial.</p><p><strong>The honest verdict for sharing with others:</strong> This is a textbook good vibe coding candidate because the ROI accrues on a predictable, recurring workflow (payoff statements) rather than being a one-time convenience. The test I&#8217;d suggest others apply: <em>&#8220;Is there a specific output this app generates, repeatedly, that would be error-prone or time-consuming to produce manually?&#8221;</em> If yes, build it. If the app is just a fancier way to look at data you could see in a spreadsheet, probably don&#8217;t.</p><h4><em><strong>Me:</strong></em></h4><p>Good analysis. So the question here is how a large language model AI can come up with something like this. Obviously, as a human stuck in these workflows, I decided to build it for these very reasons. I don&#8217;t quite understand how an AI was able to determine this just based on looking at the screens and asking how long the loan terms are.</p><h4><em><strong>Claude:</strong></em></h4><p>The honest answer is that I&#8217;m pattern-matching against a large amount of human knowledge, not reasoning from first principles.</p><p>What actually happened in this conversation:</p><ul><li><p>The screenshots gave me the data model and workflow structure</p></li><li><p>&#8220;Private lending,&#8221; &#8220;payoff statements,&#8221; &#8220;LOC interest out&#8221; are terms that appear extensively in real estate finance literature, legal documents, accounting discussions &#8212; I&#8217;ve seen many contexts where these workflows are described and their pain points discussed</p></li><li><p>The loan count and term length let me do simple arithmetic (11 loans &#215; ~1 per 12-15 months = obvious payoff frequency)</p></li><li><p>&#8220;Payoff statements at closings are time-sensitive and error-prone&#8221; is documented human experience I&#8217;ve absorbed, not something I derived</p></li></ul><p><strong>What I didn&#8217;t do:</strong></p><ul><li><p>Actually understand your workflow from the inside</p></li><li><p>Know anything about the specific friction you experienced with spreadsheets</p></li><li><p>Reason from business principles to conclusions</p></li></ul><p><strong>What&#8217;s interesting about your observation:</strong> You, as the human in the workflow, knew immediately why to build it. I reconstructed <em>roughly</em> the same conclusion from the outside by recognizing patterns. But I could easily have been wrong &#8212; if your loan terms were 5 years instead of 12-15 months, the payoff frequency argument collapses and my conclusion would have been weaker.</p><p>The AI got lucky that the key variable (loan term) confirmed the pattern. Your domain judgment was the real insight. I just reflected it back coherently.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.retiredpdx.com/p/what-real-data-does-to-vibe-coding/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/what-real-data-does-to-vibe-coding/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[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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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></channel></rss>