<?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[Code Like A Little Old Lady]]></title><description><![CDATA[Engineering judgment, depth over speed, and what actually holds after the hype fades.]]></description><link>https://www.codelikealittleoldlady.com</link><image><url>https://substackcdn.com/image/fetch/$s_!_bhl!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08bf58a0-707e-41d2-8c87-0f462d6bdad9_635x635.png</url><title>Code Like A Little Old Lady</title><link>https://www.codelikealittleoldlady.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 15 Nov 2026 15:49:20 GMT</lastBuildDate><atom:link href="https://www.codelikealittleoldlady.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Code Like A Little Old Lady]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[codelikealittleoldlady@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[codelikealittleoldlady@substack.com]]></itunes:email><itunes:name><![CDATA[Code Like A Little Old Lady]]></itunes:name></itunes:owner><itunes:author><![CDATA[Code Like A Little Old Lady]]></itunes:author><googleplay:owner><![CDATA[codelikealittleoldlady@substack.com]]></googleplay:owner><googleplay:email><![CDATA[codelikealittleoldlady@substack.com]]></googleplay:email><googleplay:author><![CDATA[Code Like A Little Old Lady]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Custom Finish Sounds for Claude Code and Codex]]></title><description><![CDATA[Separate alerts for live sessions and for my self-hosted GitHub runner, with the steps]]></description><link>https://www.codelikealittleoldlady.com/p/custom-finish-sounds-for-claude-code</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/custom-finish-sounds-for-claude-code</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Wed, 11 Nov 2026 16:02:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DquN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.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_!DquN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DquN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DquN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DquN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DquN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DquN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3275366,&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.codelikealittleoldlady.com/i/224116195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.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_!DquN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DquN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DquN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DquN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2026ebc-b2f5-44da-91fc-85d461fd3c54_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I tend to multitask. Yes, I know they have shown we&#8217;re less efficient when we do, but my brain likes to hop around. Well, until it finds a rabbit hole full of something particularly sparkly. Then I become oblivious to everything around me.</p><p>Right now I have four different projects open in VS Code on my desktop, and I hop back and forth between them. I also have Lovable going and GitHub open in different web browsers. Knowing when something finishes lets me keep things moving along.</p><p>Until recently I kept the sound turned off on my devices. When working in a shared space, it was just rude to have Teams dinging every 15 seconds. I also have the ringer on my phone off. And honestly, it&#8217;s because I like the quiet. I used to put in Loops as well.</p><p>But now it&#8217;s a bit different. I&#8217;m at home. The only ones I can disturb are my family. My husband can&#8217;t hear most of the noises from my devices, so he&#8217;s not bothered by them. And often my daughter has ear buds in, listening to music or YouTube. So I&#8217;m less concerned about disturbing anyone.</p><p>I had turned on sounds in desktop Claude and ChatGPT while I was digging deeply into a data issue. It kept me from forgetting to check something for an hour. Very helpful. The other night I realized I wasn&#8217;t getting notices and sounds from Claude and Codex when they finished something. In VS Code. I decided to understand why.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!899M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!899M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 424w, https://substackcdn.com/image/fetch/$s_!899M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 848w, https://substackcdn.com/image/fetch/$s_!899M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 1272w, https://substackcdn.com/image/fetch/$s_!899M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!899M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:502053,&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.codelikealittleoldlady.com/i/224116195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.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_!899M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 424w, https://substackcdn.com/image/fetch/$s_!899M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 848w, https://substackcdn.com/image/fetch/$s_!899M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 1272w, https://substackcdn.com/image/fetch/$s_!899M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d62b614-1a0e-4b36-985e-8e4bfb000593_2394x1594.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">My layout in VSCode, Claude on the left, Codex on the right.</figcaption></figure></div><p>My first try, I added different sounds for Lovelace and Rowan. That way I would know which one had completed. These sounds are different from my desktop sounds: Glass for Lovelace and Sosumi for Rowan. Lovable had its own sound. So now I could have Rowan (Codex) creating a set of images while Lovelace (Claude) was writing test cases and Sully (Lovable) was building out my site. It was awesome.</p><p>Then came the runner. I have a project that has let me learn some new-to-me things. In this case, a self-hosted GitHub runner. When something happens in GitHub, like a new issue or a label change, a workflow can start a job. A runner is the computer that runs that job. GitHub provides its own, but you can register your own computer instead. Mine is my MacBook.</p><p>I&#8217;m doing this so I can drive a series of work from a GitHub Issue, passing work back and forth between my AI thinking partners. The runner uses a terminal on my Mac and the command line tools to send prompts to my thinking partners to do my work. Because it runs on my machine, it uses my setup: my logins, my settings, and my sounds.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_b2Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_b2Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 424w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 848w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 1272w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!_b2Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png" width="1456" height="924" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:924,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154823,&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.codelikealittleoldlady.com/i/224116195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.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_!_b2Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 424w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 848w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 1272w, https://substackcdn.com/image/fetch/$s_!_b2Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c02996a-0a20-46c4-aefc-84f12972e0f6_1462x928.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">GitHub issue outlining the work handoffs</figcaption></figure></div><p>Which made me wonder, am I getting notices from the runner too? It seemed like I was, and the times matched up to the events in GitHub. So I decided the runner needed to be distinct.</p><p>I used the Mac&#8217;s <code>say</code> command to create &#8220;Lovelace is done&#8221; and &#8220;Rowan is done.&#8221; This way I know a step in my runner has completed and the next step is starting. My runner also has GitHub notifications, so if there is an issue, I hear a finish followed by a problem message from GitHub.</p><p>My next experiment is including Sullivan (Lovable). I already point Sully to an issue for Sully to do the work. Next is telling Sully to check again when it&#8217;s their turn. I have ideas.</p><p>In the meantime, here are the steps I used to create these sounds on my MacBook. Lovelace compiled them from the couple of sessions where we made these tweaks. I hope you find them helpful.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p></p><h2>Why a sound helps</h2><p>Here&#8217;s what each sound means:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aV_e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aV_e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 424w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 848w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 1272w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!aV_e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png" width="1010" height="284" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:284,&quot;width&quot;:1010,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47506,&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.codelikealittleoldlady.com/i/224116195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.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_!aV_e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 424w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 848w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 1272w, https://substackcdn.com/image/fetch/$s_!aV_e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7811b003-f3e2-495b-9b2e-8d8a31beed17_1010x284.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A chime means someone I&#8217;m working with is ready. A spoken name means a background run finished a step, and tells me whose. Each sound also pops up a small notification, in case I&#8217;m out of earshot.</p><p><strong>Where this works:</strong> on a Mac, with the agents running in VS Code, which is where I use them. The same settings also work when the agents run in Terminal. The Claude and Codex desktop apps are different: they have their own notification settings, so look in each app&#8217;s settings instead. Setup takes about ten minutes.</p><h2>Claude Code in VS Code</h2><p>Claude Code runs a command of your choice at set moments, called hooks. Two hooks do the job here:</p><ul><li><p><strong>Stop</strong> runs when Claude finishes its reply.</p></li><li><p><strong>Notification</strong> runs when Claude needs you, such as to approve a step.</p></li></ul><p>The hooks go in your settings file, <code>~/.claude/settings.json</code> in your home folder. Settings there apply to every project, in VS Code and in the terminal. Add a <code>"hooks"</code> section like this one (if the file already has settings, keep them and add this beside them):</p><pre><code><code>{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "if [ -n \"$GITHUB_ACTIONS\" ]; then osascript -e 'display notification \"Lovelace finished a runner stage\" with title \"Go runner\"'; afplay ~/Library/Sounds/LovelaceDone.aiff; else osascript -e 'display notification \"Lovelace has finished\" with title \"Lovelace\" sound name \"Glass\"'; fi 2&gt;/dev/null || true"
          }
        ]
      }
    ],
    "Notification": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Lovelace needs your attention\" with title \"Lovelace\" sound name \"Ping\"' 2&gt;/dev/null || true"
          }
        ]
      }
    ]
  }
}</code></code></pre><p><code>osascript</code>, the Mac&#8217;s built-in way to run a small script, shows the notification. In a live session it also plays the Glass or Ping chime. When the <code>if</code> sees an unattended run or runner (see Live sessions and unattended runs, below), it shows a different notification and <code>afplay</code> plays a spoken sound I made (see Your own sounds). The <code>|| true</code> at the end means a failed sound never gets in Claude&#8217;s way. Swap in your own agent&#8217;s name and sounds.</p><p>You don&#8217;t have to edit the file yourself. You can ask Claude: &#8220;Play the Glass chime with a notification when you finish and Ping when you need my attention, but in GitHub Actions play my LovelaceDone sound instead.&#8221; It knows how to add the hooks. If you don&#8217;t hear anything after a change, start a new session.</p><h2>Codex in VSCode</h2><p>Codex has one setting for this, <code>notify</code>. It runs a program each time Codex finishes a turn. It has no separate &#8220;needs you&#8221; moment, so Codex gets one sound.</p><ol><li><p>Make a small script, <code>~/.codex/notify-rowan.sh</code>:</p></li></ol><pre><code><code>#!/bin/sh
# Codex runs this when it finishes a turn.
if [ -n "$GITHUB_ACTIONS" ]; then
  osascript -e 'display notification "Rowan finished a runner stage" with title "Go runner"' &gt;/dev/null 2&gt;&amp;1
  afplay ~/Library/Sounds/RowanDone.aiff &gt;/dev/null 2&gt;&amp;1
else
  osascript -e 'display notification "Rowan has finished" with title "Rowan" sound name "Sosumi"' &gt;/dev/null 2&gt;&amp;1
fi
exit 0</code></code></pre><ol><li><p>Let it run, in Terminal: <code>chmod +x ~/.codex/notify-rowan.sh</code></p></li><li><p>Point Codex at it, in <code>~/.codex/config.toml</code>, near the top of the file (outside any <code>[section]</code>):</p></li></ol><pre><code><code>notify = ["/Users/yourname/.codex/notify-rowan.sh"]</code></code></pre><ol><li><p>Use your full path: <code>~</code> doesn&#8217;t work here.</p></li><li><p>Restart Codex.</p></li></ol><p><strong>Check for an existing </strong><code>notify</code><strong> line first.</strong> Codex allows only one, and another tool may already use it. Mine was set by Codex&#8217;s own Computer Use feature. Don&#8217;t replace it: copy its command into the top of your script, so both run. Otherwise that feature quietly stops working.</p><h2>Picking your sounds</h2><p>Use a different sound for each agent and each moment, so you can tell them apart by ear. A Mac comes with 14 alert sounds:</p><p>Basso, Blow, Bottle, Frog, Funk, Glass, Hero, Morse, Ping, Pop, Purr, Sosumi, Submarine, Tink.</p><p>To hear one, type this in Terminal, with the name you want:</p><pre><code><code>afplay /System/Library/Sounds/Sosumi.aiff</code></code></pre><p>A bright sound for &#8220;finished&#8221; and a softer one for &#8220;needs you&#8221; works well. A notification plays a built-in sound by name, as in the examples above: <code>sound name "Glass"</code>, with the name as listed and no <code>.aiff</code>.</p><h3>Your own sounds</h3><p>You aren&#8217;t limited to the 14. A notification&#8217;s own <code>sound name</code> plays only the Mac&#8217;s built-in sounds: I tried my own, and got the notification in silence. So keep your own sound files in the <code>Sounds</code> folder of your Library, and play them with <code>afplay</code> beside the notification.</p><p>The easiest custom sound is a spoken one. The Mac&#8217;s <code>say</code> command saves words straight to an AIFF file, with no download or conversion:</p><pre><code><code>mkdir -p ~/Library/Sounds
say -v "Tara (English (India))" -o ~/Library/Sounds/LovelaceDone.aiff "Lovelace is done"
say -v Moira -o ~/Library/Sounds/RowanDone.aiff "Rowan is done"</code></code></pre><p><code>-v</code> picks the voice, so each agent can sound different. <code>say -v '?'</code> lists the voices on your Mac; use the name exactly as listed, in quotes if it has spaces.</p><p>Then play one with <code>afplay ~/Library/Sounds/LovelaceDone.aiff</code>. You hear which agent is ready, without learning which chime is whose.</p><p>For any other clip, such as a recording of your own or a free sound effect:</p><ol><li><p>Choose a short clip, a second or two. Long sounds get cut off.</p></li><li><p>Convert it to the Mac&#8217;s AIFF format, in Terminal (this example turns <code>chime.mp3</code> from Downloads into one called Chime):</p></li></ol><pre><code><code>mkdir -p ~/Library/Sounds
afconvert ~/Downloads/chime.mp3 ~/Library/Sounds/Chime.aiff -f AIFF -d BEI16</code></code></pre><ol><li><p>Play it in your hook: <code>afplay ~/Library/Sounds/Chime.aiff</code>.</p></li></ol><p>Test it in Terminal with that same <code>afplay</code> line before you add it to a hook.</p><h2>Live sessions and unattended runs</h2><p>The hooks and the notify script run wherever the agent runs, including runs you didn&#8217;t start by hand. I run some agent work from GitHub Actions on my own Mac, and at first those runs chimed exactly like my live sessions. I couldn&#8217;t tell which instance was pinging me.</p><p>GitHub Actions sets <code>GITHUB_ACTIONS=true</code> for everything it starts, agents included. That&#8217;s what the <code>if [ -n "$GITHUB_ACTIONS" ]</code> in both examples checks. Other automation tools set their own variable, such as <code>CI=true</code>; check yours. I tested both agents this way: Claude Code&#8217;s hooks and Codex&#8217;s notify script both run in unattended mode (<code>claude -p</code> and <code>codex exec</code>).</p><p>To see where past chimes came from, open Notification Center by clicking the clock in the menu bar: each one is listed with its time.</p><h2>If you hear nothing</h2><ul><li><p><strong>Test the command on its own.</strong> Paste the <code>osascript -e '&#8230;'</code> part into Terminal. If that&#8217;s silent too, the problem is your Mac&#8217;s settings, not the agent.</p></li><li><p><strong>A notification but no sound?</strong> A notification&#8217;s <code>sound name</code> plays only the Mac&#8217;s built-in sounds. Play your own file with <code>afplay</code> instead.</p></li><li><p><strong>Allow the notifications.</strong> In System Settings &#8594; Notifications, find Script Editor, which shows these alerts, and turn on Allow notifications.</p></li><li><p><strong>Check Focus.</strong> Do Not Disturb and other Focus modes hide notifications and their sounds.</p></li><li><p><strong>Check the volume.</strong> Alert sounds have their own slider, in System Settings &#8594; Sound.</p></li><li><p><strong>Start a new session.</strong> Agents read their settings when they start.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Why Use Lovable?]]></title><description><![CDATA[Because &#8220;Claude can do everything&#8221; assumes you know what everything is]]></description><link>https://www.codelikealittleoldlady.com/p/why-use-lovable</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/why-use-lovable</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Mon, 09 Nov 2026 16:00:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SR19!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.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_!SR19!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SR19!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!SR19!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!SR19!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!SR19!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SR19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3379063,&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.codelikealittleoldlady.com/i/223747016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.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_!SR19!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!SR19!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!SR19!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!SR19!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4c66001-90f1-463a-becb-b2569a0ad207_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I read someone on LinkedIn say, &#8220;Why use Lovable or Base44? Claude can go do everything for you.&#8221;</p><p>I&#8217;m sure there was a time in my life when I would have made a similar uninformed statement. For that matter, maybe I have recently and was too clueless to realize it.</p><p>That statement assumes a lot. It assumes that anyone knows what &#8220;everything&#8221; is. How to set up a web app. Domain management. Email management. Payment management. And sure, Claude can get you set up with all those things. But if you&#8217;ve never built an app before, saying that isn&#8217;t a daunting list seems unaware at best.</p><p>I&#8217;ve been in tech for a long time, and there was definitely a time when I had very strong opinions about code generators. Around 1997, I had a friend who was a <a href="https://en.wikipedia.org/wiki/WebObjects">WebObjects</a> guru. He knew it inside and out. But I quickly saw other people using it without his depth of knowledge, and they couldn&#8217;t debug a problem with a flashlight and a big red arrow pointing at it. It generated code, and people shrugged and said, &#8220;It works.&#8221;</p><p>I&#8217;ve had a few experiences like that in my career. People use packages they can&#8217;t debug. I couldn&#8217;t understand why anyone would want to create something they couldn&#8217;t understand well enough to fix.</p><p>It wasn&#8217;t that long ago that I still felt that way.</p><p>Yep, I&#8217;m eating those words now. I&#8217;m drinking the AI Koolaid like I&#8217;ve been walking through the desert for a year.</p><p>But here&#8217;s what changed. In 1997, the generator wrote the code and left. When it broke, you were on your own. Now the same tool that wrote the code will stay with you and help you figure out why it broke. Not understanding every line isn&#8217;t the risk it used to be when you have something to ask.</p><p>That doesn&#8217;t mean you can stop paying attention. AI can help you debug, but you still have to notice something is wrong. Security problems don&#8217;t come with a big red arrow.</p><p>I love Claude. I use it every day. But Lovable has become my favorite thing to use. Why? Because I don&#8217;t have to worry about web hosting, patching servers or Stripe integration. It handles all the fiddly bits. Isn&#8217;t that the point of AI, handling the fiddly bits so we can do the fun parts? I know that&#8217;s why I&#8217;m using it.</p><p>I still have my web hosting on Pair Networks, and I&#8217;m using Digital Ocean. But Lovable is just fun. I can focus on what I want to build. I hook it into GitHub so I can use all my standard development processes. I use PostHog for telemetry. I use one-time passcodes (OTP), so I no longer have to manage passwords, and the emails are just templates I update. I can focus on the app itself.</p><p>It&#8217;s funny to me when people say there won&#8217;t be any more software engineers because everyone can build software themselves. It isn&#8217;t true. Most people don&#8217;t want to build it themselves. And if they do, they don&#8217;t want to know every single detail or manage connections to a pile of different services. Lovable lowers the barrier for someone who just wants to build an app for themselves, their family or their small business. They don&#8217;t want to become a software and security expert.</p><p>Why use Lovable? Because it&#8217;s fun.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Issue #70]]></title><description><![CDATA[Just one more thing...]]></description><link>https://www.codelikealittleoldlady.com/p/issue-70</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/issue-70</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Fri, 06 Nov 2026 18:01:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mCfY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.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_!mCfY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mCfY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mCfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2936422,&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.codelikealittleoldlady.com/i/223738906?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.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_!mCfY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!mCfY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc6d76fe-a322-4684-b665-9b8a18cc13ff_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Well, 51 issues became 69, and 9 essays became 10. I always find something I missed, and this felt like a big one.</p><p>I realized my <a href="https://github.com/CodeLikeALittleOldLady/ShowMeYourPrompts/blob/main/GLOSSARY.md">glossary</a> is something helpful, and an artifact I want to maintain. Now all 54 terms are in one place, and as I write, I&#8217;ll continue to expand the glossary. I&#8217;ll be making this a link on Code Like A Little Old Lady, and you can always find it in the repository below.</p><p>The glossary lives in a starter repository, <a href="https://github.com/CodeLikeALittleOldLady/ShowMeYourPrompts/tree/main">Show Me Your Prompts</a>. The <a href="https://github.com/CodeLikeALittleOldLady/ShowMeYourPrompts/blob/main/README.md">README.md</a> tells you about all the files and which essay they map to.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IP1N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IP1N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 424w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 848w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 1272w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IP1N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:401291,&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.codelikealittleoldlady.com/i/223738906?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.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_!IP1N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 424w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 848w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 1272w, https://substackcdn.com/image/fetch/$s_!IP1N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F612ae098-b816-42a7-b9b1-cdf514bc46dd_1896x1318.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Even when I thought I was done, I added one more piece: a small sample app that runs the examples so you can see the test coverage for yourself.</p><p>This repository was built by Lovelace (Claude) and code reviewed by Rowan (ChatGPT). It&#8217;s not the full three reviewers, but if you look at the pull request history, Rowan found issues. Even having a second AI is helpful. We followed the process of feature branches with pull requests to dev until we had all the features complete, and then did a pull request from dev to main.</p><p>Feel free to fork this repository and use what you need. Or don&#8217;t. This is just my way, far from the only way to work.</p><p>Thank you for following me on this journey. I hope you found something helpful.</p><p>&#8212; The Little Old Lady</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uGe-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 424w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 848w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 1272w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!uGe-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png" width="1456" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image preview&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="Image preview" title="Image preview" srcset="https://substackcdn.com/image/fetch/$s_!uGe-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 424w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 848w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 1272w, https://substackcdn.com/image/fetch/$s_!uGe-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5669c12b-6848-4716-a234-c700a62e7cba_2134x290.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[From Done to Deployed]]></title><description><![CDATA[This is a 9-part series outlining the way I worked for #SheBuilds.]]></description><link>https://www.codelikealittleoldlady.com/p/from-done-to-deployed</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/from-done-to-deployed</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Thu, 05 Nov 2026 20:13:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PRGT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.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_!PRGT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PRGT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 424w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 848w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 1272w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PRGT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png" width="1456" height="583" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e299b4b8-2731-4b31-be97-d0effe270370_1981x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:583,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3075014,&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.codelikealittleoldlady.com/i/223277351?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.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_!PRGT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 424w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 848w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 1272w, https://substackcdn.com/image/fetch/$s_!PRGT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe299b4b8-2731-4b31-be97-d0effe270370_1981x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!os2k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!os2k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!os2k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!os2k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!os2k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825600,&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.codelikealittleoldlady.com/i/223277351?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.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_!os2k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!os2k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!os2k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!os2k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4f773f8-9de9-46b3-9d4a-c7ee5734d02e_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p>ou have finished a feature and it&#8217;s now in your dev branch, what&#8217;s next? For me, I do another pull request, only this time to main. The branch main is where my production version of the application lives. This is the version I show the world.</p><p>Each pull request to dev gives me a new version in preview. The goal is, if you&#8217;re going to break something, break it in preview not production. We&#8217;ve all gone to a website or an app and it breaks. It&#8217;s the worst. You want to avoid being that app.</p><p>I mentioned how I group my issues into features. As I finish each feature, when something works end to end, I do another pull request to main. Oh no, another pull request and another round of reviews. Yup. You may be thinking, what could they find, it&#8217;s already been reviewed. There&#8217;s always something. Generally it is small. But if it isn&#8217;t small, yeah, you found it before you released it to the world!</p><p>In pull requests to main, if you find an issue, you don&#8217;t fix it right there. If you remember, we set the dev branch to only allow changes from a pull request, so we can&#8217;t change it directly in dev. That&#8217;s ok. Instead you&#8217;ll create an issue with the finding and then decide, does this block the release or can it be fixed later. Often it can wait. Sometimes it can&#8217;t. If it can&#8217;t, you create a new feature branch from dev, fix the issue, do the pull request to dev, and it will then be picked up by the existing pull request to main.</p><p>My rule has been if it is something that will break the user or a security violation, it needs to go. If it&#8217;s a corner case or minor, it waits. Remember we started with 51 issues and ended with 69. That&#8217;s where some of them came from.</p><p>And you might think I should just let a change happen in dev. And I could. Or I could just create a branch off main and fix it there. All definitely things you can do. I choose not to do it. I like to avoid dealing with merge conflicts if I can avoid it. We haven&#8217;t talked about that bit of fun. If you create a feature branch off main and fix it, that fix won&#8217;t be in dev. So you&#8217;ll need to merge main into dev. Totally viable. But I like simplicity. Again, this is another large topic. A fun one. Maybe later.</p><p>So you complete the PR. Then, on Lovable&#8217;s Git page, you change your branch from dev to main, just how you&#8217;ve changed from feature branch to dev after each issue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NOFO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NOFO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 424w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 848w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 1272w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!NOFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png" width="1002" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89479,&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.codelikealittleoldlady.com/i/223277351?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.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_!NOFO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 424w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 848w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 1272w, https://substackcdn.com/image/fetch/$s_!NOFO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7300a4db-d86d-44f6-baf6-85464283da8c_1002x634.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>It&#8217;s all set. Woo hoo. Now you can push the publish button. It&#8217;s blue, not red. But it is the same feeling. Never hit the big red button. If you have done things in features, you can publish a feature at a time. Or you can wait until the whole project is done. I like that feeling of &#8220;I finished something&#8221;. I publish after each feature is complete.</p><p>You work through your features, issues become feature branches, a group of issues is a feature, each issue has a pull request until the feature is complete in dev. Then you move the feature to main and release. And now you&#8217;re done.</p><p>My app can be found here: </p><p><a href="https://whattheplate.lovable.app/">What The Plate?</a></p><p>Here&#8217;s my little demo video.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4400058e-270b-411c-a60d-5525d0d2212f&quot;,&quot;duration&quot;:null}"></div><p>And here&#8217;s my overall stats on what I built</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;27ecf995-c72d-43b7-bda0-d8a02f967937&quot;,&quot;duration&quot;:null}"></div><p> I still have a few outstanding issues to complete, but I built everything I wanted for #SheBuilds. While #SheBuilds was 3 days, I&#8217;ve turned it into a month-plus with my preplanning and now my post write-up.</p><p>Did I make it in the top 30 or win? No, not even. But that wasn&#8217;t my goal. My goal was to try a new way of working while still incorporating the fundamentals I consider important. And I did that. Would what I do fly in a corporate job? Maybe. I probably do more sanity checks than some folks would consider necessary. But honestly, even when I was doing it all by hand that&#8217;s how I worked. In data work, once something is wrong, people lose trust in your answers.</p><p>When I look at the definition of <a href="https://en.wikipedia.org/wiki/Vibe_coding">vibe coding</a>, I recognize what I do doesn&#8217;t necessarily align. But for me, it&#8217;s very hands off compared to any other coding I&#8217;ve done, so I&#8217;m sticking with that name. I let the AI do the validation by using multiple AI. I&#8217;m just there to steer the ship. And in many ways it aligns with how I&#8217;ve worked as a manager. I provide direction and guard rails with the occasional check in, but I trust others to do the work.</p><p>And my real win here? My husband asked to look at my repository. He told me it was well organized and he could follow what I&#8217;d done. That means I&#8217;ve built something others can understand. That means someone else can pick it up and make changes. It&#8217;s not just me.</p><p>What would I do differently for #SheBuilds? More social time. I didn&#8217;t participate in the Slack channel in a meaningful way. I was very focused on the build. I worked as a typical dev at a desk where someone shoves pizza under the door. And that really wasn&#8217;t the goal of #SheBuilds, it was to support others in learning and growing. Hopefully this series makes up for that gap. Maybe in the next #SheBuilds someone will find this series and it will help them plan their project.</p><p>But they should know, this is just one way to build, the one that works for me. There is no one right way to do things. Find what works for you and follow it!</p><p>I shared alot in this series. I have added a <a href="https://www.codelikealittleoldlady.com/p/issue-70">10th essay</a> with a link to resources mentioned throughout the series.</p><p><strong>Glossary</strong></p><ul><li><p><strong>Accessibility (A11y):</strong> making sure an app works for everyone, including people using screen readers or keyboards</p></li><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running</p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person</p></li><li><p><strong>Bot:</strong> an automated account that acts on its own, like a named reviewer leaving comments</p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Check in:</strong> saving your changes to the repository</p></li><li><p><strong>Code coverage:</strong> how much of your code is exercised by your automated tests</p></li><li><p><strong>Code review:</strong> someone else reading your changes before they&#8217;re merged, looking for problems</p></li><li><p><strong>Commit:</strong> a saved set of changes in a branch</p></li><li><p><strong>Continuous integration (CI):</strong> automatically building and testing every change as soon as it&#8217;s submitted</p></li><li><p><strong>Dev branch:</strong> the working branch. What it holds is what you see on the preview site.</p></li><li><p><strong>Diff:</strong> the lines that changed between two versions of the code</p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user</p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect</p></li><li><p><strong>Feature branch:</strong> a short-lived branch for one piece of work, named for its step</p></li><li><p><strong>GitHub:</strong> a website for storing projects, their history, and the work planned for them</p></li><li><p><strong>GitHub Copilot (GHCP):</strong> GitHub&#8217;s built-in AI assistant, which can review pull requests</p></li><li><p><strong>Hello world:</strong> the simplest possible starter program, traditionally a page that just says hello</p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Label:</strong> a tag on an issue that tells you something about it at a glance. Mine say who does the work.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Merge:</strong> bringing the changes from one branch into another</p></li><li><p><strong>Merge conflict:</strong> when two branches change the same lines differently, and someone has to decide which version wins <em>(new)</em></p></li><li><p><strong>Milestone:</strong> a group of issues that together complete something larger</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Preview site:</strong> a private copy of your site built from the dev branch, for checking work before publishing</p></li><li><p><strong>Production:</strong> the live version of your app, the one the world sees <em>(new)</em></p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Prompt:</strong> the instructions you give an AI to do a piece of work</p></li><li><p><strong>Proof of concept:</strong> a quick, rough build to see whether an idea works</p></li><li><p><strong>Publish:</strong> to make the site live for everyone, built from the main branch</p></li><li><p><strong>Pull request:</strong> a request to move changes from one branch into another, so they can be checked and reviewed first</p></li><li><p><strong>Push:</strong> sending your commits up to GitHub</p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Release:</strong> sending a finished set of changes out to production <em>(new)</em></p></li><li><p><strong>Remix:</strong> Lovable&#8217;s way of starting a new project from an existing one</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do</p></li><li><p><strong>Ruleset:</strong> a set of GitHub rules protecting a branch, such as requiring a pull request for every change</p></li><li><p><strong>Sandbox:</strong> a safe, separate space to run code without affecting anything real</p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect</p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database</p></li><li><p><strong>Source code management (SCM):</strong> a system for storing code and tracking every change to it</p></li><li><p><strong>Static page:</strong> a page that looks real but doesn&#8217;t do anything yet</p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Vibe coding:</strong> building software mostly by directing AI in plain language rather than writing code yourself <em>(new)</em></p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Three Reviewers, Three Perspectives]]></title><description><![CDATA[Yes, it&#8217;s a lot of faff. Yes, it&#8217;s worth it.]]></description><link>https://www.codelikealittleoldlady.com/p/three-reviewers-three-perspectives</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/three-reviewers-three-perspectives</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Thu, 05 Nov 2026 03:47:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nzcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.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_!nzcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nzcs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nzcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3142364,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.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_!nzcs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!nzcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39c35cd9-6f3b-42e7-adb5-5adedad456ca_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u1W6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u1W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fab18661-a864-440c-896c-06eb458bcb6e_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825569,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.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_!u1W6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!u1W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab18661-a864-440c-896c-06eb458bcb6e_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p>We&#8217;re making our way into the home stretch. Yesterday we started working through the prompts. Open an issue with a prompt, create a feature branch, create the code in the feature branch, do a pull request to put it back into dev.</p><p>Now you could just do a pull request and be done. But a step in the middle is a code review. This is where you look at the code to try to find any problems before you release the code. Ideally you would want a couple folks to look over your work, in hopes they will notice things you miss.</p><p>Back up Alison, AI wrote this code, why do I need to do a code review? We built that whole test harness and all those build scans and everything is green. Isn&#8217;t that good enough? Ah, great question, and no, it&#8217;s not enough, you might be surprised what turns up in the code review.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oxj-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oxj-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oxj-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50302718-44e5-4707-9dd0-255f6005cca6_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;:3099507,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_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_!Oxj-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Oxj-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50302718-44e5-4707-9dd0-255f6005cca6_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The title is Three Reviewers, Three Perspectives, so what does that mean. I&#8217;ve talked about the Inner Chamber, my thinking partners. We&#8217;ve talked about Sullivan (Sully), my Lovable AI builder. Sully built all the code for #SheBuilds. Then I have Wiggins (GitHub Copilot), Lovelace (Claude), and Rowan (ChatGPT) who review Sully&#8217;s code. They are each running a different model, meaning they already have strengths and weaknesses. And I&#8217;ve given them each different ways to look at a problem. I find with the three different agents, while I get some overlap, only about 10% of what they find overlaps.</p><p>I&#8217;ve found that Rowan does really well reviewing database code. I find this very amusing as reviewing database code has always been my strength. She also tends to do cleanup, closing out the items that are verified as fixed. And most of all, Rowan makes sure the graphic design holds or makes suggestions when there are problems. Lovelace is great at finding testing gaps. She not only reviews the code but runs it in a sandbox looking for problems. Lastly we have Wiggins. I&#8217;ve found the GHCP model is great at finding potential security issues and more targeted issues compared to the system level findings from Lovelace.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8yrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8yrW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!8yrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/417ebdc3-dc80-4521-99ff-327036e5ddab_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;:3003109,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_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_!8yrW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!8yrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F417ebdc3-dc80-4521-99ff-327036e5ddab_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s a step I didn&#8217;t put in the diagram: before Sully writes any code, the plan gets reviewed. The way the process works is not that different from working with any team. We have the issue that describes the problem to be fixed. Sully reads the issue, comes up with a plan, and writes it in the issue. Rowan and Lovelace both have connections to my repository with the ability to read and write on it. I created bots with each of their names and images so I can keep track of who has done what. They review Sully&#8217;s plan until the three of them sign off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4WBX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4WBX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 424w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 848w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4WBX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png" width="1390" height="1132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1132,&quot;width&quot;:1390,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1376708,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.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_!4WBX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 424w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 848w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 1272w, https://substackcdn.com/image/fetch/$s_!4WBX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd3e67fdc-9fba-4d3a-b3dd-5ae43165ef5c_1390x1132.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Sully then writes the code and creates the pull request. Again, I have Lovelace and Rowan read the pull request details and review the code. They read the issue being fixed and the plan to be followed to make sure everything is built as discussed. If Sully has to make a change to the plan, it is noted in the issue. Based upon the roles each of them has, Sully will ask for a specific reviewer to confirm the change to plan.</p><p>Most code reviews are done looking at the diff, the changes made, and providing feedback on just that code. But just like any code review, a reviewer may notice something around the change isn&#8217;t right and also provide feedback on that.</p><p>Wiggins is part of GitHub, so on the pull request I just have to request he do a code review. I have my dev branch set to run a Wiggins code review on every pull request. I admit, I have burned through more credits than I planned here. I made sure to turn off doing a review on every push. It would start a new code review each time something was committed to the repository, and Sully does a lot of small commits.</p><p>This is where one issue == one prompt == one change is so important. The more code the AI has to create, the more likely something will be missed. The same holds true for review: the more code, the more gets missed. AI is just like any team member, give them too much to look at and they start to wander to look at something sparkly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kW4G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kW4G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!kW4G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c49a488d-7588-47de-aff0-bc6e9d93e658_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;:3035658,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_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_!kW4G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!kW4G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc49a488d-7588-47de-aff0-bc6e9d93e658_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Of course, the issue with AI is they can quickly start to agree with you and each other. Teams do this too. People who work together long enough know Bob will find X, Ryley will find Y, and Beth will pull it all together. So far there has not been any outright disagreement, but there has been, this isn&#8217;t a priority now, and instead of fixing it, they will create an issue to track for fixing later. Again, just like every team I&#8217;ve ever worked on.</p><p>And just like every team I&#8217;ve been on, sometimes an additional set of hands is needed, and that&#8217;s where they pull me in. They outline pros and cons of a solution and we discuss what is the ultimate goal. And we make plan adjustments, or create more GitHub issues and keep moving forward.</p><p>At this point you&#8217;re probably thinking, that&#8217;s a lot of faff. You do a round creating prompts, a round creating plans (or multiple if needed), and a round of doing code reviews (or multiple if needed). AI is supposed to make this all easier. And AI has made this all easier. This process matches the process I&#8217;ve done for years with teams, but AI can get a plan written in minutes compared to days, code bugs found and fixed faster than a human could set up a debugging environment, and get a code review done faster than any team I&#8217;ve ever worked on. Sometimes code reviews would sit for days waiting on a reviewer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oD20!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oD20!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!oD20!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!oD20!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!oD20!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!oD20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_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;:3208230,&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.codelikealittleoldlady.com/i/223277227?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_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_!oD20!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!oD20!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!oD20!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!oD20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03c8a2e3-b0f6-46bc-ba1d-d18c59cb44fe_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So yes, I think this faff is worth it. This allows me as an individual creating code to get a wider perspective than just what&#8217;s rattling around in my own brain.</p><p>We follow this process for every issue, doing pull requests to dev until we have completed a feature. In an earlier essay I talked about multiple issues making up a feature and my ordering by 10s. Well, once we finish one of those groups, we will do a pull request and code review to main and then publish the work.</p><p>And that&#8217;s where we&#8217;ll end tomorrow, <a href="https://www.codelikealittleoldlady.com/p/from-done-to-deployed">From Done to Deployed</a>.</p><p><strong>Glossary</strong></p><ul><li><p><strong>Accessibility (A11y):</strong> making sure an app works for everyone, including people using screen readers or keyboards</p></li><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running</p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person</p></li><li><p><strong>Bot:</strong> an automated account that acts on its own, like a named reviewer leaving comments <em>(new)</em></p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Check in:</strong> saving your changes to the repository</p></li><li><p><strong>Code coverage:</strong> how much of your code is exercised by your automated tests</p></li><li><p><strong>Code review:</strong> someone else reading your changes before they&#8217;re merged, looking for problems</p></li><li><p><strong>Commit:</strong> a saved set of changes in a branch <em>(new)</em></p></li><li><p><strong>Continuous integration (CI):</strong> automatically building and testing every change as soon as it&#8217;s submitted</p></li><li><p><strong>Dev branch:</strong> the working branch. What it holds is what you see on the preview site.</p></li><li><p><strong>Diff:</strong> the lines that changed between two versions of the code <em>(new)</em></p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user</p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect</p></li><li><p><strong>Feature branch:</strong> a short-lived branch for one piece of work, named for its step</p></li><li><p><strong>GitHub:</strong> a website for storing projects, their history, and the work planned for them</p></li><li><p><strong>GitHub Copilot (GHCP):</strong> GitHub&#8217;s built-in AI assistant, which can review pull requests <em>(new)</em></p></li><li><p><strong>Hello world:</strong> the simplest possible starter program, traditionally a page that just says hello</p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Label:</strong> a tag on an issue that tells you something about it at a glance. Mine say who does the work.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Merge:</strong> bringing the changes from one branch into another</p></li><li><p><strong>Milestone:</strong> a group of issues that together complete something larger</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Preview site:</strong> a private copy of your site built from the dev branch, for checking work before publishing</p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Prompt:</strong> the instructions you give an AI to do a piece of work</p></li><li><p><strong>Proof of concept:</strong> a quick, rough build to see whether an idea works</p></li><li><p><strong>Publish:</strong> to make the site live for everyone, built from the main branch</p></li><li><p><strong>Pull request:</strong> a request to move changes from one branch into another, so they can be checked and reviewed first</p></li><li><p><strong>Push:</strong> sending your commits up to GitHub <em>(new)</em></p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Remix:</strong> Lovable&#8217;s way of starting a new project from an existing one</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do</p></li><li><p><strong>Ruleset:</strong> a set of GitHub rules protecting a branch, such as requiring a pull request for every change</p></li><li><p><strong>Sandbox:</strong> a safe, separate space to run code without affecting anything real <em>(new)</em></p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect</p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database</p></li><li><p><strong>Source code management (SCM):</strong> a system for storing code and tracking every change to it</p></li><li><p><strong>Static page:</strong> a page that looks real but doesn&#8217;t do anything yet</p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul>]]></content:encoded></item><item><title><![CDATA[One Prompt, One Branch, One Review]]></title><description><![CDATA[Building the safety net before the product]]></description><link>https://www.codelikealittleoldlady.com/p/one-prompt-one-branch-one-review</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/one-prompt-one-branch-one-review</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Wed, 04 Nov 2026 00:35:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X4mw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.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_!X4mw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X4mw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X4mw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2867708,&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.codelikealittleoldlady.com/i/223277081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.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_!X4mw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!X4mw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb577cc18-8d7d-4ee8-ab21-c9d4bdb28e5f_1983x793.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ow4u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ow4u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825267,&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.codelikealittleoldlady.com/i/223277081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.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_!Ow4u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!Ow4u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faea201b3-dd5b-4f34-b775-12fd962b79a5_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p>Now we&#8217;re ready to build! But wait, a slight detour. The first prompts I run aren&#8217;t describing the product, but instead build the safety net for my applications. These are steps that I include in every build.</p><p>Those steps include items such as a Continuous Integration (CI) build and Accessibility (A11y) builds. Continuous Integration (CI) means every change is automatically built and tested as soon as it&#8217;s submitted, so problems show up right away instead of piling up. Accessibility (A11y, shorthand for the 11 letters between the a and the y) checks make sure the app works for everyone, including people using screen readers, navigating by keyboard, or needing higher contrast.</p><p>It includes a product build against every pull request. With Lovable, this is less necessary, since Lovable builds the app every time Sully makes a change. But a build in GitHub is an independent check that my repository builds on its own, it runs my tests alongside, and it leaves a record on every pull request.</p><p>It includes telemetry wired in from the first change. Telemetry is the data an app collects about how it&#8217;s being used and what it was doing when something went wrong. It includes a test harness, the automated tests that run on every change to confirm nothing broke. And it includes code coverage, which measures how much of my code those tests actually exercise. Together, they test every change.</p><p>The point of these items, added as I start the project, is to find issues before I&#8217;ve built so much I cannot find problems. It also means I&#8217;ve built the ability to check if my change breaks something. And it gives me the data to help diagnose any problems.</p><p>Every pull request matches to one issue. So you can trace it: this issue led to this code change, which added these tests and this telemetry.</p><p>And once you have all this set up, you can see your system is healthy from the first step. There is nothing nicer than a nice green check mark indicating you&#8217;re all good. There&#8217;s nothing more sad than the red X.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lPHK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 424w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 848w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 1272w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lPHK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png" width="1456" height="327" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:327,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87197,&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.codelikealittleoldlady.com/i/223277081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.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_!lPHK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 424w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 848w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 1272w, https://substackcdn.com/image/fetch/$s_!lPHK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7bbcb2d9-5cf9-4537-a971-002255f7b149_1506x338.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qchz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 424w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 848w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qchz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png" width="868" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:868,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34773,&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.codelikealittleoldlady.com/i/223277081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.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_!Qchz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 424w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 848w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 1272w, https://substackcdn.com/image/fetch/$s_!Qchz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cb7f0a8-6067-4496-9ca9-245b00385cc8_868x150.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>The last thing you want to do is bring in the brief, following the same process: feature branch, build, pull request, review, merge. We&#8217;ll outline that below.</p><p>And if you&#8217;ve done all this, you have built the beginning of your project. It may not have any of your features yet, but having all the infrastructure in place means you won&#8217;t be building on quicksand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!L6DC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!L6DC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!L6DC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eea85f48-b701-499b-abb7-aec298be2677_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;:2469905,&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.codelikealittleoldlady.com/i/223277081?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_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_!L6DC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!L6DC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feea85f48-b701-499b-abb7-aec298be2677_1536x1024.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Now we&#8217;re ready to create the product. Really, no fooling this time.</p><p>Remember the static screens from Thursday? That&#8217;s where we&#8217;ll start. For every page in the app I have an issue that creates a static page. No functionality. Just confirming layout and flow.</p><p>For me I was able to confirm every screen looked as I expected. I was able to view it in mobile and on my Mac. I could make any adjustments that were needed early. Every change you can make earlier in the process makes your life simpler.</p><p>I also used those screens as tests for the real implementation. I had signed off on the screens. When Sully built the real thing, she knew how it should look. And if it didn&#8217;t, she flagged it as an error. To me, all of these things are worth the extra time and tokens.</p><p>Tomorrow we&#8217;ll talk about the one part of the diagram I&#8217;ve skipped past, the code review on every pull request, in <a href="https://www.codelikealittleoldlady.com/p/three-reviewers-three-perspectives">Three Reviewers, Three Perspectives</a>.</p><p><strong>Glossary</strong></p><ul><li><p><strong>Accessibility (A11y):</strong> making sure an app works for everyone, including people using screen readers or keyboards <em>(new)</em></p></li><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running</p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person</p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Check in:</strong> saving your changes to the repository</p></li><li><p><strong>Code coverage:</strong> how much of your code is exercised by your automated tests <em>(new)</em></p></li><li><p><strong>Code review:</strong> someone else reading your changes before they&#8217;re merged, looking for problems <em>(new)</em></p></li><li><p><strong>Continuous integration (CI):</strong> automatically building and testing every change as soon as it&#8217;s submitted <em>(new)</em></p></li><li><p><strong>Dev branch:</strong> the working branch. What it holds is what you see on the preview site.</p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user</p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect</p></li><li><p><strong>Feature branch:</strong> a short-lived branch for one piece of work, named for its step <em>(new)</em></p></li><li><p><strong>GitHub:</strong> a website for storing projects, their history, and the work planned for them</p></li><li><p><strong>Hello world:</strong> the simplest possible starter program, traditionally a page that just says hello</p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Label:</strong> a tag on an issue that tells you something about it at a glance. Mine say who does the work.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Merge:</strong> bringing the changes from one branch into another <em>(new)</em></p></li><li><p><strong>Milestone:</strong> a group of issues that together complete something larger</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Preview site:</strong> a private copy of your site built from the dev branch, for checking work before publishing</p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Prompt:</strong> the instructions you give an AI to do a piece of work</p></li><li><p><strong>Proof of concept:</strong> a quick, rough build to see whether an idea works</p></li><li><p><strong>Publish:</strong> to make the site live for everyone, built from the main branch</p></li><li><p><strong>Pull request:</strong> a request to move changes from one branch into another, so they can be checked and reviewed first</p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Remix:</strong> Lovable&#8217;s way of starting a new project from an existing one</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do</p></li><li><p><strong>Ruleset:</strong> a set of GitHub rules protecting a branch, such as requiring a pull request for every change</p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect</p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database</p></li><li><p><strong>Source code management (SCM):</strong> a system for storing code and tracking every change to it</p></li><li><p><strong>Static page:</strong> a page that looks real but doesn&#8217;t do anything yet</p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Before the First Prompt]]></title><description><![CDATA[The setup that makes every later step simpler]]></description><link>https://www.codelikealittleoldlady.com/p/before-the-first-prompt</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/before-the-first-prompt</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Tue, 03 Nov 2026 05:03:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HrPq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.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_!HrPq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HrPq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HrPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3028723,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.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_!HrPq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!HrPq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc9d7f4-b75f-4e5d-a700-8a037ac91ad1_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rHxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825622,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.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_!rHxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!rHxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37bc85a2-6ce6-4aef-8a02-9f5c0bd5d550_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p>Last week I ended with &#8216;Next week we start the build&#8217;. Well, kind of true. We are going to create our repository using Lovable and get started. </p><p>I also want to highlight that everything in this series is how I work. These are practices I&#8217;ve built over years. You can take as little or as much as you want from it.</p><p>Lovable allows you to provide a prompt to create a project. You can be as simple or detailed as you want. I created a super simple prompt for this example so it does nothing but create a static page in Lovable. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xvyJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xvyJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 424w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 848w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xvyJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png" width="1456" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1305680,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.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_!xvyJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 424w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 848w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 1272w, https://substackcdn.com/image/fetch/$s_!xvyJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31ff803e-376f-4114-b152-1da81e3db31a_1774x1022.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I know this essay is called Before the First Prompt, and here I am writing a prompt. But the example above doesn&#8217;t define what we&#8217;re building. It just lets us move forward. For #SheBuilds, they wanted us to define the project in our first prompt. So I used this prompt to describe the whole project, then said, don&#8217;t build anything but a static page with the name.</p><p>Why? Because I want to use GitHub. Lovable wants to create the repository for you, not have you provide a repository. You can provide a repository for remixing, but it will create a new repository. So better to start with the simplest possible project you can in Lovable and then move forward with creating your repository.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fgBG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fgBG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 424w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 848w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 1272w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!fgBG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png" width="1456" height="959" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:959,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:328654,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.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_!fgBG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 424w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 848w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 1272w, https://substackcdn.com/image/fetch/$s_!fgBG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4c5a33-db1b-4893-92a8-8139e652162c_2510x1654.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Lovable doesn&#8217;t require that you use GitHub, but I&#8217;m much too used to using a source code manager (SCM) to bypass this step. As we work through this week, you&#8217;ll see the benefits I gain by going this route.</p><p>Once the page is created, it&#8217;s time to create the GitHub repository. You do this by selecting More from the menu above the page you&#8217;ve created. After you select More, the bottom item in the menu is a settings wheel. By opening it, you&#8217;ll see an image indicating Git.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!h1T5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h1T5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 424w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 848w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 1272w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!h1T5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png" width="1456" height="952" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:952,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:496268,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.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_!h1T5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 424w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 848w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 1272w, https://substackcdn.com/image/fetch/$s_!h1T5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90633f54-bf6a-46e4-99d5-d6fdf56eab83_2494x1630.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZDnV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZDnV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 424w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 848w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 1272w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZDnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png" width="1314" height="1442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1442,&quot;width&quot;:1314,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:253098,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.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_!ZDnV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 424w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 848w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 1272w, https://substackcdn.com/image/fetch/$s_!ZDnV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cf795ec-91a2-42b8-bed5-91744b747691_1314x1442.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>From here I select GitHub and connect to my GitHub instance. If you don&#8217;t have a connector in place for GitHub, you can add it here. You can see here I have multiple GitHub accounts attached to my Lovable account.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a3CZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a3CZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 424w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 848w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!a3CZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:340847,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.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_!a3CZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 424w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 848w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!a3CZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc177a434-0c5b-451a-9a77-25f9dc288c1c_2500x1484.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After you select Connect, it will create your repository. You&#8217;ll notice the repository name is similar to the project name. You can change the project name all you want, but the repository name will not change.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a-NL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a-NL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 424w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 848w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!a-NL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png" width="1456" height="938" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:938,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:467514,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.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_!a-NL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 424w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 848w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 1272w, https://substackcdn.com/image/fetch/$s_!a-NL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00f12384-8b51-440a-9da8-8d8f071fca85_2514x1620.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Currently there is one branch in this repository, main. When I work, I want my preview site to be built in the dev branch and then once I am at a good point, I do a pull request from dev to main, and then publish the site from main.</p><p>If you remember last week we talked about a repository being like a filing cabinet and branches are the folders. Whichever folder is selected on the Lovable Git page will be what you see in the Lovable preview site. Lovable&#8217;s preview site has <code>preview--</code> at the beginning of the website address you&#8217;re publishing to.</p><p>To create a dev branch, on the Lovable Git page, you just select main from the branch pulldown and select create a branch.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8vvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8vvm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 424w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 848w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 1272w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!8vvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png" width="986" height="650" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:650,&quot;width&quot;:986,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95315,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.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_!8vvm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 424w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 848w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 1272w, https://substackcdn.com/image/fetch/$s_!8vvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc6976ab4-30bb-4d5c-8a68-0b540b1cd8f7_986x650.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Now you&#8217;ll have a branch named dev and you&#8217;re ready to work. Well, almost.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7gpW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7gpW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7gpW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png" width="1456" height="848" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:848,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:408922,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.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_!7gpW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 424w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 848w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 1272w, https://substackcdn.com/image/fetch/$s_!7gpW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4471b38b-4d70-48fb-86d1-49de2d356cd7_2502x1458.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2jln!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2jln!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 424w, https://substackcdn.com/image/fetch/$s_!2jln!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 848w, https://substackcdn.com/image/fetch/$s_!2jln!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!2jln!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!2jln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png" width="1456" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:231828,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.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_!2jln!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 424w, https://substackcdn.com/image/fetch/$s_!2jln!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 848w, https://substackcdn.com/image/fetch/$s_!2jln!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 1272w, https://substackcdn.com/image/fetch/$s_!2jln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f6eff96-d3b8-45db-b473-f4592d3dbd13_2976x1036.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The next thing I build is a set of rules on the dev and main branches. These rules protect me from writing directly to main or dev. Why would I want that? Because I do a thing called a pull request and code review for everything I create. A pull request is how you ask to move changes from one branch into another, so they can be checked and reviewed first. You create these rules under Settings in GitHub.</p><p>Now we&#8217;re building a ruleset.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHan!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHan!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 424w, https://substackcdn.com/image/fetch/$s_!CHan!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 848w, https://substackcdn.com/image/fetch/$s_!CHan!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!CHan!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png" width="1456" height="635" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:635,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:344618,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.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_!CHan!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 424w, https://substackcdn.com/image/fetch/$s_!CHan!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 848w, https://substackcdn.com/image/fetch/$s_!CHan!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!CHan!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb79a2e7e-8498-41ec-98b0-ddcdf7a41261_3016x1316.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>You name the ruleset, select the branch it applies to, and then the rules you want. I want to require a pull request for every change.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Yr2b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Yr2b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 424w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 848w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 1272w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Yr2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png" width="1456" height="705" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:705,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297498,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.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_!Yr2b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 424w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 848w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 1272w, https://substackcdn.com/image/fetch/$s_!Yr2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf8ab198-7223-4d67-b7c2-2832d6fe9bad_2992x1448.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IkZm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IkZm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 424w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 848w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IkZm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:317425,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.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_!IkZm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 424w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 848w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!IkZm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7163a8d1-3ea2-461b-a184-63c049ec39bc_2994x1470.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nYqQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nYqQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 424w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 848w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 1272w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!nYqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:307036,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.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_!nYqQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 424w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 848w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 1272w, https://substackcdn.com/image/fetch/$s_!nYqQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44ccb81e-06f9-462f-88f4-b8561dbb9f0b_2974x1454.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wBXP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wBXP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 424w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 848w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 1272w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!wBXP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png" width="1456" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:297810,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.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_!wBXP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 424w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 848w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 1272w, https://substackcdn.com/image/fetch/$s_!wBXP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8311f4c-75b7-49a4-85ef-b9f344c1bdd2_2204x1488.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Once you&#8217;ve set this up once, you can export the ruleset and save it for future repositories. Then all you have to do is import the ruleset.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1czO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1czO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 424w, https://substackcdn.com/image/fetch/$s_!1czO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 848w, https://substackcdn.com/image/fetch/$s_!1czO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 1272w, https://substackcdn.com/image/fetch/$s_!1czO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1czO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png" width="638" height="574" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:574,&quot;width&quot;:638,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54069,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.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_!1czO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 424w, https://substackcdn.com/image/fetch/$s_!1czO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 848w, https://substackcdn.com/image/fetch/$s_!1czO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 1272w, https://substackcdn.com/image/fetch/$s_!1czO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63a2a8bf-0f84-4e22-bb6e-7a4c9195f469_638x574.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I mentioned I have a repository of prompts saved as issues. I copy those issues from the prompt repository to the project repository, giving me a step by step plan of my build.</p><p>The last thing you want to do is bring in the brief. You will put it in the repository and in the project knowledge. That&#8217;s step 40, which is where we started last week. It comes after the test harness steps, which we&#8217;ll get to tomorrow.</p><p>There are a few little quirks with Lovable. You cannot prompt Lovable to create your branch. It must be done in the More/Git interface. That&#8217;s also how you change the branch you&#8217;re working in. Lovable can read the issues directly from the repository to do the build, but you&#8217;ll need to create the branch first and change to that branch.</p><p>I also ran into a bit of an issue trying to read issues and update code. I asked Sully about it and here&#8217;s the explanation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kiqP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kiqP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 424w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 848w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 1272w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!kiqP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png" width="1144" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/27251c85-8674-4a3b-8574-809daa807912_1144x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1144,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:211318,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.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_!kiqP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 424w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 848w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 1272w, https://substackcdn.com/image/fetch/$s_!kiqP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27251c85-8674-4a3b-8574-809daa807912_1144x742.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Remember last Monday&#8217;s essay on memory? Here it is in action. I now have this added to my memory so I don&#8217;t hit it again.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SajC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SajC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 424w, https://substackcdn.com/image/fetch/$s_!SajC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 848w, https://substackcdn.com/image/fetch/$s_!SajC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 1272w, https://substackcdn.com/image/fetch/$s_!SajC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!SajC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png" width="1164" height="486" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:486,&quot;width&quot;:1164,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120874,&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.codelikealittleoldlady.com/i/223275128?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.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_!SajC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 424w, https://substackcdn.com/image/fetch/$s_!SajC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 848w, https://substackcdn.com/image/fetch/$s_!SajC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 1272w, https://substackcdn.com/image/fetch/$s_!SajC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F339fb2b9-02b9-4ad5-889c-ef876d7ae6f8_1164x486.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Tomorrow we&#8217;ll start with the issues and building our product, <a href="https://www.codelikealittleoldlady.com/p/one-prompt-one-branch-one-review">One Prompt, One Branch, One Review</a> at a time.</p><p><strong>Glossary</strong></p><ul><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running</p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person</p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Check in:</strong> saving your changes to the repository</p></li><li><p><strong>Dev branch:</strong> the working branch. What it holds is what you see on the preview site. <em>(new)</em></p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user</p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect</p></li><li><p><strong>GitHub:</strong> a website for storing projects, their history, and the work planned for them</p></li><li><p><strong>Hello world:</strong> the simplest possible starter program, traditionally a page that just says hello <em>(new)</em></p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Label:</strong> a tag on an issue that tells you something about it at a glance. Mine say who does the work.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Milestone:</strong> a group of issues that together complete something larger</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Preview site:</strong> a private copy of your site built from the dev branch, for checking work before publishing <em>(new)</em></p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Prompt:</strong> the instructions you give an AI to do a piece of work</p></li><li><p><strong>Proof of concept:</strong> a quick, rough build to see whether an idea works</p></li><li><p><strong>Publish:</strong> to make the site live for everyone, built from the main branch <em>(new)</em></p></li><li><p><strong>Pull request:</strong> a request to move changes from one branch into another, so they can be checked and reviewed first <em>(new)</em></p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Remix:</strong> Lovable&#8217;s way of starting a new project from an existing one <em>(new)</em></p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do</p></li><li><p><strong>Ruleset:</strong> a set of GitHub rules protecting a branch, such as requiring a pull request for every change <em>(new)</em></p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect</p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database</p></li><li><p><strong>Source code management (SCM):</strong> a system for storing code and tracking every change to it</p></li><li><p><strong>Static page:</strong> a page that looks real but doesn&#8217;t do anything yet</p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul>]]></content:encoded></item><item><title><![CDATA[My Prompts Live In GitHub]]></title><description><![CDATA[This isn&#8217;t code, it&#8217;s process]]></description><link>https://www.codelikealittleoldlady.com/p/my-prompts-live-in-github</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/my-prompts-live-in-github</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Thu, 29 Oct 2026 20:47:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ItVF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.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_!ItVF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ItVF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ItVF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2808328,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.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_!ItVF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!ItVF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0fb6d7ac-f913-4e21-92ca-4fd520097d43_1983x793.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SMiG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SMiG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:824801,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.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_!SMiG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!SMiG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16700ab8-43d3-4851-bee6-f59e111d2e4c_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p><strong>My Prompts Live in GitHub</strong></p><p>So far I&#8217;ve talked about memory, drawing the site, and then the words to describe the site. Today we&#8217;ll talk about where those words live and how they are used. When I talked about memory, I showed a screenshot of a GitHub issue. Today we&#8217;re going to go back and talk about, what&#8217;s GitHub.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VIRO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VIRO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 424w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 848w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png" width="1456" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&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;: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_!VIRO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 424w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 848w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>GitHub is just one of many products that manage source code. When I talked about <a href="https://www.codelikealittleoldlady.com/p/undo-isnt-the-same-as-version-control">GitHub and Lovable previously</a>, I said, I really should do a GitHub basics video. I probably still should. </p><p>You can save your code in GitHub (called checking it in) so you don&#8217;t lose it to a failed hard drive or an accidental deletion. You can have a copy on the GitHub servers so others can contribute to the project. It&#8217;s also a way to show off what you can do. You can use GitHub, or any source code management (SCM) tool, in a very basic way or build a very elaborate setup. It&#8217;s up to you.</p><p>A very basic setup has just a repository. A repository is just the name of a set of files that make up your project. You can think of it as a drawer in a filing cabinet. In a basic setup, your drawer has one folder that contains all your files, and the folder is named main. In GitHub that folder would be a branch. Now you can make copies of that branch to do work that doesn&#8217;t change anything in that first folder. That&#8217;s branching, and you try to name the new folder something that makes it obvious what you&#8217;re doing in that branch. For this project, each new branch had the step name and small detail, so I could clearly map the work in the branch to a GitHub issue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Evm0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Evm0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Evm0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2531548,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.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_!Evm0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!Evm0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe3ea635-c5ea-4d90-991a-12a4bd3c0687_1983x793.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Hold on Alison, this is the second time you&#8217;ve mentioned a GitHub issue. What is it? I think of issues as my to-do list. The things I want to do in my project. I try to keep it to only one thing per issue. I find this is especially important when using AI to do the work. Too many instructions in one issue, things can get muddy.</p><p>For each project I have a repository and accompanying issues. But I also have a dedicated repo full of standard issues that I can bring into any new project. These are things I want to do in every project I create. Things like setting up PostHog for telemetry, Accessibility Insights and Code Coverage runs, to make my product robust, and a small host of other items. When I create a new repository, the first thing I do is have my AI copy the issues from my prompt repository into my new project repository.</p><p>If you remember on <a href="https://www.codelikealittleoldlady.com/p/we-dont-start-from-zero">Monday we talked about memory and the brief.</a> This is how the brief ties into standardized prompts. The brief tells the AI how to use the standard prompts to fit this new project.</p><p>As I mentioned I think of issues as my to-do list. Each does one thing. The template for an issue has a number and title, the branch to create, a checklist, a prompt, a label, and a milestone. A label is an easy way to tell me something about the issue without opening it. In this case I use the labels to indicate who does the work. Some issues are Sullivan (Lovable), some are me, some are my other agents. </p><p>A milestone groups issues that together complete something larger. My preferred method is one milestone per feature. I want my issues to be a discrete piece of work, and most features need multiple pieces to complete them. For What the Plate?, though, I put everything under a single milestone for the whole build. Do as I say, not as I did. And of course the prompt, the work I want the AI to do is in the issue.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!23JT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!23JT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 424w, https://substackcdn.com/image/fetch/$s_!23JT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 848w, https://substackcdn.com/image/fetch/$s_!23JT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!23JT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!23JT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png" width="1351" height="1164" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1164,&quot;width&quot;:1351,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1630107,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.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_!23JT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 424w, https://substackcdn.com/image/fetch/$s_!23JT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 848w, https://substackcdn.com/image/fetch/$s_!23JT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!23JT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe81f1bbe-d2f6-4729-bbe9-a12688b9f797_1351x1164.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>In the title I have a step number. And each main section of my build starts on a 10. What? If a section takes 7 steps, they&#8217;re numbered 20 to 26, and the next section starts at 30. Why? Because I always find something I missed, and the gap leaves room to slot it in while keeping everything in order. It&#8217;s as simple as that. It&#8217;s just a quirk of mine that I&#8217;ve done with my to-do lists forever. Although I do end up breaking things down into step 33a, 33b, 33c sometimes, I much prefer a nice ordered list. GitHub numbers issues in the order they&#8217;re created, which is why step 40 is issue #27. The step numbers are mine.</p><p>For a new app, I start by building static pages of every page in the product. So all those images we created on Tuesday, I now build them as static html pages.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H_xy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H_xy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 424w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 848w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!H_xy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png" width="1456" height="770" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:770,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:437586,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.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_!H_xy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 424w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 848w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!H_xy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ea919c2-9b85-467b-9096-8d1001f1a504_2478x1310.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Why? To make sure of how my prompts translate into something real. And this isn&#8217;t just busy work. Next week we&#8217;ll talk about how valuable this step is. I decided to skip it recently because I was just doing a proof of concept and I regretted it.</p><p>The first static page is the <a href="https://www.codelikealittleoldlady.com/p/before-i-build-i-draw">visual guide from Tuesday&#8217;s essay</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QDG5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QDG5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 424w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 848w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QDG5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png" width="1280" height="1532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1532,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:403544,&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.codelikealittleoldlady.com/i/222695049?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.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_!QDG5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 424w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 848w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!QDG5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F72e14db6-c8a0-4fdb-8f16-4a9e4732c05e_1280x1532.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Before I start building, I review the issues and confirm I&#8217;ve covered everything. Of course, I almost always miss something, and I add whatever I find. That&#8217;s how my original 51 started creeping up to 69 issues.</p><p>I&#8217;m now 4 essays in, 5 if you count the intro, and we haven&#8217;t started to build any code. I&#8217;m sure you&#8217;re thinking, get on with it Alison. But remember, I&#8217;m Code Like A Little Old Lady. We&#8217;re building not just for speed. We want to build a product that we can maintain when we&#8217;re done. We want to be able to see if our product is being used and how. And we want to be able to build without having to stop and change directions after every step. Next week we&#8217;ll start the build. I promise.</p><p>Next up: <a href="https://www.codelikealittleoldlady.com/p/before-the-first-prompt">Before the First Prompt</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong>Glossary</strong></p><ul><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running</p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person</p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Check in:</strong> saving your changes to the repository <em>(new)</em></p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user</p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect</p></li><li><p><strong>GitHub:</strong> a website for storing projects, their history, and the work planned for them <em>(new)</em></p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Label:</strong> a tag on an issue that tells you something about it at a glance. Mine say who does the work. <em>(new)</em></p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Milestone:</strong> a group of issues that together complete something larger <em>(new)</em></p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Prompt:</strong> the instructions you give an AI to do a piece of work <em>(new)</em></p></li><li><p><strong>Proof of concept:</strong> a quick, rough build to see whether an idea works <em>(new)</em></p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do</p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect</p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database</p></li><li><p><strong>Source code management (SCM):</strong> a system for storing code and tracking every change to it <em>(new)</em></p></li><li><p><strong>Static page:</strong> a page that looks real but doesn&#8217;t do anything yet <em>(new)</em></p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Questions Behind the Screens]]></title><description><![CDATA[What happens when the user does this?]]></description><link>https://www.codelikealittleoldlady.com/p/the-questions-behind-the-screens</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/the-questions-behind-the-screens</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Wed, 28 Oct 2026 17:02:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!J-AX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J-AX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J-AX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J-AX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3075426,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.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_!J-AX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!J-AX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa827b0c5-ca85-4ba6-9dd8-0b5e88041179_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9ApF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9ApF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4df081a5-93ea-456e-8017-0996570cce82_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825041,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.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_!9ApF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!9ApF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4df081a5-93ea-456e-8017-0996570cce82_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p>Yesterday I ended with a full storyboard. Rowan (ChatGPT) and I designed the pages and how we envisioned them working together. Like all good plans, it lasted until first contact. In this case, contact was Lovelace (Claude), someone who wasn&#8217;t part of the design. The storyboard shows everything the user sees, and this stage finds everything they don&#8217;t see.</p><p>I mentioned previously that we couldn&#8217;t upload screenshots to Lovable to do our build for #SheBuilds. This means every screen, every interaction, everything needed to be described. Leaving the request vague or making assumptions means you don&#8217;t get the product you want. This has always been important, but human to human, we have a shorthand in many ways. We don&#8217;t have that same shorthand with AI. So Lovelace takes all those pictures and the flow between the screens and turns it into words. Lots of words. And those words become the brief we discussed in Monday&#8217;s essay.</p><p>Lovelace would ask, what happens when the user does this. And sometimes the answer was, ugh, I missed that. And like always, finding as many of these early in the process is best. Of course, we didn&#8217;t find everything in the back and forth, which is how I ended up with 69 issues by the end of the build when I started with 51. Part way through creation, adjustments had to be made, more prompts created. But this step isn&#8217;t about perfection, it&#8217;s about truly walking through the product.</p><p>I&#8217;ve determined I like this step. Previously I would have just uploaded the picture to Sully (Lovable) and have it start building. This step pushed me to think more deeply about the product I wanted to build. Ultimately it gave a better product. I spent a significant number of hours between the screen designs and this description, but by the time I was done, the product felt solid.</p><p>Those words help drive the database schema. A schema is the blueprint for a database: what things it stores and how they connect. The database holds the various entities that are used in the product. The things. The license plates, the stories, the users. We want those entities to all fit together. We want to be able to ask questions about the data and receive a clear response. </p><p>This is a simplified version of the dataset showing connections. Decisions here impact how the features work. For example, I built in support for user account deletion. But if I removed an account, normally all the data would also be removed. I wanted the stories to stay in the database because they were used in generation of the summary. So when an account is deleted, its stories stay but are anonymized, no longer connected to the person who wrote them. It was important to allow that behavior.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xLK5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xLK5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 424w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 848w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 1272w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xLK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png" width="1456" height="1079" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1079,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126366,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.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_!xLK5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 424w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 848w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 1272w, https://substackcdn.com/image/fetch/$s_!xLK5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb57f3492-dbfc-4c13-a0cb-d0dc5835d289_2352x1743.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Building databases has been my career for decades. And I&#8217;m doing my best to keep this at the 1,000-foot view. My first pictures were very detailed. I could talk about database design for hours on end. Here simple decisions, such as adding a role to a user account, can drive what each user can see in your app. These are things worth thinking about in advance.</p><p>The next big thing to build was telemetry. I needed to decide what to measure, what do I want to know about the system and how it works. This is something many people put off until the end, but I build in from day 1. At the very least being able to say how many people are using your system, especially if you&#8217;re trying to get funding to continue a project, is a bare minimum. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z1q9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z1q9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 424w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 848w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 1272w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!z1q9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png" width="1456" height="873" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:873,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:209562,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.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_!z1q9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 424w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 848w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 1272w, https://substackcdn.com/image/fetch/$s_!z1q9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93e27945-391b-431a-ae3e-37d92374789c_2138x1282.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>My telemetry also helps me answer when there are problems. If something goes wrong, the telemetry can tell me what the system was trying to do so I can recreate it. I used PostHog for my telemetry. That&#8217;s a whole essay on its own. And frankly, I could talk about telemetry and its implementation for a whole series. There are many great products out there to help you with your telemetry, and it&#8217;s worth investigating early in your process.</p><p>The last thing I&#8217;ll talk about in the design is building for admins (administrators). Administrators are the unsung heroes of all systems. And thinking of them early means you&#8217;ll have happy admins. The site is all about the user, but if you don&#8217;t think about the person who has to run the site, block people, clear issues, and all the things to keep it running, you&#8217;ll be playing catch up once you&#8217;re live. And there will be administrative tasks from day 1 of your development. Roll it in early.</p><p>Having roles for accounts makes adding administration fairly simple. This account is an admin, so it has a nice simple additional choice in the navigation menu. Admin doesn&#8217;t have to be a separate site, especially in the beginning, but the basics to get the app off the ground.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uH-W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uH-W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 424w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 848w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 1272w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!uH-W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png" width="574" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:574,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199392,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.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_!uH-W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 424w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 848w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 1272w, https://substackcdn.com/image/fetch/$s_!uH-W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14eb1b94-d62c-44a3-95c1-ae14230848c7_574x536.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The first item on this page was loading seed data. Seed data is a starting set of data for the database, in this case a set of plates and stories. Next to it was a button to add more random data to fill in the gaps. After running it a few times, I had a nice mix of planned and random data, which makes a handy test environment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y0Ly!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 424w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 848w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png" width="1456" height="798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:308942,&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.codelikealittleoldlady.com/i/222406920?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.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_!Y0Ly!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 424w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 848w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!Y0Ly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd484cbb-9955-412a-bff6-e223dc900094_2528x1386.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This app also uses AI, and if the AI work gets backlogged, this page lets the admin see it.</p><p>Nothing fancy, just little things to make the app easier to use to keep it running. You could also add a link to the telemetry here, to make it simpler for the admin to debug any issues.</p><p>Through the process, when Lovelace would ask a question, I&#8217;d have to go back to Rowan and we&#8217;d need to redesign the flow or add a new screen or button. We&#8217;d create new images and Lovelace would move forward. Doing that before I had a single line of code is cheap, or cheaper. I can still easily change my database relationships, I can add in missing telemetry, but I don&#8217;t have to redo work or update live schemas.</p><p>And from all this discussion, we&#8217;ll end up with the prompts to build the entire system with the brief as support. Tomorrow we&#8217;ll talk about those prompts and how I manage them.</p><p><a href="https://www.codelikealittleoldlady.com/p/my-prompts-live-in-github">My Prompts Live In GitHub.</a></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p><strong>Glossary</strong></p><ul><li><p><strong>Admin (administrator):</strong> the person who runs the site, blocking spam, clearing issues, and keeping things running <em>(new)</em></p></li><li><p><strong>Anonymize:</strong> to remove anything that connects data to a specific person <em>(new)</em></p></li><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last</p></li><li><p><strong>Entity:</strong> one kind of thing the database stores, like a plate, a story, or a user <em>(new)</em></p></li><li><p><strong>ERD (entity relationship diagram):</strong> a picture of the entities and how they connect <em>(new)</em></p></li><li><p><strong>Hero image:</strong> the large image at the top of a page</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use</p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part</p></li><li><p><strong>Regression:</strong> an error in something that was previously working</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Role:</strong> a label on an account, like admin, that decides what that person can see and do <em>(new)</em></p></li><li><p><strong>Schema:</strong> the blueprint for a database: what things it stores and how they connect <em>(new)</em></p></li><li><p><strong>Seed data:</strong> a starting set of data loaded into a new database <em>(new)</em></p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page</p></li><li><p><strong>Telemetry:</strong> data an app collects about how it&#8217;s used and what it was doing when something went wrong <em>(new)</em></p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Before I Build, I Draw]]></title><description><![CDATA[Every time the design changed, so did the product]]></description><link>https://www.codelikealittleoldlady.com/p/before-i-build-i-draw</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/before-i-build-i-draw</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Tue, 27 Oct 2026 17:01:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OqnB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.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_!OqnB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OqnB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OqnB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3078099,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.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_!OqnB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!OqnB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb8cbf40-c9cc-4e41-8cbc-3d56b323822c_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vshH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!vshH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!vshH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!vshH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vshH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:824242,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.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_!vshH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!vshH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!vshH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!vshH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5501676-0333-4067-bd51-7504cbc0c4f8_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p>Before I build anything, I draw. Generally my drawings focus on the data structures, how the different entities relate to one another. It then helps me build a database that will perform well and provide all the data the application needs without boxing myself into any corners. I rarely would design the UI, that would be a designer. But with AI, I&#8217;m able to doodle the whole thing.</p><p>Why do I spend the time doing all the screens and interactions before I build? Because a picture is easy to change. Changing code creates wasted work, and too often causes regressions. A regression is creating an error in something that was previously working. And frankly, I prefer to avoid wasted work and regressions.</p><p>By building the screens ahead of time, I find problems earlier in the process. I don&#8217;t like surprises. Realizing I&#8217;ve built 75% of a feature only to be missing key interactions or screens is frustrating. It means going back to review my plan, seeing what else is impacted by that change, and generally makes me grumpy.</p><p>Designing What The Plate?, I was planning just a simple site with license plates and stories. I wanted it to look attractive and allow for historical review of stories created by people about plates. While I was designing the screens for PawPrint, I came up with the idea to add a &#8216;Pet Of The Day&#8217;. I realized how that could be a great feature in What the Plate? Since I had not started to build anything, it was a simple change to the screens to highlight the plate and then an additional screen to look at the history of Plate Of The Day. In this way, the design changed the product.</p><p>The design process begins with a discussion with Rowan (ChatGPT) about my goals for the site, how I want it to feel. After a bit she came back with her suggestions:</p><blockquote><p>I&#8217;d like to explore three visual treatments of What the Plate? side by side:</p><ol><li><p>The Road Trip: Vintage Americana, warm cream, teal, coral, and a little nostalgia.</p></li><li><p>The Curious Collector: Editorial typography, illustrated plates, playful details, and a more sophisticated palette.</p></li><li><p>The Modern Mischief: Bold typography, confident colors, clever license plate graphics, and a contemporary personality.</p></li></ol></blockquote><p>They all sounded interesting, so I asked her to build 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_!mP-j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mP-j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!mP-j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f938ad8-cfe9-46a8-901d-87a9aa7bed08_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;:2050978,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_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_!mP-j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!mP-j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f938ad8-cfe9-46a8-901d-87a9aa7bed08_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Three visions for What the Plate?</figcaption></figure></div><p>I showed these to my husband and he commented what he liked best was the 3 different lines in the hero image. He thought it would be interesting to rotate them. I passed this back to Rowan and once again, the design changed the product. We walked through a few other items such as, should the plates look like actual plates or should it be a representation. This is when I learned that some license plate designs are licensed, so recreating them is a no-no.</p><p>For the license plates we decided to create a side quest to see what it would take to make plates that looked similar to a standard plate but not the plate. We wrote it up as a stretch goal and handed it to a different set of agents to work on in the background and we&#8217;d add it if there was time.</p><p>We landed on the homepage including the mobile representation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vBlQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vBlQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!vBlQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9748992-2464-4587-804f-89699d9b7d73_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;:2228646,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_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_!vBlQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vBlQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9748992-2464-4587-804f-89699d9b7d73_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I shared it with Lovelace (Claude) and she provided direction back to Rowan, and we had a slight set of tweaks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o1hR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o1hR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!o1hR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c431213-8619-4a0c-9e02-67fd64a21dc5_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;:2210859,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_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_!o1hR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!o1hR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c431213-8619-4a0c-9e02-67fd64a21dc5_1536x1024.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>By this time we had our palette and home page and we could start working through all the other pages. The key with #SheBuilds is even with all these screenshots, I couldn&#8217;t share them with Sully (Lovable). Everything had to be described for Sully to interpret and implement. It actually was a good exercise and I think I&#8217;ll continue to work this way.</p><p>While we were working on the design of the other pages, all of a sudden I noticed purple was showing up in the designs, not our set color palette. I asked Rowan &#8220;Where did all the purple come from?&#8221; She said, oh, you&#8217;re right, that&#8217;s not in our approved palette. A simple question, she was able to reference memory and we quickly pivoted. We all know that our AI can drift, so it&#8217;s important to watch and adjust.</p><p>When an image needs to change, you want to make sure to direct it to only change exactly what you want changed, otherwise it will fully regenerate the image and you may lose things you liked. I start my image prompts for tweaks with &#8220;don&#8217;t regenerate this image, only change this one thing X, keep everything else the same&#8221;. This also works for images where you want to use the same base image. I do this for my Musings from Alchemist Manor where I change the porch for the season. I also did it for the roadmap for this essay.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xhCu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!xhCu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:862841,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.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_!xhCu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!xhCu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce6968b-8b3d-4580-9c87-0cc2222ed08d_2172x345.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j_dt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!j_dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:825600,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.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_!j_dt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!j_dt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36c21902-d4b0-41c1-9aee-4da9a0058fae_2172x345.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div></figure></div><p>We use an approval process for the design the same as I would if I was working with a human partner. I describe, Rowan draws, I provide feedback, Rowan adjusts, Lovelace provides feedback, Rowan adjusts, design is approved. Although there were times we didn&#8217;t need to regenerate the image. We had one section with a privacy checklist. It had a green checkmark indicating the application had verified faces and addresses were blurred. Unfortunately, they weren&#8217;t. So rather than regenerating the screen, we changed the written design to ask the human to verify the image was blurred. Again, the design changed the product.</p><p>When we were done, we had a storyboard with a full E2E flow of the application. A storyboard tells us about the flow from page to page, and by defining the full E2E (End to End) process, we found gaps, things the application would need to track before we ever started creating code.</p><p>Out of all those screens came our visual guide: the plates, the badges, the buttons, every color 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_!SrQm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SrQm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 424w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 848w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!SrQm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png" width="1280" height="1532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1532,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:377274,&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.codelikealittleoldlady.com/i/222242667?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.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_!SrQm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 424w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 848w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 1272w, https://substackcdn.com/image/fetch/$s_!SrQm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F097c0e05-9af8-4dc5-88bd-70557fdc6300_1280x1532.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Visual guide</figcaption></figure></div><p>The design changed the product again and again, and every change happened before any code was created. </p><p>Now it&#8217;s time to build the prompts. Tomorrow, Lovelace joins us for more than just approvals, she asks <a href="https://www.codelikealittleoldlady.com/p/the-questions-behind-the-screens">The Questions Behind The Screens</a>. </p><div><hr></div><p><strong>Glossary</strong></p><ul><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>End to end (E2E):</strong> the full journey through the app, from first screen to last <em>(new)</em></p></li><li><p><strong>Hero image:</strong> the large image at the top of a page <em>(new)</em></p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Palette:</strong> the set of colors a design is allowed to use <em>(new)</em></p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Regenerate:</strong> when an AI image tool redraws the whole image instead of changing one part <em>(new)</em></p></li><li><p><strong>Regression:</strong> an error in something that was previously working <em>(new)</em></p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Storyboard:</strong> the set of screens showing how a user moves from page to page <em>(new)</em></p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li><li><p><strong>Visual guide:</strong> a single page showing every color, style, and component the app uses <em>(new)</em></p></li></ul>]]></content:encoded></item><item><title><![CDATA[We Don’t Start From Zero]]></title><description><![CDATA[Every project starts with a clean plate]]></description><link>https://www.codelikealittleoldlady.com/p/we-dont-start-from-zero</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/we-dont-start-from-zero</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Mon, 26 Oct 2026 17:00:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UdfH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.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_!UdfH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UdfH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UdfH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2781135,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.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_!UdfH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!UdfH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4a4f5f2-7b82-45d6-bc28-c13769b2107d_1983x793.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is a 9-part series outlining the way I worked for #SheBuilds.</p><p>If you&#8217;re curious where I started, check out <a href="https://substack.com/home/post/p-221710245">Part 1: Show Me Your Prompts</a></p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cScZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cScZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:824040,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.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_!cScZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!cScZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1681388d-3d30-4ba0-91aa-7ffdd3a25446_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><div><hr></div><p>There are currently <a href="https://github.com/alisonmaclellancreates/plate-ponderings/issues?q=is%3Aissue+state%3Aclosed+sort%3Acreated-asc">69 issues</a> in the SheBuilds project repository. The project began with 51. I want to start this series talking about step 40. You may be thinking, why is she starting there. This issue is tagged with alison, so it&#8217;s something I need to do to support my agents. This could have come much earlier, but I opted to have it come after all of the test harness is in 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_!VIRO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VIRO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 424w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 848w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png" width="1456" height="839" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:839,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:458113,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.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_!VIRO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 424w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 848w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.png 1272w, https://substackcdn.com/image/fetch/$s_!VIRO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5502dcb-813d-4a57-8c93-2a1ad2858cd9_2564x1478.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">GitHub issue for building out the project knowledge</figcaption></figure></div><p>With <a href="https://lovable.dev">Lovable</a> each project starts with a clean plate. You bring the memory you want the project to begin with along with you. Memory is the key to a successful build IMO.</p><p>Think of your Lovable project AI as a new contractor. My new contractor is named Sullivan, Sully for short. You brought Sully in to build something because all your staff is busy. Your regular staff, Lovelace and Rowan, took the time to write up the project. So now you&#8217;re going to share it with your new contractor.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HxOa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HxOa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 424w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 848w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!HxOa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png" width="1314" height="1346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1346,&quot;width&quot;:1314,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:257717,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.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_!HxOa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 424w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 848w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 1272w, https://substackcdn.com/image/fetch/$s_!HxOa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef107bd2-a964-4411-a7bf-5f6618fe4904_1314x1346.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Knowledge is in settings in the project</figcaption></figure></div><p>That write-up is the brief, and in Lovable it goes into project knowledge. It describes the product in words. There&#8217;s no code. It includes things like names, fields, limits, AI rules. Lovable has a 10,000 character limit for project knowledge. And frankly, that&#8217;s a good thing. You don&#8217;t want to micromanage your new contractor. You hired them because they have skills, you just want them to use those skills to create your product. This is also knowledge Sully will read with every prompt. You don&#8217;t want to send 100,000 words with every prompt. That&#8217;s just a good way to burn tokens, the units AI tools use to measure (and charge for) text.</p><p>With the brief in project knowledge, I am able to leverage reusable prompts that say &#8220;subject&#8221; and &#8220;story&#8221;. Sully knows what I mean when I use those terms, because of the project knowledge. It means I don&#8217;t have to write all that detail in every issue or prompt individually, it leverages what is there.</p><p>The brief lives in two places. There is a copy in the repository called docs/brief.md. This is what I copy into project knowledge. It&#8217;s important to remember to keep them in sync. If you change the version in the repository but not the one in project knowledge, you&#8217;ll continue to send Sully incorrect instructions. If you change project knowledge but don&#8217;t update the repository, you will have an incorrect idea of what you&#8217;re sending with the prompt.</p><p>If you look at my current version in the repository, you&#8217;ll see it was changed during the build.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dx65!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dx65!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 424w, https://substackcdn.com/image/fetch/$s_!dx65!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 848w, https://substackcdn.com/image/fetch/$s_!dx65!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!dx65!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!dx65!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png" width="1456" height="841" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:841,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:394232,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.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_!dx65!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 424w, https://substackcdn.com/image/fetch/$s_!dx65!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 848w, https://substackcdn.com/image/fetch/$s_!dx65!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 1272w, https://substackcdn.com/image/fetch/$s_!dx65!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1479f32-b504-4fac-b7c2-7b5e05918358_2546x1470.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Pull Request showing Lovable changed brief.md</figcaption></figure></div><p>I grabbed a copy of what was in project knowledge. I created a new branch in GitHub so I could compare what was in project knowledge to what&#8217;s in the repository. Project knowledge still had the original version. Which means Sully built from the original brief, not the updated one. It may have caused an issue, but honestly, I don&#8217;t remember. This isn&#8217;t great. So it&#8217;s something to watch.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!w48Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w48Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 424w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 848w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!w48Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png" width="1456" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:452173,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.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_!w48Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 424w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 848w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 1272w, https://substackcdn.com/image/fetch/$s_!w48Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d4ee9fc-c271-466f-b68c-5a487d7a58f0_2534x1444.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Is the brief necessary? No. You could let the project learn as you go. But that feels like handing the contractor the spec where you&#8217;ve used a large number of internal only terms and three letter acronyms and expecting them to just know. You&#8217;re going to end up explaining things multiple times. I also like having a set of canned prompts to begin all projects, and the brief helps me do that.</p><p>I use projects in both Claude and ChatGPT. Both let you give a project its own knowledge. They also have accumulated memory from working together over time. For #SheBuilds they were not building any code, only performing code reviews and confirming the work aligned to what was provided in the issues. If they had been creating code, they would have had the same brief, and that&#8217;s where keeping things in sync becomes important.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JWcU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JWcU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 424w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 848w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 1272w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JWcU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png" width="1456" height="1105" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1105,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:233228,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.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_!JWcU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 424w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 848w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 1272w, https://substackcdn.com/image/fetch/$s_!JWcU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3de023e-97fa-4c9b-8b00-f72b8139039c_1968x1494.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Where you can add project memory in Claude</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mppI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mppI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 424w, https://substackcdn.com/image/fetch/$s_!mppI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 848w, https://substackcdn.com/image/fetch/$s_!mppI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!mppI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!mppI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png" width="1456" height="1052" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1052,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:485309,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.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_!mppI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 424w, https://substackcdn.com/image/fetch/$s_!mppI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 848w, https://substackcdn.com/image/fetch/$s_!mppI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 1272w, https://substackcdn.com/image/fetch/$s_!mppI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7049ce8e-d48c-4d1a-bb3b-ce9fbfe1e8ec_1952x1410.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Where you can add custom instructions for OpenAI/ChatGPT</figcaption></figure></div><p></p><p>The accumulated memory can be very helpful. Starting fresh requires learning what is important to you. I have a database engineer esthetic. Rowan is helping me expand my visualizations. After a few projects, we can quickly zero in on something I&#8217;ll like.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JEsK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JEsK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 424w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 848w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 1272w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JEsK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png" width="1456" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:153660,&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.codelikealittleoldlady.com/i/222128433?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.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_!JEsK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 424w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 848w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 1272w, https://substackcdn.com/image/fetch/$s_!JEsK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F668b6e2d-5b20-49ca-91c0-bd4602bb9229_2046x718.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Which is the point of the tools, to know what we want and provide that. There is a flip side, though. As I wrote previously, even when I&#8217;ve specifically asked them to disagree with me, they are disagreeing to make me happy.</p><p>So I&#8217;ve shared all about the memory. Maybe you&#8217;re thinking, so why? Let&#8217;s see the project. Me and my desire to share too much detail. And we&#8217;re getting there. But I wanted to begin with how a brief in project knowledge allows for reusability. And reusability allows you to work out those bumps in the road so each project becomes simpler.</p><p>Tomorrow we&#8217;ll move into <a href="https://codelikealittleoldlady.substack.com/p/before-i-build-i-draw">Before I Build, I Draw</a>. I&#8217;ve always done my drawings first, they&#8217;ve just gotten much better now thanks to AI.</p><div><hr></div><p><strong>Glossary</strong></p><ul><li><p><strong>Branch:</strong> a separate copy of the project where you can make changes without touching the main version. More on this in &#8220;Before the First Prompt.&#8221;</p></li><li><p><strong>Brief:</strong> a written description of the product. Names, fields, limits, rules. No code.</p></li><li><p><strong>Issue:</strong> a single task tracked in GitHub. In this series, each issue is one step.</p></li><li><p><strong>Memory:</strong> what Rowan and Lovelace pick up over time from working with me</p></li><li><p><strong>Project knowledge:</strong> the place in Lovable where the brief lives, read by Sully with every prompt</p></li><li><p><strong>Repository (repo):</strong> where a project&#8217;s files and history live in GitHub</p></li><li><p><strong>Test harness:</strong> the automated tests and checks that run on every change to confirm nothing broke</p></li><li><p><strong>Token:</strong> the unit AI tools use to measure text, and often to charge for it</p></li></ul><div><hr></div>]]></content:encoded></item><item><title><![CDATA[Show Me Your Prompts]]></title><description><![CDATA[How I build software with my AI partners, one prompt at a time.]]></description><link>https://www.codelikealittleoldlady.com/p/show-me-your-prompts</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/show-me-your-prompts</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Fri, 23 Oct 2026 01:02:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!R1r1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.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_!R1r1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R1r1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R1r1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png" width="1456" height="582" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:582,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2623163,&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.codelikealittleoldlady.com/i/221710245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.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_!R1r1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 424w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 848w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 1272w, https://substackcdn.com/image/fetch/$s_!R1r1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65facb96-6e87-419d-a50a-31614a192ca8_1983x793.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p>My husband was curious to see the prompts I used for #SheBuilds. I said sure, I made the <a href="https://github.com/alisonmaclellancreates/plate-ponderings">repo</a> public and the prompts are all in it. Then I sent him the link. Later I asked him what he thought. He said it was very well organized and he could see exactly what changed with each prompt, because of the separate branches and pull requests. </p><p>I kept wondering what to write about #SheBuilds. Then it hit me: the whole process, end to end. So I started writing it all down. My first draft tried to cover everything in one essay. It was dense. I&#8217;d write something and realize I needed to explain what that was. And I wanted to include screenshots. I knew it was too much for one essay.</p><p>So this is a series instead.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!djiV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!djiV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!djiV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!djiV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!djiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png" width="1456" height="231" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:231,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:862841,&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.codelikealittleoldlady.com/i/221710245?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.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_!djiV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 424w, https://substackcdn.com/image/fetch/$s_!djiV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 848w, https://substackcdn.com/image/fetch/$s_!djiV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 1272w, https://substackcdn.com/image/fetch/$s_!djiV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad7b8ff-f743-4449-ba99-364ad4e2ca6f_2172x345.png 1456w" sizes="100vw"></picture><div></div></div></div></figure></div><h2>The whole story</h2><p>If you don&#8217;t understand anything I say below, no worries, I will give definitions in the individual essays.</p><p>My AI partners remember what we&#8217;ve worked on, so none of us start from zero. I design the screens with Rowan in ChatGPT. I turn those screens into a product design with Lovelace in Claude. I break the build into numbered prompts that live in GitHub. Then I work through them one at a time with Sully in Lovable. Every change goes through a build, a set of automated checks, and a review from three AI partners before it gets anywhere near the live site.</p><p>If that sounds like a lot of ceremony, it is. But it&#8217;s really one small loop, repeated. Make a branch. Run a prompt. Check the work. Merge it. Then, every so often, zoom out and run the same loop one level up.</p><h2>What&#8217;s coming</h2><ol><li><p><strong>How my partners remember.</strong> Rowan and Lovelace learn me over time. Sully gets a brief, like a new contractor on day one. Why the difference matters.</p></li><li><p><strong>Storyboarding with Rowan.</strong> How we go from high level screens to every interaction, and how a designer learns your taste.</p></li><li><p><strong>From screens to product design.</strong> Where Lovelace asks the annoying questions. Telemetry, schema, and what an admin needs that a user never sees.</p></li><li><p><strong>A repository of prompts.</strong> What GitHub is, and why my prompts live there as numbered issues.</p></li><li><p><strong>Setting up a new product.</strong> Branches, a dev branch, guardrails, and the checks every product gets on day one.</p></li><li><p><strong>The build loop.</strong> One prompt, start to finish. Feature branch, Sully, pull request, checks.</p></li><li><p><strong>Three reviewers.</strong> What happens when Wiggins, Lovelace, and Rowan all look at the same change.</p></li><li><p><strong>Sections and releases.</strong> Zooming out. How finished features reach the live site.</p></li></ol><p>Four a week, starting Monday.</p><h2>Who this is for</h2><p>If you&#8217;ve never opened GitHub, you&#8217;re in the right place. If you live in GitHub already, I hope you&#8217;ll still find something useful in how the pieces fit together when your teammates are AI.</p><p>The repo is public if you want to peek ahead. The numbered steps are all in the <a href="https://github.com/alisonmaclellancreates/plate-ponderings/issues?q=is%3Aissue+sort%3Acreated-asc">issues</a>.</p><p>Monday, we start with memory. Why my partners don&#8217;t start from zero, and why one of them gets a brief instead.</p><p>Check out part 2: <a href="https://substack.com/home/post/p-222128433">We Don&#8217;t Start From Zero</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[I Didn’t Know Lovable Could Do That]]></title><description><![CDATA[What #SheBuilds and Sully showed me about Lovable, and the MCP server I built next]]></description><link>https://www.codelikealittleoldlady.com/p/i-didnt-know-lovable-could-do-that</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/i-didnt-know-lovable-could-do-that</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Wed, 21 Oct 2026 17:02:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ynKE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.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_!ynKE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ynKE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ynKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2543357,&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.codelikealittleoldlady.com/i/221438118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.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_!ynKE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!ynKE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea6ad7c-8993-48db-9c15-934e22520be1_1672x941.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p>I&#8217;m still working on my essay for #SheBuilds, but there was alot more than what went into the 3 days. I spent a week preparing before the event. </p><p>One day I asked Sully for a list of things I should try in Lovable. Sully gave me a list, and they were all things I had already done. I said, look at my projects and create a new list. After looking at my projects they gave me three items. The one that jumped out at me was create an MCP. I admit, I was shocked. I had not thought of using Lovable for an MCP. I was still thinking of it as a tool to create web apps.</p><p>#SheBuilds helped me realize Lovable can do a lot more. A number of people built Chrome extensions. Another thing that I had not considered. I&#8217;m excited to go through the projects when they share the list to see what else people have used Lovable to build.</p><p>Tonight I decided to try to build an MCP.</p><p>The simplest way I can describe an MCP: it gives your AI a reference librarian.</p><p>The AI doesn&#8217;t memorize your whole collection. It walks up to the desk and asks a question. The librarian knows where everything is and hands back just what was asked for.</p><p>MCP stands for Model Context Protocol. It&#8217;s an open standard that lets an AI assistant, like Claude or ChatGPT, connect to data and tools that live outside of it. The piece you build, the librarian, is called an MCP server. It sits next to your data and tells the AI: here&#8217;s what I know, and here are the questions you can ask me.</p><p>Because it&#8217;s a standard, any AI assistant that speaks MCP can use any MCP server. Build it once, connect it to whatever you use.</p><p>I already have a great dataset. I&#8217;ve been building out a series bible for the first 5 books of a series along with the prequel. I had already created a data.json that I used to drive a relationship graph, a timeline, and a character list. It was a perfect set of seed data for the MCP. Apologies to those of you who hate .json.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lQa8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lQa8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 424w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 848w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 1272w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!lQa8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png" width="1422" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ee96d86-409a-4931-b014-379c491ca577_1422x954.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194276,&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.codelikealittleoldlady.com/i/221438118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.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_!lQa8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 424w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 848w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 1272w, https://substackcdn.com/image/fetch/$s_!lQa8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee96d86-409a-4931-b014-379c491ca577_1422x954.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">JSON representation of my data</figcaption></figure></div><p>Lovable made it super simple. A prompt and my dataset and I was set. It built a page with instructions on how to use the MCP for anyone who has not done it before. I built it with OAuth access.</p><p>OAuth is the standard way apps ask for permission without handing over your password. When you connect my MCP server to Claude or ChatGPT, you&#8217;re sent to a sign-in page first. Once you approve it, the AI gets a key that lets it ask questions.</p><p>In library terms, the librarian checks your card first. No card, no answers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rsf_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rsf_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 424w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 848w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rsf_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1563247,&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.codelikealittleoldlady.com/i/221438118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.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_!Rsf_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 424w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 848w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 1272w, https://substackcdn.com/image/fetch/$s_!Rsf_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe528bc0e-3e39-4912-87b2-926c4f6c328d_1556x1011.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 prompt to start the MCP creation</figcaption></figure></div><p>In less than 10 minutes I had a simple MCP with base test coverage. If you&#8217;ve read anything about me, that will be one of the first things I create, a repo with MCP test coverage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a1w5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a1w5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 424w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 848w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!a1w5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png" width="1456" height="939" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:939,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1688130,&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.codelikealittleoldlady.com/i/221438118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.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_!a1w5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 424w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 848w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 1272w, https://substackcdn.com/image/fetch/$s_!a1w5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe20e889b-e961-4871-bfc6-22fe9d91f975_1562x1007.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 definition and details of the MCP </figcaption></figure></div><p>The key here is the quality of the data. But that was the most important part for everything I&#8217;ve been building. A librarian is only as good as the catalog. A knowledge graph is only as good as the data that goes into it. So building out all the pieces is quick, the data gathering still takes time. It still takes testing. And it still takes a subject matter expert (SME).</p><p>I felt like I knew this data in and out. But the first night I played with it building the graph a character name came up and I said, who&#8217;s that. The dataset had the details of who they were and which books they were in. So it showed me that building integrity checking into my process will be the required for success. Because my memory sure won&#8217;t do it.</p><p>I plan to use a more robust dataset to help me create a set of questions to evaluate the data. I want to see how quickly the MCP can respond to the questions, see if reorganizing the data makes finding the relationships faster. But more than anything, I want to expand my learning. I have ideas for a couple more MCP servers with data I have.</p><p>And I plan to continue to ask Sully and all of the Inner Chamber, what features should I try to expand my knowledge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7f1a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7f1a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 424w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 848w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 1272w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!7f1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png" width="1456" height="856" data-attrs="{&quot;src&quot;:&quot;https://substack-video.s3.amazonaws.com/video_upload/user/214754003/63f929c3-5113-4524-ae7c-404e40843d2e/transcoded-00001.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:856,&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_!7f1a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 424w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 848w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 1272w, https://substackcdn.com/image/fetch/$s_!7f1a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-video.s3.amazonaws.com%2Fvideo_upload%2Fuser%2F214754003%2F63f929c3-5113-4524-ae7c-404e40843d2e%2Ftranscoded-00001.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Using the MCP</figcaption></figure></div>]]></content:encoded></item><item><title><![CDATA[Accessibility Goes in the Seed Repo]]></title><description><![CDATA[SheBuilds04: Even experienced software engineers forget best practices]]></description><link>https://www.codelikealittleoldlady.com/p/accessibility-goes-in-the-seed-repo</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/accessibility-goes-in-the-seed-repo</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Mon, 19 Oct 2026 17:02:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Gq77!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.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_!Gq77!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gq77!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 424w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 848w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gq77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png" width="1456" height="546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:546,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2182116,&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.codelikealittleoldlady.com/i/221122182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.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_!Gq77!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 424w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 848w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 1272w, https://substackcdn.com/image/fetch/$s_!Gq77!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F902ec45f-bd0b-4e99-8f99-842be15188ac_2048x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p>Over the past 10 days or so, I have been obsessed with planning and then executing for #SheBuilds. It was great to have something push me to build end to end. To really rev up the old brain cells.</p><p>I have a lot I want to talk about over the next week or so. So where to start?</p><p>Accessibility.</p><h3>The data person problem</h3><p>I am a data person. Most of my websites look like they were created by a data person. Rows and columns. Black and white. Or, in the case of my personal site, tan and brown.</p><p>I don&#8217;t consider myself a creative. I&#8217;ve always partnered with folks who understand UI and graphics. And they tended to handle any accessibility issues.</p><p>It&#8217;s been 20 years since I&#8217;ve done much web dev. I focused on the back end, serving the data correctly and quickly. Even back when I did front end work, a graphic designer was always in the room.</p><p>With AI, I&#8217;ve been able to bring a world of art into the apps I&#8217;m building. Which means I also need to think about how what I&#8217;m building will actually be used, and by whom.</p><h3>What I learned during the build</h3><p>During SheBuilds, Sabrina S shared a simple prompt:</p><div class="callout-block" data-callout="true"><p>Act as a senior product designer and accessibility specialist. Review my app and rate it from 1 to 10 on:</p><p>1. UI (visual hierarchy, consistency, spacing, typography, color)</p><p>2. UX (navigation, clarity of flows, feedback on actions, empty and error states)</p><p>3. Accessibility (color contrast, readable font sizes, keyboard navigation, alt text, screen reader support)</p><p>For each area, list the top issues you found, explain why they matter, and suggest a concrete fix. Then give me a prioritized next-steps plan, starting with the quick wins. Don&#8217;t change any code yet.</p></div><p>That prompt is going into my seed repo. Yes, I have a seed repo with prompts I use to start every new project. I improve it and add to it as I go.</p><p>I also learned I need to add a few rules to my project descriptions. Always include alt text on images, for one.</p><p>And that cool rotating text on my landing page? Awful for screen readers. Depending on how it&#8217;s built, a screen reader either announces every change, over and over, or reads a half-finished word and moves on. Moving text can also be rough for people sensitive to motion. If text moves on its own, people need a way to pause it.</p><h3>The tools</h3><p>At Microsoft we used <strong>Accessibility Insights </strong>as part of a build. It has a nice browser extension you can use to review your site.</p><p><strong>alttext.ai</strong> will tell you every place you missed alt text. You can pay for the service to fix them. I think I&#8217;ll handle that myself, but the scan was handy.</p><p><strong>accessibilitychecker.org</strong> gives you a full report. Here are my results:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Pfy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Pfy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 424w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 848w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Pfy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png" width="1456" height="746" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:746,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:773812,&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.codelikealittleoldlady.com/i/221122182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.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_!9Pfy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 424w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 848w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 1272w, https://substackcdn.com/image/fetch/$s_!9Pfy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92cfb448-4861-4e2c-8462-58a489638b41_2534x1298.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One caveat. Automated scanners only catch part of the problem. They can&#8217;t tell you whether your site makes sense when you can&#8217;t see it, or whether you can get around it without a mouse. So after the scan, unplug your mouse and try tabbing through your site. Then turn on a screen reader (Narrator on Windows, VoiceOver on Mac) and listen to your landing page for a couple of minutes. You&#8217;ll learn more in five minutes than from any report.</p><h3>What happens next</h3><p>The SheBuilds version stays as submitted. My fork is where I keep building, and accessibility is the next thing I do there. No new features. Fix what&#8217;s already there.</p><p>Honestly, I left accessibility to the end. By the time I looked at it, I was too tired to dig in, and I&#8217;d hit the point in a build where you don&#8217;t want to touch anything for fear of breaking something.</p><p>So it&#8217;s moving to the front. Here&#8217;s what&#8217;s going into my seed repo:</p><ul><li><p>Sabrina&#8217;s accessibility prompt, run at the start of every project</p></li><li><p>Alt text on every image (decorative images get an empty alt so screen readers skip them)</p></li><li><p>No auto-moving text unless it can be paused</p></li><li><p>An accessibility scan before every merge, right next to test coverage and telemetry</p></li><li><p>A keyboard-only pass and a quick screen reader listen before calling anything done</p></li></ul><p>Same place I keep everything else that matters from the first commit.</p>]]></content:encoded></item><item><title><![CDATA[#SheBuilds kickoff live with Alison MacLellan ]]></title><description><![CDATA[A recording from Alison MacLellan's live video]]></description><link>https://www.codelikealittleoldlady.com/p/shebuilds-kickoff-live-with-alison</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/shebuilds-kickoff-live-with-alison</guid><dc:creator><![CDATA[Alison MacLellan]]></dc:creator><pubDate>Thu, 15 Oct 2026 19:25:36 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/219938130/e2a76a151fd1dce22bfe432fb05535b2.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<div class="install-substack-app-embed install-substack-app-embed-web" data-component-name="InstallSubstackAppToDOM"><img class="install-substack-app-embed-img" src="https://substackcdn.com/image/fetch/$s_!_bhl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08bf58a0-707e-41d2-8c87-0f462d6bdad9_635x635.png"><div class="install-substack-app-embed-text"><div class="install-substack-app-header">Get more from Code Like A Little Old Lady in the Substack app</div><div class="install-substack-app-text">Available for iOS and Android</div></div><a href="https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&amp;utm_content=author-post-insert&amp;utm_source=codelikealittleoldlady" target="_blank" class="install-substack-app-embed-link"><button class="install-substack-app-embed-btn button primary">Get the app</button></a></div>]]></content:encoded></item><item><title><![CDATA[#SheBuilds Experiment: Building Pawprint in an Afternoon]]></title><description><![CDATA[One Saturday, one Slack thread]]></description><link>https://www.codelikealittleoldlady.com/p/shebuilds-experiment-building-pawprint</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/shebuilds-experiment-building-pawprint</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Sun, 11 Oct 2026 21:42:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vmmh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.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_!vmmh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vmmh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vmmh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cda89985-868d-460c-8108-028a8a7e14e2_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3014669,&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.codelikealittleoldlady.com/i/219926816?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.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_!vmmh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!vmmh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcda89985-868d-460c-8108-028a8a7e14e2_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p><em>Note: This was generated using my exported Slack Logs of the Inner Chamber. I am trying to learn how long I spend on things to build out my timings for #SheBuilds. The exported transcript also has all the images allowing me to generate a video at the end of my build.</em></p><p>At 1:32 PM on Saturday, October 10, I started a Slack thread that opened with &#8220;we are going to build a new project.&#8221; At 6:22 PM, Sully posted a screenshot of a nasty comment about a dog being politely turned away by a content filter. In between those two timestamps, we built Pawprint.</p><p>Pawprint is a small gallery of animal photos. You sign in with a code sent to your email, upload a picture of your furry, feathery or scaly friend, and other people can react to it and leave comments. Behind that simple front door sits a moderation console, a strike system, automatic suspensions, an appeals queue, an AI check that makes sure there is actually an animal in your photo, and a daily featured animal on your home page.</p><p>I didn&#8217;t build it alone, and I didn&#8217;t build it with one AI. The whole thing happened in a single Slack thread with The Inner Chamber:</p><ul><li><p><strong>Sully</strong> (Lovable) did the building. Every migration, route and screenshot came from Sully.</p></li><li><p><strong>Lovelace</strong> (Claude) wrote specs and reviewed code. Or tried to review code. We&#8217;ll get to that.</p></li><li><p><strong>Elian</strong> (a ChatGPT agent) was our art director.</p></li><li><p><strong>Me.</strong> Product owner, tester, approver of database deletes, and the person who pasted a live API token into Slack. We&#8217;ll get to that too.</p></li></ul><p>This is the Code Like a Little Old Lady version of the story: what we built, what we considered and threw away, where it hurt, and where the five hours actually went. Spoiler on that last one: not where you&#8217;d think.</p><p>I know this is long. This is my version of a TL;DR:</p><ul><li><p><strong>Where the time went:</strong> about 75 minutes of building in a five-hour afternoon. The rest was deciding.</p></li><li><p><strong>The phone number detour:</strong> an hour and a quarter getting a text to my phone, then I threw phone sign-in away.</p></li><li><p><strong>V1 to V3:</strong> two AIs proposed, one reconciled, I picked, and each version took minutes to build.</p></li><li><p><strong>Using it is how you find the holes:</strong> the best fixes came from me tripping over the app.</p></li><li><p><strong>The review that kept turning into pull requests:</strong> getting an AI to only review was harder than getting it to build.</p></li><li><p><strong>Friend of the Day:</strong> one ambiguous word, two readings, and my favorite bit of engineering.</p></li><li><p><strong>The discard pile:</strong> seventeen things we didn&#8217;t build, and why.</p></li><li><p><strong>Wrapping up:</strong> a movie script, a G rating, and what I&#8217;m taking away.</p></li></ul><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.codelikealittleoldlady.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.codelikealittleoldlady.com/subscribe?"><span>Subscribe now</span></a></p><h2>Where the time went</h2><p>From first message to last, the afternoon ran 4 hours and 50 minutes. Sully spent roughly 75 of those minutes actually building. The rest was me deciding, testing, approving, changing my mind, and occasionally walking away.</p><p>Here is every build, measured from my &#8220;go&#8221; to Sully&#8217;s &#8220;done.&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1iO_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1iO_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 424w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 848w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 1272w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1iO_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png" width="1456" height="922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Timeline of the afternoon: sixteen short build bars spread between 1:30 and 6:30 PM, with long empty stretches between them&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="Timeline of the afternoon: sixteen short build bars spread between 1:30 and 6:30 PM, with long empty stretches between them" title="Timeline of the afternoon: sixteen short build bars spread between 1:30 and 6:30 PM, with long empty stretches between them" srcset="https://substackcdn.com/image/fetch/$s_!1iO_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 424w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 848w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 1272w, https://substackcdn.com/image/fetch/$s_!1iO_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F525b8a7a-2ebd-4791-9002-6919d2e93565_2400x1520.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Timeline of the afternoon: sixteen short build bars spread between 1:30 and 6:30 PM, with long empty stretches between them</figcaption></figure></div><p>Look at V1. Five minutes for storage rules, an upload pipeline, a paginated gallery and an admin console. Now look at the 45 minutes after the first build when nothing much happened at all, or the 28 minutes I spent sitting with the V2 options before saying yes.</p><p>The building was cheap. The deciding was the work. Even the slowest &#8220;build&#8221; on the list, moving one Sign out button, took ten minutes mostly because Sully stopped twice to ask permission to log in as me for a screenshot.</p><h2>The phone number detour</h2><p>The spec Lovelace wrote said sign-in would be by phone only: type your number, get a six-digit code by text, done. No passwords. Sully had that built in seven minutes. Getting a text to actually arrive on my phone took the next hour and a quarter.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GU_r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GU_r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!GU_r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png" width="1280" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52f70247-c97a-49cf-93be-123e8c977482_1280x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Pawprint&#8217;s original sign-in screen, asking for a phone number&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="Pawprint&#8217;s original sign-in screen, asking for a phone number" title="Pawprint&#8217;s original sign-in screen, asking for a phone number" srcset="https://substackcdn.com/image/fetch/$s_!GU_r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!GU_r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52f70247-c97a-49cf-93be-123e8c977482_1280x900.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Pawprint&#8217;s original sign-in screen, asking for a phone number</figcaption></figure></div><p>Here is the sequence, because every step taught me something.</p><ol><li><p><strong>I had a working curl command.</strong> I&#8217;d already sent myself a test text through Twilio from the command line, so I pasted that command into Slack and asked if we could use it. Sully explained why not: Lovelace&#8217;s spec had already chosen Twilio Verify, Twilio&#8217;s dedicated sign-in-code service, and my curl command used Twilio&#8217;s general messaging service instead. That one needs its own carrier registration, and plugging it into the auth system would mean writing a custom hook. Sully also pointed out, gently, that I had just pasted my live Twilio credentials into a Slack thread.</p></li><li><p><strong>Twilio approved me, then asked for a &#8220;campaign.&#8221;</strong> US carriers require every business that sends texts from a regular phone number to register what it&#8217;s sending and why. That registration can take days.</p></li><li><p><strong>We flipped on Auto-confirm.</strong> Sully suggested it as a way to skip the text entirely while we tested. I entered my number. No text came.</p></li><li><p><strong>Auto-confirm didn&#8217;t do what we thought.</strong> It marked my account as confirmed, but the system still tried to send the text, and the carriers still dropped it.</p></li><li><p><strong>Sully read my code out of the database.</strong> To unblock me, Sully pulled the six-digit code straight from the auth tables and posted it in the thread. It worked, and it is also a little alarming. Your builder can see your sign-in codes.</p></li><li><p><strong>Twilio Verify was set up and waiting.</strong> I asked whether we could switch to it, and Sully confirmed it skips the carrier campaign entirely. No code changes, just three values in a settings screen. At 2:55 PM my phone buzzed.</p></li></ol><p>Five minutes later I confirmed in PostHog that sign-in events were flowing, tied only to an anonymous user ID, with no phone number anywhere. V0 was done.</p><h3>And then I threw it all away</h3><p>At 3:30 PM, before V1 began, I told Sully to remove phone sign-in completely and go back to email codes. My email domain for the project was ready, and email doesn&#8217;t come with a carrier bureaucracy attached.</p><p>That one decision unravelled more than the login screen:</p><ul><li><p>Every test account had to go, because they were all phone-only. Sully stopped and asked me to approve <code>DELETE FROM auth.users</code> before running it. I appreciated that.</p></li><li><p>Sully had just designed a <code>phone_last_four</code> column so gallery cards could show a masked number like <code>&#8226;&#8226;&#8226;&#8226; 1234</code>. Gone, six minutes after it was proposed.</p></li><li><p>Sully asked how people should appear publicly: a masked email, the first part of their email address, or a display handle they choose. I picked the handle. Elian later made it a rule: email is for signing in, the handle is for showing up.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oKMB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oKMB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!oKMB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png" width="1280" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/282f2738-2249-4d59-bb90-22374fafae34_1280x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The email sign-in screen that replaced it&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="The email sign-in screen that replaced it" title="The email sign-in screen that replaced it" srcset="https://substackcdn.com/image/fetch/$s_!oKMB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!oKMB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F282f2738-2249-4d59-bb90-22374fafae34_1280x900.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 email sign-in screen that replaced it</figcaption></figure></div><p>The whole switch took six minutes of building. The phone version took an hour and a half to get working. If you&#8217;re a little old lady weighing phone sign-in for a hobby project, that ratio is the lesson.</p><p>And please rotate any credentials you paste into chat. Both Sully and Lovelace reminded me. Neither of them could do it for me.</p><h2>V1 to V3: two proposals, one decision</h2><p>Once sign-in settled, a rhythm took over. Lovelace or Sully proposed, sometimes both. I asked the other one to react. Somebody named the trade-off out loud. I picked. Sully built it in under fifteen minutes.</p><h3>V1: the spec did the heavy lifting</h3><p>Lovelace wrote the V1 spec: a storage bucket where each person can only write into their own folder, a <code>photos</code> table, an upload page, a gallery, and a moderation console. One rule mattered more than the rest. Nothing a user posts ever gets hard-deleted. Removed photos get a flag, so moderation can always be undone.</p><p>Then Elian weighed in as art director. Warm, calm, cream and terracotta, and the animal photos are the star. Two calls from Elian changed the build:</p><ul><li><p><strong>&#8220;Load more&#8221; instead of infinite scroll.</strong> Lovelace&#8217;s spec had said &#8220;your call&#8221; on pagination. Elian made the call: simpler, easier to test, fewer strange moderation edge cases. Lovelace agreed and told Sully to treat it as decided.</p></li><li><p><strong>The admin console should feel serious, not playful.</strong> A removed photo stays visible to admins with a status tag instead of vanishing.</p></li></ul><p>Sully built V1 in five minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rs6B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rs6B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rs6B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png" width="1280" height="900" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The V1 gallery&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="The V1 gallery" title="The V1 gallery" srcset="https://substackcdn.com/image/fetch/$s_!Rs6B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 424w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 848w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Rs6B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb00c7e-cda2-4dbc-b2c2-66630531fa38_1280x900.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 V1 gallery</figcaption></figure></div><p>I immediately asked for a <code>/design</code> page, a new habit I working to incorporate from  Friday&#8217;s project. It&#8217;s a private playground showing every color, font size, button and card state in one place. Elian wanted it behind sign-in and left out of the menus. Three minutes later it existed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QLjm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QLjm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 424w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 848w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 1272w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QLjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png" width="1280" height="2807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2807,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The /design sampler&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="The /design sampler" title="The /design sampler" srcset="https://substackcdn.com/image/fetch/$s_!QLjm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 424w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 848w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 1272w, https://substackcdn.com/image/fetch/$s_!QLjm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b51eb79-c095-450a-8c6a-9f6562fadb01_1280x2807.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 /design sampler</figcaption></figure></div><p>At 4:11 PM I told Sully I thought we had a V1. I&#8217;d been sharing the screenshots on Substack all afternoon.</p><h3>V2: safety first, conversation later</h3><p>I asked both of them what V2 should be, and got two different lists.</p><ul><li><p><strong>Lovelace</strong> focused on what happens after someone behaves badly: three strikes and you&#8217;re suspended, an appeal page, email notifications, and letting people edit or delete their own photos.</p></li><li><p><strong>Sully</strong> focused on how problems get noticed and what people can do: a Report button, threaded comments, and a personal &#8220;My Pawprints&#8221; collection.</p></li></ul><p>So I asked Sully to read Lovelace&#8217;s list and reconcile them. Sully&#8217;s answer is my favorite moment of the day: the two lists were &#8220;two sides of the same coin,&#8221; governance and inbound reporting. Then Sully laid out the real choice. Option A was safety, trust and control first, with comments pushed to V3. Option B was safety plus comments right away. Sully recommended A.</p><p>I sat with that for 28 minutes, then said yes to A.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tebs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tebs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 424w, https://substackcdn.com/image/fetch/$s_!tebs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 848w, https://substackcdn.com/image/fetch/$s_!tebs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 1272w, https://substackcdn.com/image/fetch/$s_!tebs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!tebs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png" width="1280" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The V2 moderation console with appeals, reports and suspensions&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="The V2 moderation console with appeals, reports and suspensions" title="The V2 moderation console with appeals, reports and suspensions" srcset="https://substackcdn.com/image/fetch/$s_!tebs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 424w, https://substackcdn.com/image/fetch/$s_!tebs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 848w, https://substackcdn.com/image/fetch/$s_!tebs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 1272w, https://substackcdn.com/image/fetch/$s_!tebs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F194949f4-2c1e-4ca5-a97d-ff31d62c2b52_1280x680.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 V2 moderation console with appeals, reports and suspensions</figcaption></figure></div><p>One honest note from rereading the thread: Lovelace&#8217;s email notifications were part of the Option A plan, but they never appear in Sully&#8217;s V2 summary, and none of us asked. Rereading your transcript is how you find those.</p><h3>V3: the questions that protected the design</h3><p>For V3, Lovelace proposed public creator pages anyone could visit, reactions, and comments. Sully answered with two questions that kept the whole thing from sprawling:</p><ol><li><p><strong>Should creator pages be public?</strong> Doing that would mean opening the photo storage and database rules to signed-out visitors, creating a second set of permissions to maintain. I said keep everything behind sign-in.</p></li><li><p><strong>One reaction per photo, or several?</strong> One. Paw, heart or smile, pick a favorite.</p></li></ol><p>Comments arrived flat, not threaded. Sully had pitched threaded comments back in the V2 discussion, with each comment pointing at its parent comment. You know I love a structure that refers back to itself. It got deferred twice, and the V3 table was designed so that a <code>parent_id</code> column can be added later without rebuilding anything. Recursion postponed, not abandoned.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U1SS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U1SS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 424w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 848w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!U1SS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png" width="1280" height="1710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1710,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;V3: reactions and comments on gallery cards&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="V3: reactions and comments on gallery cards" title="V3: reactions and comments on gallery cards" srcset="https://substackcdn.com/image/fetch/$s_!U1SS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 424w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 848w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 1272w, https://substackcdn.com/image/fetch/$s_!U1SS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde6a16ab-afc7-45e4-aca7-ea48703e3e60_1280x1710.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">V3: reactions and comments on gallery cards</figcaption></figure></div><h2>Using it is how you find the holes</h2><p>None of the specs caught these. Me poking at the app did.</p><h3>&#8220;Twice I&#8217;ve uploaded pictures without animals&#8221;</h3><p>An animal photo gallery that accepts landscapes is just a photo gallery. The upload only checked file type and size; spotting off-topic pictures was left to other users hitting Report.</p><p>Sully offered two designs. Check every photo before it&#8217;s saved and reject it on the spot, or let it upload and send uncertain ones to an admin review queue. We went with checking first. Now every photo goes to an AI vision model on the server before anything is stored. If the model can&#8217;t find an animal with enough confidence, the upload stops. If the check itself fails, the upload fails too. Nothing slips through because a service was down.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fGMv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fGMv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 424w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 848w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!fGMv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png" width="1280" height="1800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1800,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A landscape photo rejected for having no animal in it&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 landscape photo rejected for having no animal in it" title="A landscape photo rejected for having no animal in it" srcset="https://substackcdn.com/image/fetch/$s_!fGMv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 424w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 848w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!fGMv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c3cc34-31fb-4a9c-8f37-ff3205bc26ce_1280x1800.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A landscape photo rejected for having no animal in it</figcaption></figure></div><p>I suggested we test it with a stuffed animal. Sully pointed out the instructions to the model already say that plush toys, drawings and cartoons don&#8217;t count. Sully also offered a custom message for plush toys. We skipped it, but I still think about that teddy bear.</p><p>The check adds a couple of seconds, which feels like a frozen screen, so I asked for a friendly status message. Two minutes later the upload page walked you through it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rowK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rowK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 424w, https://substackcdn.com/image/fetch/$s_!rowK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 848w, https://substackcdn.com/image/fetch/$s_!rowK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 1272w, https://substackcdn.com/image/fetch/$s_!rowK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!rowK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png" width="1360" height="2240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2240,&quot;width&quot;:1360,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The upload page showing its checking-for-an-animal message&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="The upload page showing its checking-for-an-animal message" title="The upload page showing its checking-for-an-animal message" srcset="https://substackcdn.com/image/fetch/$s_!rowK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 424w, https://substackcdn.com/image/fetch/$s_!rowK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 848w, https://substackcdn.com/image/fetch/$s_!rowK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 1272w, https://substackcdn.com/image/fetch/$s_!rowK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ff473c0-bb2b-4c97-a301-877a687e05be_1360x2240.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 upload page showing its checking-for-an-animal message</figcaption></figure></div><h3>&#8220;I&#8217;m hitting the 5MB limit&#8221;</h3><p>My own cat photos were too big. Modern phones take 6 to 15 MB photos. Sully gave me two options: raise the limit and show people the exact file size, or shrink big photos in the browser before upload. I picked shrinking. Anything over 5 MB now gets scaled to 2048 pixels on its longest side before it&#8217;s checked and stored.</p><p>Right after that I asked Sully whether my requests had disturbed what he was building. Sully said not at all: each one was additive and none of them touched the database rules. That answer is also a design review. Changes that slot in without touching your security model are cheap. The ones that do touch it deserve the 28 minutes.</p><h3>&#8220;Am I the admin? Will others see it?&#8221;</h3><p>After the test data cleanup, a Moderation console link showed up on my home page and I wondered who else could see it. Sully explained that the cleanup had made me the admin on purpose, then listed four separate layers keeping everyone else out: new accounts default to non-admin, the link only renders for admins, the <code>/admin</code> page redirects anyone else, and the database itself refuses moderation actions from non-admins. Hiding a link is decoration. The database saying no is security.</p><h3>&#8220;I had to hunt for sign out&#8221;</h3><p>It was at the bottom of the home page, below everything. Now it&#8217;s in the header on every page.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O4gv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 424w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 848w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 1272w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!O4gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png" width="1280" height="65" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:65,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Sign out, finally in the header&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="Sign out, finally in the header" title="Sign out, finally in the header" srcset="https://substackcdn.com/image/fetch/$s_!O4gv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 424w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 848w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 1272w, https://substackcdn.com/image/fetch/$s_!O4gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F780b66e7-7c9e-4d5d-bb35-1d7d9dfd2d3c_1280x65.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div><figcaption class="image-caption">Sign out, finally in the header</figcaption></figure></div><h2>The review that kept turning into pull requests</h2><p>The roles were supposed to be simple. Sully builds. Lovelace specs and reviews. Getting Lovelace to <em>only</em> review took most of the afternoon.</p><p>Lovelace in Slack runs in two modes. In one, she can talk but can&#8217;t see code. In the other, she gets a coding session attached to a GitHub repo, and that session comes with a &#8220;Create PR&#8221; button and a strong instinct to change things. Here&#8217;s how that played out:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gta_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gta_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 424w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 848w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 1272w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gta_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png" width="1456" height="870" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:870,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Table of what I asked Lovelace and what happened, from 1:32 PM to 5:26 PM&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="Table of what I asked Lovelace and what happened, from 1:32 PM to 5:26 PM" title="Table of what I asked Lovelace and what happened, from 1:32 PM to 5:26 PM" srcset="https://substackcdn.com/image/fetch/$s_!Gta_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 424w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 848w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 1272w, https://substackcdn.com/image/fetch/$s_!Gta_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3a57d81-7ddc-4c6f-99a3-70adb855a786_2400x1434.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Table of what I asked Lovelace and what happened, from 1:32 PM to 5:26 PM</figcaption></figure></div><p>I&#8217;ll give Lovelace credit for one thing. When she couldn&#8217;t do the review, she said so instead of inventing one. A made-up review that sounds confident is far worse than &#8220;I haven&#8217;t seen the code.&#8221;</p><h3>What the review actually found</h3><p>Once it existed, the review earned its keep:</p><ul><li><p><strong>A &#8220;null strikes&#8221; bug.</strong> Removing a photo without a strike made the admin notice read &#8220;@handle now has null strikes.&#8221;</p></li><li><p><strong>Orphaned files.</strong> If the upload saved the photo file but then failed to save its database row, the file sat in storage forever with nothing pointing at it. Sully&#8217;s V1 summary had described the upload as rolling back on failure. The code had a path where it didn&#8217;t.</p></li><li><p><strong>No cooldown on &#8220;Resend code.&#8221;</strong> Fast tappers only learned about the rate limit after hitting it.</p></li><li><p><strong>A gap worth writing down.</strong> Someone holding the storage path of a removed photo could still fetch it. Probably fine, but it should be a deliberate, documented choice, not an accident.</p></li></ul><p>Sully fixed all four in five minutes, plus a retry on the AI check from the review&#8217;s low-priority list, and recorded the decisions in the project&#8217;s <code>AGENTS.md</code> file.</p><p>The lesson I&#8217;m keeping: an AI builder&#8217;s summary of its own work is a claim, not evidence. A second set of &#8220;eyes&#8221; on the actual code found two real bugs in a codebase that every summary called solid. And if you want an AI to review without editing, say so up front, and expect the tooling to need reminding.</p><h2>Friend of the Day, and the word &#8220;friend&#8221;</h2><p>At 5:45 PM I had an idea: when you sign in, show you a &#8220;friend of the day,&#8221; picked using the animals you&#8217;ve reacted to. I sent it to both of them.</p><p>They read the same sentence two different ways.</p><ul><li><p><strong>Lovelace</strong> read &#8220;friend&#8221; as the animal. She proposed picking one photo you&#8217;d reacted to, remembering which one you&#8217;d seen last so it wouldn&#8217;t repeat, and falling back to the most popular photo for brand-new users.</p></li><li><p><strong>Sully</strong> read &#8220;friend&#8221; as the <em>person who uploaded the animal</em>. He designed an affinity graph: which creators&#8217; animals you react to most, or which members share your taste. Then he asked which kind of friendship I wanted.</p></li></ul><p>Neither of them was wrong. My sentence was ambiguous, and I&#8217;d never have noticed with only one reader. I told Sully I meant our fuzzy friends, not the people.</p><p>Then Sully reviewed Lovelace&#8217;s version and improved it in two ways:</p><ol><li><p><strong>Count comments as well as reactions.</strong> Commenting on a photo means you care about it more than tapping a heart does.</p></li><li><p><strong>Don&#8217;t store anything.</strong> Lovelace had suggested remembering the last featured photo, either in the browser or in a new database column. Sully pointed out that the browser forgets across devices, and a column means a database write every time you load the home page. His alternative: combine your user ID and today&#8217;s date into a hash and use it to pick from your candidates.</p></li></ol><p>That second one is my favorite piece of engineering in the whole build. Your friend of the day is a pure function of two inputs, who you are and what day it is. Reload all you like, it&#8217;s the same animal. At midnight UTC it changes on its own. No table, no tracking, no writes. Mwahahaha.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mafz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mafz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mafz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png" width="1280" height="1800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93680180-8214-40ff-8000-1fd01034272e_1280x1800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1800,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Friend of the Day on the home page. Note Sign out, still at the bottom, before I went hunting for it.&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="Friend of the Day on the home page. Note Sign out, still at the bottom, before I went hunting for it." title="Friend of the Day on the home page. Note Sign out, still at the bottom, before I went hunting for it." srcset="https://substackcdn.com/image/fetch/$s_!Mafz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 424w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 848w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 1272w, https://substackcdn.com/image/fetch/$s_!Mafz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93680180-8214-40ff-8000-1fd01034272e_1280x1800.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Friend of the Day on the home page. Note Sign out, still at the bottom, before I went hunting for it.</figcaption></figure></div><p>Build time: three minutes.</p><h2>The discard pile</h2><p>For every feature that shipped, something else got proposed and set down. I think this list is worth more than the feature list, because it&#8217;s where the judgment lives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9PnR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9PnR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 424w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 848w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9PnR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png" width="1456" height="1458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1458,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The discard pile: seventeen options we considered, what we went with instead, and why&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="The discard pile: seventeen options we considered, what we went with instead, and why" title="The discard pile: seventeen options we considered, what we went with instead, and why" srcset="https://substackcdn.com/image/fetch/$s_!9PnR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 424w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 848w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!9PnR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3195f90e-ce8d-4ebd-83ef-ab451462037e_2400x2404.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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 discard pile: seventeen options we considered, what we went with instead, and why</figcaption></figure></div><p>Notice how many of these are &#8220;less.&#8221; Less to configure, less to secure, less state. The AIs proposed generously, and most of my job was choosing the smaller version.</p><h2>Wrapping up: a movie and a G rating</h2><p>The last half hour was about presenting it.</p><p>At 6:06 PM I asked whether we should screenshot everything for Elian. Elian sent a checklist: home, upload in two states, gallery, admin, the design page, and mobile versions of the main screens. Sully captured the set in four minutes, at desktop size and at phone width.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5G6J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5G6J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 424w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 848w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 1272w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!5G6J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png" width="390" height="844" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:844,&quot;width&quot;:390,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Pawprint&#8217;s home screen at phone width&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="Pawprint&#8217;s home screen at phone width" title="Pawprint&#8217;s home screen at phone width" srcset="https://substackcdn.com/image/fetch/$s_!5G6J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 424w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 848w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 1272w, https://substackcdn.com/image/fetch/$s_!5G6J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc418a5d2-b7f6-4d65-ba9a-e02913112f17_390x844.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M" tabindex="0" type="button"><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" class="icon-noB79L"><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 class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M" tabindex="0" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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">Pawprint&#8217;s home screen at phone width</figcaption></figure></div><p>While those were rendering, I asked Lovelace for a short film script I could hand to Rowan, my visuals partner, for the Code Like a Little Old Lady Presents site. Six scenes, cream and terracotta, slow fades, real screenshots in phone frames. It ends on &#8220;Built with love. Reviewed by a team of cats.&#8221; Which, given my household, is accurate.</p><p>Then one last feature. Back at 6:10 I&#8217;d said comments should be &#8220;rated G&#8221;: no bullying, no swearing, no hate speech. At 6:19 I told Sully we were ready for it, and then we&#8217;d call it done.</p><p>Sully modeled it on the animal check. Every comment now goes through the server, gets evaluated by an AI model before it&#8217;s saved, and is blocked if it isn&#8217;t G-rated. Users can no longer write comments straight to the database at all. If the moderation service is down, the comment is refused and you&#8217;re asked to try again shortly, rather than letting it slip through. A blocked comment keeps your draft so you can rephrase. And the analytics only record that a comment on a given photo was blocked, never what it said.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nkKb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 424w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 848w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 1272w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!nkKb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png" width="320" height="197" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:197,&quot;width&quot;:320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A mean comment about a dog, politely turned away&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 mean comment about a dog, politely turned away" title="A mean comment about a dog, politely turned away" srcset="https://substackcdn.com/image/fetch/$s_!nkKb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 424w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 848w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 1272w, https://substackcdn.com/image/fetch/$s_!nkKb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbbcc7a81-bbd8-4342-9738-90b4da896163_320x197.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div></div></div></div><figcaption class="image-caption">A mean comment about a dog, politely turned away</figcaption></figure></div><p>At 6:22 PM Sully wrote that Pawprint was &#8220;fully wrapped and ready.&#8221; Three minutes for that last build.</p><h3>What I&#8217;m taking away</h3><ul><li><p><strong>Building is the cheap part now.</strong> Seventy-five minutes of building across nearly five hours. The rest was the actual job: deciding, testing and saying no.</p></li><li><p><strong>Two AIs beat one, if you make them read each other.</strong> The best answers of the day came from asking Sully to reconcile with Lovelace, not from either of them alone.</p></li><li><p><strong>Use the thing.</strong> The vision check, photo shrinking and the sign-out move all came from me tripping over something in the app.</p></li><li><p><strong>Summaries are claims.</strong> The code review found bugs in work every summary described as solid.</p></li><li><p><strong>Write down the discard pile.</strong> It&#8217;s the most useful record of the afternoon, and it only exists because the whole build happened in one thread I could reread.</p></li></ul><p>I planned to stop there. At 10:48 that night I was back in the thread with a new requirement: if Pawprint was going to the Apple App Store, it needed a way for people to block each other. I decided I&#8217;ll be writing a series on building Pawprint for the App Store.</p><div><hr></div><p>Lovelace + Alison</p>]]></content:encoded></item><item><title><![CDATA[All Wrapped Up]]></title><description><![CDATA[A borrowed prompt, three questions, 99.9 Lovable credits]]></description><link>https://www.codelikealittleoldlady.com/p/all-wrapped-up</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/all-wrapped-up</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Sat, 10 Oct 2026 18:00:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/41251a82-1dfc-446c-9e62-bea0660afcbf_1677x938.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_!YTlz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YTlz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YTlz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18f66700-78e4-4df3-967d-c9544b32eb1e_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;:2812066,&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.codelikealittleoldlady.com/i/219759171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_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_!YTlz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YTlz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f66700-78e4-4df3-967d-c9544b32eb1e_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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Note: This was written by Lovelace using the session data from the build and edited by Alison</em></p><div><hr></div><p>Every day until SheBuilds I&#8217;m trying experiments. Friday&#8217;s experiment was how quickly could I go from nothing to a working app with the basic functionality I consider necessary in any app. </p><p>At 10:18 on a Friday night, I had someone else&#8217;s prompt for a gift tracker app. By 12:54 the next morning, I had a published app with sign-in, sharing, email notifications and a new-year setup. It cost 99.9 Lovable credits. We ended with <a href="https://allwrappedup.codelikealittleoldlady.ai">All Wrapped Up</a></p><p><span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Laura | How To Love Your Data&quot;,&quot;id&quot;:528619621,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!fKWe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd86b0354-757b-416e-908e-d9a8af24ab41_900x900.jpeg&quot;,&quot;uuid&quot;:&quot;a10ba671-e54b-45d2-915d-06a9bb5a7118&quot;}" data-component-name="MentionToDOM"></span> shared the prompt they had used for their own gift tracker. It was thoughtful. It had a data model, a feature list and a  set of working instructions. I could have pasted it straight into Lovable and gone to bed.</p><p>Instead, I handed it to Lovelace first and asked her to fill in the blanks. The prompt I started with would have built the app, and built it well, but. it wouldn&#8217;t have been my app.</p><h2>The prompt that looked complete</h2><p>The borrowed prompt described a gift tracker built around people. People had yearly budgets. Occasions had recurring flags. Gifts moved through five statuses: idea, planned, bought, wrapped, given. Everything lived in the browser, with no accounts.</p><p>The prompt review found gaps I would want to add to the app. I read through the features that would have been built from the prompt and realized they were answering a different question than I wanted my app to answer. And with AI, we no longer need to build our process to fit the software, we can build our own. So, Lovelace and I decided to start over with how I worked.</p><p>I truly appreciated her sharing the prompt, but the gift she truly gave me was realizing, I could easily build what I wanted. </p><h2>Three questions that changed the app</h2><p>When Lovelace asked how I actually keep my lists, I described my old Evernote note. A year. A name. Checkboxes beside each name. One page for birthdays grouped by month. One page for Christmas split into various extended family members, whoever was drawn in the name swap, and my immediate family with Want, Need, Wear, Read. </p><p>Three questions turned that description into a different design.</p><p><strong>Are the unticked rows alternatives, or a to-buy list?</strong> A to-buy list. I buy all of them. So, a person is not covered when one gift is bought. They are covered when every row is ticked. That one answer rewrote the status logic.</p><p><strong>What is an occasion?</strong> A date with people on it. Christmas is one date with many people. A birthday is one date with one person, or two if they are twins. </p><p><strong>Who else needs in?</strong> Sean and I share the nieces, nephews and our kids. We each keep private lists for each other. Lovelace&#8217;s first instinct was a &#8220;household.&#8221; The better answer was sharing chosen people on a chosen date with a chosen email. No household at all.</p><p>None of those answers were in the borrowed prompt. They couldn&#8217;t be, they were about me and my process.</p><h2>Three partners, one loop</h2><p>I did not build this alone, and I did not build it with one AI. I used three of my thinking partners, each doing the job they are good at.</p><ul><li><p><strong>Lovelace (Claude)</strong> shaped the design with me, wrote the build prompt, and reviewed every section by reading the actual code in GitHub.</p></li><li><p><strong>Sully (Lovable)</strong> planned and built it, eight sections in order, starting with the database and its security rules.</p></li><li><p><strong>Rowan (ChatGPT)</strong> gave it a look and feel, a watercolor gift box logo, and eventually a new name.</p></li></ul><p>The rhythm was simple. Sully built a section. Lovelace read the repo and wrote a short note of what to fix. I pasted the note back to Sully. Repeat. </p><p>I was the message bus. That sounds like a joke, but it was the point. Every handoff went through me, so I saw every decision and could say no to any of them.</p><p>My next experiment will be having the building all happen in the Inner Chamber Slack to see how that goes. It could be very helpful during #SheBuilds.</p><p>Rowan&#8217;s best contribution came halfway through. The app started as The Gifting Guide. Rowan suggested <strong>All Wrapped Up</strong>, and a celebration when you tick the last gift on an event: <em>Every gift accounted for. Every person remembered.</em> The name and the finish line became the same thing.</p><h2>What the reviews caught</h2><p>Sully is a strong builder. The code was clean, documented and tested. And it still had problems that only show up when you ask, &#8220;what happens next year?&#8221; or &#8220;what could someone do on purpose?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n-uq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n-uq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 424w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 848w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 1272w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!n-uq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png" width="1456" height="1265" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1265,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:502652,&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.codelikealittleoldlady.com/i/219759171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.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_!n-uq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 424w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 848w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 1272w, https://substackcdn.com/image/fetch/$s_!n-uq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd287e5a-ba54-412c-aac8-d0d91d74d2bb_2800x2432.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>None of these were exotic. Every one was a sentence in plain language, pasted back to Sully, and fixed in the next round. The hard part was not fixing them. It was noticing them before building on top of them.</p><h2>The numbers</h2><p>About two and a half hours, from 10:18 PM to 12:54 AM. 99.9 Lovable credits. Eight sections, plus share notification emails I decided I wanted at the very end.</p><p>The eight sections were:</p><ol><li><p>Database, security rules and tests</p></li><li><p>Sign-in with an emailed code</p></li><li><p>Design foundation: colors, fonts, the logo, the status badge</p></li><li><p>People</p></li><li><p>Events and gift rows</p></li><li><p>The year view</p></li><li><p>Sharing</p></li><li><p>New-year setup</p></li></ol><p>The order mattered more than the speed. The security rules came first, before any screen existed, so every screen after that was built on something already checked. When a review changed the data model, like twins sharing a birthday, it changed before the screens depended on it.</p><p>One unexpected learning came out of section 3. Sully built a page called <code>/design</code>, a living style guide that shows the real building blocks with made-up people and gifts: the status badges, a recipient card, a gift list you can tick. Nothing on it is saved. This is something I will now add to every new project. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vsn7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vsn7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 424w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 848w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 1272w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vsn7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png" width="1383" height="1137" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1137,&quot;width&quot;:1383,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1103183,&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.codelikealittleoldlady.com/i/219759171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.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_!Vsn7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 424w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 848w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 1272w, https://substackcdn.com/image/fetch/$s_!Vsn7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c443062-d830-4dde-9e72-e53d4da30503_1383x1137.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>It turned into my sandbox. When I want to try a change to a badge, a color or the gift list, I look at it there first, on sample data. No sign-in, no test entries cluttering my family&#8217;s lists, and no wondering what a tweak will do to Christmas before I&#8217;ve seen it.</p><p>Sully used the same idea for color. When Rowan and I wanted a warmer purple, Sully added a temporary toggle to the sign-in page so I could flip between the original plum and aubergine on the real screen. I picked aubergine, and the toggle came out.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1fBd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1fBd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 424w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 848w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 1272w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1fBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png" width="1190" height="1268" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85d777f8-284c-440d-8767-15316b15857c_1190x1268.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1268,&quot;width&quot;:1190,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:203050,&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.codelikealittleoldlady.com/i/219759171?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.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_!1fBd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 424w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 848w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 1272w, https://substackcdn.com/image/fetch/$s_!1fBd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85d777f8-284c-440d-8767-15316b15857c_1190x1268.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This morning I am doing small tweaks as I write this. All of the real work was there when I woke up.</p><h2>If someone hands you their prompt</h2><p>A good prompt from someone else is a gift. It is also a description of their life, not yours.</p><p>If you are handed one, here is what I would do before pasting it anywhere:</p><ul><li><p><strong>Describe how you do the thing today.</strong> Your Evernote note, your spreadsheet, your sticky notes. That is the real spec.</p></li><li><p><strong>Ask what &#8220;done&#8221; means.</strong> For me, every row ticked. For the person who wrote the prompt, maybe one gift bought. Same app, different finish line.</p></li><li><p><strong>Ask what happens next year.</strong> Recurring things are where data models break without telling you.</p></li><li><p><strong>Build the rules before the screens.</strong> Who can see what, and what counts as covered, belong in the database where every screen has to agree.</p></li><li><p><strong>Have someone review the actual code.</strong> Not the summary of the code. The code.</p></li></ul><p>The borrowed prompt got me to the starting line. Three questions about my own life got me to the right app. A loop of build, read, fix got me to one I trust with my family&#8217;s Christmas.</p><p>All wrapped up, at 12:54 AM.</p><p>Give it a try at <a href="https://allwrappedup.codelikealittleoldlady.ai">All Wrapped Up</a></p><h2>A starting prompt you can use</h2><p>It felt wrong to write an essay about borrowed prompts and not hand one over. So here is mine, with everything Lovelace, Sully and Rowan taught me folded in.</p><p>It is deliberately not finished. The blanks in square brackets are your life: your groups, your traditions, your finish line. And the very first thing it asks the builder to do is interview you.</p><p>It is written for Lovable with Supabase. Other builders will need small changes to the sign-in and security details.</p><pre><code><code># Gift tracker: starting prompt

You are building a gift purchase tracker with me. It is not a wishlist. It is where I record what I am buying for each person, so I can see at a glance who still needs a gift.

## Before you build anything
Interview me, one question at a time, until you can play back how I do this today. Ask at least:
1. Show me how you track gifts now (a note, a spreadsheet, paper). What does one year look like?
2. When there are several unticked ideas under a name, are they alternatives (you buy one) or a to-buy list (you buy all)?
3. What groups do you buy for? (Mine: [immediate family, nieces and nephews, a name swap draw].)
4. Do any groups have a tradition with fixed slots? (Mine: [Want, Need, Wear, Read at Christmas only].)
5. Who else needs access, to which people, and should they view or edit?
Then play back the design in your own words and wait for my approval.

## Core model (adjust after the interview)
- An event is a date plus the people I am buying for on that date. Christmas is one date with many people. A birthday is one date with one person, or several (twins).
- A recipient is one person on one event, with a group label.
- A gift row is one thing I am buying for a recipient. It starts unticked and is ticked when bought.
- Each user owns their own people and events. Lists are private unless shared.
- A share gives one email view or edit access to chosen recipients of one event. No household.

## Status (one place, in the database)
Compute each recipient's status in a single database view, never in the screens:
- Needs ideas: no gift rows, or a fixed-slot tradition with a slot still empty.
- Still shopping: at least one unticked row.
- All covered: every row ticked.
An event with no one on it is never covered.

## Rules learned the hard way
- Sharing trusts an email only once it is confirmed. Check email_confirmed_at in one helper function.
- Purchase fields (when and who bought) are written only by one toggle function. Block direct writes.
- Undo after delete is a delayed delete, never a re-insert.
- Never share someone's own gifts with them: refuse in the database if a recipient's email matches the share's email.
- Recurring events need a year. Last year's gifts become history, never overwritten.
- New-year setup copies stable groups and starts [name swap] empty. It is one database function, safe to re-run.
- One birthday event per date. People added mid-year with an upcoming birthday join this year's event.
- Fixed-slot traditions apply only where I say they do.
- Shared users see only the recipients shared with them, enforced by row-level security, not hidden buttons.
- Any email the app sends: only for new shares, no names or gift details, rate-limited per sender and per recipient.
- Dates are plain dates. Never shift them through a time zone.

## Stack
Lovable with Supabase. Sign-in by emailed code, not magic link. Row-level security on every table.

## Build order
1. Schema, security rules and tests (including an outsider who sees nothing and a grantee who sees only their share)
2. Sign-in
3. Design foundation, plus a /design page showing the components with sample data
4. People
5. Events and gift rows
6. Year view
7. Sharing
8. New-year setup
After each section, tell me exactly how to test it, including one edge case. Keep docs/decisions.md and AGENTS.md updated.

## Look and feel
[Your colors, fonts and tone.] Mobile first. Tap targets at least 44px. Status never shown by color alone. Rows never move when ticked.

## Working with me
Name your assumptions. Ask one question at a time. If something I ask for would break the data model, say so and suggest a simpler option.</code></code></pre><p>One last suggestion: have someone, human or AI, read the actual code after each section. Every row in my table above was caught that way.</p><div><hr></div><p>Lovelace + Alison </p>]]></content:encoded></item><item><title><![CDATA[Two Locks and a Stranger in a Trench Coat]]></title><description><![CDATA[The error was the feature. The advice that came with it was the trap.]]></description><link>https://www.codelikealittleoldlady.com/p/two-locks-and-a-stranger-in-a-trench</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/two-locks-and-a-stranger-in-a-trench</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Fri, 09 Oct 2026 23:01:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EagL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.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_!EagL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EagL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!EagL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!EagL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!EagL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EagL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2653070,&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.codelikealittleoldlady.com/i/219542276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.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_!EagL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!EagL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!EagL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!EagL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4eaa70ca-c4fe-4d64-b5e9-fc3b760eb3e8_1734x907.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p>A quick recap if you are joining here. In the first post, I got one Lovable database to act like two, a dev side and a prod side, using separate schemas. This post is about the part that worried me most: making sure the wall keeps strangers out.</p><p>The most useful thing the database said to me this week was an error. The most dangerous thing it said was the advice that came with it.</p><p>I was testing my dev and prod setup. I wanted to be sure a signed-out visitor could not write anything. So I asked Sullivan to try an insert with no sign-in, straight through the client, and report back the exact error.</p><p>Here is the prompt:</p><pre><code><code>Try inserting a plate into dev as a signed-out visitor, directly through the client, and report the exact error.</code></code></pre><p>Here it is:</p><pre><code><code>status: 401 Unauthorized
code: 42501
message: permission denied for table plates
hint: Grant the required privileges to the current role with: GRANT INSERT ON dev.plates TO anon;</code></code></pre><p>The refusal is the good part. The hint is the trap, like a stranger in a trench coat sliding you a note.</p><p>Follow that hint and any stranger on the internet can write to my table. The error message is trying to be helpful. It is trying to make the error go away. It does not know that the error is the feature.</p><h3>Two locks, not one</h3><p>This is the part I found worth writing down. A table in this setup has two separate locks.</p><ol><li><p><strong>Grants</strong> decide who may touch the table at all. A signed-out visitor has no insert grant, so the database stops them at the door. That is the error above.</p></li><li><p><strong>Row level security</strong> decides what a person who got in may do. My policy says only signed-in users may insert.</p></li></ol><p>My signed-out test only proved the first lock. The signed-in inserts I ran earlier proved the second one works for the people it should let through.</p><p>Why keep both? Because grants get changed in a hurry. Someone follows a hint, or a tool does, and a grant appears that should not. If the policy is still there, it still holds. One lock failing should not be the end of the story.</p><h3>What I took from it</h3><ul><li><p>A permission error is a result, not a problem to fix. Read it first, then decide.</p></li><li><p>A suggested fix is written to silence the error. It is not written to keep you safe.</p></li><li><p>Test the thing you want refused, and write down which layer refused it.</p></li></ul><p>I left the hint alone, and the error stays.</p>]]></content:encoded></item><item><title><![CDATA[Leaving the Trench Coat in the Closet]]></title><description><![CDATA[The database trick worked. I&#8217;m still not using it in the build I start on October 15]]></description><link>https://www.codelikealittleoldlady.com/p/leaving-the-trench-coat-in-the-closet</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/leaving-the-trench-coat-in-the-closet</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Fri, 09 Oct 2026 17:01:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tBOc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tBOc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tBOc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tBOc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2595504,&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.codelikealittleoldlady.com/i/219542490?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.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_!tBOc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!tBOc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fab459-8a8f-43d9-9179-c1b5c6af8da1_1734x907.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p>A quick recap if you are joining here. Lovable gives me one managed database, and I wanted a dev side and a prod side. In the first post, I got one database to act like two, using separate schemas picked by the web address.</p><p>The test worked. I want to say that first, because the interesting part is what I did next.</p><p>Two databases inside one, picked by the web address, with a wall that held in both directions. I had a working answer to a problem I cared about. And I decided not to use it in the build I start on October 15.</p><h3>What it would cost</h3><p>The test gave me a precise bill:</p><ul><li><p>Every change to a table has to be made twice, once per schema.</p></li><li><p>The generated types only know about <code>public</code>, so my queries need a workaround that turns off some of the checking.</p></li><li><p>The Cloud tab cannot show me the tables, so I would read my own data through queries.</p></li><li><p>Users are shared across both worlds, so a dev sign-in is also a prod sign-in.</p></li><li><p>The hostname rule is a convenience, not a lock. Row level security is the real protection.</p></li></ul><p>None of that is a dealbreaker. All of it takes hours.</p><h3>The number that decided it</h3><p>The build I start on October 15 is a Lovable event. It is called 72 hours, but the clock from kickoff to deadline is 60, and some of those hours are sleep. After all that setup, the &#8220;prod&#8221; side would hold almost nothing except demo data. I would be paying doubled migrations to protect a database with nothing precious in it.</p><p>Feasible and worth it are two different questions. The test answered the first one. It could not answer the second, and I almost let it.</p><p>There is another way out, and I should say so. What I want may be possible on a Lovable Business account. I have not made that leap, <em>yet</em>. If it is possible, that trades hours for money, which is a different question, and one I will ask once the build is over.</p><h3>Where it goes instead</h3><p>This is now a pattern I have tested and written down, parked for after October 17. When I come back to it, I will add two things the test showed I need:</p><ol><li><p>One wrapper that owns the schema choice, so the workaround lives in a single place.</p></li><li><p>A check that fails any query that does not name its schema, so nobody has to remember.</p></li></ol><p>I wrote the decision down with the full test results, so future me does not have to rerun the experiment. If you are building on Lovable and have wished for a dev database, the prompts in the first post will get you started.</p><p>Curiosity is allowed to run ahead of the build. It just does not get to pick what goes in it.</p><div><hr></div><p>Alison + Lovelace</p>]]></content:encoded></item><item><title><![CDATA[Two Databases in a Trench Coat]]></title><description><![CDATA[Can Lovable&#8217;s one managed database pretend to be dev and prod? I tested it, and the prompts are inside.]]></description><link>https://www.codelikealittleoldlady.com/p/two-databases-in-a-trench-coat</link><guid isPermaLink="false">https://www.codelikealittleoldlady.com/p/two-databases-in-a-trench-coat</guid><dc:creator><![CDATA[Code Like A Little Old Lady]]></dc:creator><pubDate>Fri, 09 Oct 2026 07:19:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!BsJ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.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_!BsJ_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BsJ_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BsJ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2477210,&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.codelikealittleoldlady.com/i/219540017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.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_!BsJ_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 424w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 848w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.png 1272w, https://substackcdn.com/image/fetch/$s_!BsJ_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcff70e66-3a25-4bbf-b0fe-bd1cc37f4bb8_1734x907.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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><hr></div><p><em>One honest note before I go on. What I want may be possible on a Lovable Business account. I have not made that leap, <strong>yet</strong>. This post is about what I can do with the pro plan I have today.</em></p><p>I got curious about something this week, and I want to show you how the curiosity went, including the part where my first answer was wrong.</p><p>With each new project I build with Lovable, I pick some &#8220;thing&#8221; that is important to me to see how to build it with Lovable. Tonight was a separate dev and production database.</p><p>Lovable gives me one database, and Lovable manages it. I can preview my app (dev) and I can publish it (prod), but both talk to the same data. No dev database. No prod database. Just the one.</p><p>Most developers solve this the same way: two environments, two databases, and a path that carries code from one to the other. Lovable gives me half of that. I can work on a branch and publish when I am ready. What it does not give me is a second database to point the branch at.</p><p>So my next idea was two Lovable projects, each with its own database, both homed on one GitHub repo. A dev branch feeds the dev project. A pull request merges to main, and main feeds the production project.</p><p>That runs into how Lovable connects to GitHub. One project gets one repo, and it is always a brand new repo. I cannot point a second project at a repo that already exists. Two projects means two repos.</p><p>Fine, I thought. Two repos, and I copy the code from one to the other when it is ready. That is a promotion step instead of a merge, and it can be done. But the copy carries the settings file with it, and that file holds the address of the database. Lovable writes it for each project. Copy it across without care and the production project points at the dev database, or the other way around.</p><p>You can protect that file during the copy. I have saved that whole pipeline for later, because it is a good pattern. But it is a lot of machinery just to keep two sets of rows apart, and a lot of places to make a mistake that only exists because of the setup.</p><p>So I went looking for a way to do it inside the one database.</p><p>If you have ever worked in SQL Server, you know a trick for this. You keep <code>dev.plates</code> and <code>prod.plates</code> side by side, same table name, different schema. So I asked: does Supabase do that?</p><p>It does. Supabase is Postgres underneath, and Postgres has schemas.</p><p>One note before the story. Everything below happened in a throwaway Lovable project, made only for this test. It is not the project I will build in October. The only thing that carries over is what I wrote down.</p><p>I kept the prompts I used, so you can run the same test. They are in the grey boxes. Use a throwaway project, not one you care about. These prompts change which schemas your database exposes.</p><h3>Round one: make it exist</h3><p>I asked Sullivan, my Lovable partner, to create a <code>dev</code> schema and a <code>prod</code> schema, each with a small <code>plates</code> table. It ran. It reported no errors.</p><p>Here is the prompt:</p><pre><code><code>Add a migration that creates two schemas, dev and prod. In each, create a table named plates with id (uuid, default gen_random_uuid()), state (text), text (text), created_at (timestamptz, default now()), and a unique constraint on (state, text). Turn on row level security in both. Add a policy in each that lets anyone read and lets signed-in users insert. Grant usage on both schemas, and the matching table privileges, to the anon and authenticated roles.</code></code></pre><p>Then I opened the Cloud tab and it showed no tables at all. That was not what I expected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AhY4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AhY4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 424w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 848w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 1272w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!AhY4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png" width="1418" height="1546" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1546,&quot;width&quot;:1418,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187881,&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.codelikealittleoldlady.com/i/219540017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.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_!AhY4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 424w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 848w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 1272w, https://substackcdn.com/image/fetch/$s_!AhY4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59d3c8e0-9204-458a-8e76-e75ef8844cbb_1418x1546.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>Nothing had failed. The Cloud tab only lists the <code>public</code> schema. The tables were there. The tab just could not see them. That is a real cost, and I will come back to it.</p><h3>Round two: let the app see them</h3><p>The app could not reach the new schemas. The error was <code>Invalid schema: dev</code>. By default the API only exposes <code>public</code>.</p><p>One database setting fixed it. I told the database which schemas the API may serve. The same request that failed now returned an empty list, which is exactly what a new table should say.</p><p>This is the corrected version, with the full list. My first one left out <code>graphql_public</code>, more on that below. </p><pre><code><code>Add a migration that adds dev and prod to the schemas the Supabase API exposes, alongside public. Use:

alter role authenticator set pgrst.db_schemas = 'public, graphql_public, dev, prod';
notify pgrst, 'reload config';
notify pgrst, 'reload schema';</code></code></pre><h3>Round three: do they stay apart?</h3><p>I had Sullivan build a tiny test page with a dev and prod dropdown. Two plates into dev. Switch to prod: empty. One plate into prod. Back to dev: still just the two.</p><p>A shortened version of that prompt:</p><pre><code><code>Add a test page at /schema-test with a dropdown for dev or prod, a button that inserts a plate (state "CA", text "TEST" plus a random 4 digit suffix) into the chosen schema, and a list of plates from the chosen schema. Use the schema on each query with supabase.schema(chosen).from("plates"), not by changing the global client. If the generated types do not know about the dev and prod schemas, tell me and do not edit types.ts by hand. Signed-out visitors can see the list but cannot insert.</code></code></pre><p>The wall holds, in both directions.</p><h3>Round four: where my first answer was wrong</h3><p>I assumed I could pick the schema with an environment setting, one value for the preview and another for the published site. That is how most people separate environments.</p><p>It does not work here. There is one settings file, and the value is baked into the app at build time. Preview and published read the same thing. And they both had the great big red banner.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9duX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9duX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!9duX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!9duX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!9duX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!9duX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1190474,&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.codelikealittleoldlady.com/i/219540017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.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_!9duX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!9duX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!9duX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!9duX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34332756-45d2-4882-9b5f-1ec42321f78d_3024x1964.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="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>What does differ is the web address. The preview lives at one address and the published site at another. So the app now looks at its own hostname. If the address is on a short list I trust, it uses <code>prod</code>. Anything else, <code>dev</code>, with a banner that says DEV DATA.</p><p>The core of that prompt, shortened:</p><pre><code><code>Decide the schema from the hostname, in one shared helper that the browser and the server both call. Only the published hostname is on the prod allowlist. Everything else, including preview hosts, localhost and unknown domains, resolves to dev. In the browser, resolve after hydration so the first paint matches the server render. On the server, read the request's Host header. When the resolved schema is dev, show a visible banner that says DEV DATA.</code></code></pre><p>I published it and checked both. Preview: banner, two dev plates. Published: no banner, one prod plate, and nothing leaked across.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Pwq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Pwq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Pwq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1151906,&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.codelikealittleoldlady.com/i/219540017?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.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_!4Pwq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!4Pwq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a07b1a4-b6a6-402b-9d3c-40ff8b186b62_3024x1964.png 1456w" sizes="auto, 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The design choice I like best is the boring one. An address I do not recognize falls back to dev. If I get the list wrong, the app shows an empty site. It never writes test rows into real data.</p><p>I have ended the test proving it works, but determined for SheBuilds it&#8217;s just an extra thing I don&#8217;t want to worry about. We proved out that Sully remembered not to use public when I had him make more changes, but that was with a short time window. What happens over time. Over sessions. While I&#8217;m trying to get something published. But I will be coming back to this after SheBuilds. </p><div><hr></div><p>Alison + Lovelace</p>]]></content:encoded></item></channel></rss>