<?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[Anchorline Notes]]></title><description><![CDATA[Notes on building structure for money, inventory, and everything else people outgrow spreadsheets for.]]></description><link>https://blog.anchorline.io</link><image><url>https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png</url><title>Anchorline Notes</title><link>https://blog.anchorline.io</link></image><generator>Substack</generator><lastBuildDate>Fri, 17 Apr 2026 09:51:05 GMT</lastBuildDate><atom:link href="https://blog.anchorline.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Anchorline]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[anchorline@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[anchorline@substack.com]]></itunes:email><itunes:name><![CDATA[Anchorline]]></itunes:name></itunes:owner><itunes:author><![CDATA[Anchorline]]></itunes:author><googleplay:owner><![CDATA[anchorline@substack.com]]></googleplay:owner><googleplay:email><![CDATA[anchorline@substack.com]]></googleplay:email><googleplay:author><![CDATA[Anchorline]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Cloudflare Workers in Anchorline]]></title><description><![CDATA[Edge routing for user subdomains]]></description><link>https://blog.anchorline.io/p/cloudflare-workers-in-anchorline</link><guid isPermaLink="false">https://blog.anchorline.io/p/cloudflare-workers-in-anchorline</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Tue, 06 Jan 2026 05:33:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qEdh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://blog.anchorline.io/p/the-infra-of-anchorline">In a previous post I touched on Anchorline&#8217;s infrastructure at a high level</a>. This post goes deeper into one specific piece that ended up being more important than expected: <a href="https://workers.cloudflare.com/">Cloudflare Workers</a>.</p><p>I tend to favor boring infrastructure. Boring usually means predictable, debuggable, and hard to accidentally break. Most of <a href="https://anchorline.io ?utm_campaign=Infrastructure &amp;utm_medium=Post &amp;utm_source=Substack">Anchorline</a> follows that rule, but one place where I intentionally added complexity was at the edge, using Cloudflare Workers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qEdh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qEdh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 424w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 848w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 1272w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qEdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png" width="1456" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152588,&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://blog.anchorline.io/i/183638378?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.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_!qEdh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 424w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 848w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 1272w, https://substackcdn.com/image/fetch/$s_!qEdh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d74c717-0686-4bf8-b7b3-bc125618cc4b_2214x708.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>First it&#8217;s important to know that Anchorline has a lesser-known capability where every user can have their own subdomain and publish public logs. These public logs are meant to be shareable, fast, and cheap to serve. At the same time, the private Anchorline API is locked down behind Cloudflare Access, and the public pages are served by a simple Node app running on Cloudflare Pages.</p><p>Because all of this lives in the same Cloudflare Zone, I was able to introduce a Worker that sits in front of every request and acts as the traffic coordinator.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IgoO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IgoO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 424w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 848w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 1272w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IgoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png" width="1456" height="376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:376,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:120442,&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://blog.anchorline.io/i/183638378?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.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_!IgoO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 424w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 848w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 1272w, https://substackcdn.com/image/fetch/$s_!IgoO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5a6aae-28f7-461c-80f6-8e6a3905be8f_2828x730.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So now when a request comes in for something like <a href="https://xyz.anchorline.io/">xyz.anchorline.io</a>, it hits the Worker first. The Worker determines whether that subdomain is public, where it should be routed, and whether it should be proxied, rejected, or passed through untouched. Not all subdomains are public, and handling that distinction at the edge keeps the application code simpler and safer.</p><p>Now a bit about caching since this has been a bonus byproduct of how this worker is setup. All user public subdomains are cached at the edge indefinitely. When data backing a public log changes, the cache is explicitly purged and immediately repopulated on the next request. The result is that public pages serve almost entirely from cache, and the backend API only sees traffic when data actually changes. This keeps bandwidth usage low and removes load from the API without introducing stale data issues.</p><p>I am intentionally skipping the detailed caching mechanics here, because they deserve their own post. The important point is that the Worker makes the rules explicit. Nothing is cached by default, and nothing is uncached by accident.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6881!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6881!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 424w, https://substackcdn.com/image/fetch/$s_!6881!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 848w, https://substackcdn.com/image/fetch/$s_!6881!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 1272w, https://substackcdn.com/image/fetch/$s_!6881!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6881!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png" width="1456" height="468" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:468,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90289,&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://blog.anchorline.io/i/183638378?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.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_!6881!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 424w, https://substackcdn.com/image/fetch/$s_!6881!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 848w, https://substackcdn.com/image/fetch/$s_!6881!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 1272w, https://substackcdn.com/image/fetch/$s_!6881!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1580266e-812e-4041-9cf4-23c78251aedb_1604x516.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One critical detail that made this setup reliable was careful use of Worker Routes. The Worker only runs on the routes it is responsible for, and is explicitly disabled on paths and subdomains where it should not interfere. Without this scoping, it is easy to create subtle bugs where edge logic leaks into private or internal traffic not to mention you quickly end up paying for requests that are entirely unnecessary. By removing them from the route you cut them off before they hit the worker and cost you a request. </p><p>This setup has taken many iterations to get right. It is slightly less boring than pure app-level routing or static rules, but in practice it has been stable and easy to reason about. More importantly, it keeps edge concerns at the edge, instead of spreading routing and caching logic across multiple codebases and dashboards.</p><p>So far this additional complexity has far outweighed the downsides.</p>]]></content:encoded></item><item><title><![CDATA[What Launching a Solo SaaS Actually Requires]]></title><description><![CDATA[The unglamorous work behind an uneventful launch day]]></description><link>https://blog.anchorline.io/p/what-launching-a-solo-saas-actually</link><guid isPermaLink="false">https://blog.anchorline.io/p/what-launching-a-solo-saas-actually</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Tue, 30 Dec 2025 06:24:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This post is not about growth, validation, or marketing tactics. I don&#8217;t have anything new to add there, and you&#8217;ve likely read all of it already. I mean sure I could say you need to market here and be sure to do SEO there, and oh yeah don&#8217;t forget your socials, etc.. but if you&#8217;re already reading this post there is a good chance you&#8217;ve read that advice a million times before.</p><p>So who is this post for? This post is for anyone in the pre-launch stage of developing their SaaS or even still in the idea stage that wants to know what it truly takes to bring their idea from just that an idea to launched &#128640;. I&#8217;m going to cover the topics that don&#8217;t often get discussed but are some of the most important parts of getting to launch day successfully.</p><h1>Operational Readiness</h1><p>In my opinion, this is probably one of the most overlooked steps that newer founders make on the journey to launch. So what is operational readiness? </p><blockquote><p>It&#8217;s simple, you remove the unknowns. </p></blockquote><p>Unknowns about deployments, unknowns about security, unknowns about data integrity, etc..</p><ul><li><p>Do you have the capability to deploy a hotfix at 3am?</p></li><li><p>Do you have the monitoring to surface errors?</p></li><li><p>Do you have the understanding of how to rollback a failed deployment?</p></li><li><p>Do you have the playback for restoring your database due to data loss?</p></li><li><p>Can you scale your services because of peak traffic?</p></li><li><p>Do you have alerts for the performance of your hardware?</p></li></ul><p>These are the types of questions that you want to answers to prior to your launch and they don&#8217;t take nearly as long to answer as you would think. Especially when you are able to answer them while not already in a crisis.</p><p>&#8220;Operational Readiness&#8221; is the prerequisite to &#8220;Operational Calm&#8221; and that calmness creates trust. When issues crop up they are just handled. Why? Because you took the time to playbook them before it was a crisis.</p><h1>Product Boundaries</h1><p>One of my all time favorite tv shows is <a href="https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(TV_series)">Halt and Catch Fire</a> and at one point in Season 3 Joe MacMillan erases a whiteboard filled with ideas. Ryan Ray protests but Joe says (and I&#8217;m paraphrasing here) &#8220;Anything important enough to be on that board we&#8217;ll remember tomorrow&#8221;. This scene has lived rent free in my head ever since I&#8217;ve seen it and speaks to a lot of what founders deal with in terms of product boundaries. Scope creep is real and insidious. By the time you realize it the sunk cost fallacy rears its head and what was just a nice feature before launch has pushed things back by weeks if not longer.</p><p>For the launch of <a href="https://anchorline.io/?utm_source=substack&amp;utm_medium=post&amp;utm_campaign=launch">Anchorline</a> I was obsessive about ensuring this did not happen this time. And for the most part I was successful. I shipped a bare bones export that allows users to get their data out if they like but cut import entirely for launch. Filtering, search, and sorting for a lot of tables got punted. I wanted a more feature rich collection of presets but ultimately settled on what I could get done in a few hours. Being surgical about what I punted let me focus on the areas where I wasn&#8217;t willing to compromise. </p><p>For example, onboarding was extremely important to me and I take a lot of pride in the work I did there. It took me nearly two weeks to get the onboarding flows exactly how I wanted them but I really wanted users to have a pleasant onboarding journey and not just get dropped into an empty admin left to figure things out on their own.</p><h1>Trust Your Primitives</h1><p>Similar in vein to &#8220;Operational Readiness&#8221; but where that is about your ability to act, trusting your primitives is about which failures are unacceptable. So what am I referring to when I say primitives? They are what I would call a class of systems that exist in every SaaS that you do not have the luxury of getting &#8220;mostly right&#8221;. They are not features, they are primitives.</p><ul><li><p>Auth</p></li><li><p>Billing</p></li><li><p>Data Models</p></li><li><p>Backups</p></li><li><p>Privacy</p></li><li><p>etc..</p></li></ul><p>Auth should not &#8220;mostly work.&#8221; Billing should not &#8220;usually be correct.&#8221; Data should not &#8220;probably be safe.&#8221; These are not areas where recovery is good enough. They are areas where correctness is the expected baseline.</p><blockquote><p>Shipping features on top of any untrusted primitives does not increase speed to launch it only increases the blast radius.</p></blockquote><p>The most useful rule of thumb to follow in this area is if a failure in this system could permanently lose you user trust then you need to really stress test it prior to launch.</p><h1>Narrative Clarity</h1><p>Before launch, you need a description of your product that you can repeat without adjusting it for the audience. I want to be very clear here, <strong>this is not marketing copy</strong>. It is not a pitch. It is the answer to a simple internal question: what is this thing, and just as importantly, what is it not?</p><p>If your explanation changes depending on whether you&#8217;re talking to a developer, a potential user, or a friend, that is a sign the product boundaries are still fuzzy. So when a potential user asks what the product is for, you should not be inventing language on the fly. Once people form their own mental model of your product, correcting it is far harder than preventing it.</p><blockquote><p>Personally, I underestimated how long this takes especially because in my case Anchorline is genuinely complex. It&#8217;s a system with a mental model, and most people will try to map it onto something they already know, spreadsheets, Notion, etc.. so for me it took nearly 2 mos. to arrive at something I was happy with.</p></blockquote><p>Once that description finally settled, everything else got easier. It clarified how I talked about the product, influenced product decisions, and shaped the direction of the marketing.</p><h1>What You Don&#8217;t Need</h1><p>Now here is what you don&#8217;t need and I expect that some of these will be slightly controversial. Most pre-launch advice that you&#8217;ll read is going to be frame around accumulation. More users, more validation, more certainty, more momentum. But none of those are prerequisites for the single most important thing .. <strong>shipping</strong>.</p><ul><li><p>You do not need an audience. Many of the most successful products launch quietly and only find their users later.</p></li><li><p>You do not need the perfect roadmap. Roadmaps created before real usage are mostly guesses, and they tend to anchor you to decisions made without evidence.</p></li><li><p>You do not need external validation to get started. It is very easy to get people to say they would pay for something. That does not tell you whether they will break out the wallet once it&#8217;s actually time.</p></li><li><p><strong>You do not need external validation to get started</strong>.</p></li><li><p>You do not need certainty. And lets be honest you&#8217;re not going to get it.</p></li></ul><h1>Closing</h1><p>Launch day is where the real accountability for your SaaS begins. Mistakes move from private and theoretical, to public, real and at time embarrassing. If your launch is boring, uneventful, and anti-climactic then I would wager that your founder journey hit a lot of the points above.</p>]]></content:encoded></item><item><title><![CDATA[The Infra of Anchorline]]></title><description><![CDATA[Notes on the infrastructure choices behind the app]]></description><link>https://blog.anchorline.io/p/the-infra-of-anchorline</link><guid isPermaLink="false">https://blog.anchorline.io/p/the-infra-of-anchorline</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Sat, 27 Dec 2025 03:11:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!96m0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Anchorline is a personal system for tracking things (<a href="https://anchorline.io/use-cases/home-inventory/">home inventory</a> and <a href="https://anchorline.io/use-cases/book-library/">book tracking</a> are popular use cases right now) that tend to sprawl across spreadsheets and disconnected apps. Since it handles user data that people expect to be correct and available, the infrastructure needs to be stable, secure, and predictable.</p><p><a href="https://anchorline.substack.com/p/oh-my-god-its-happening">Coming out of the public launch</a> I thought it would be interesting to do a quick overview of the infrastructure choices behind Anchorline and why they were made.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!96m0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!96m0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 424w, https://substackcdn.com/image/fetch/$s_!96m0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 848w, https://substackcdn.com/image/fetch/$s_!96m0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 1272w, https://substackcdn.com/image/fetch/$s_!96m0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!96m0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png" width="1456" height="469" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:469,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170729,&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://anchorline.substack.com/i/182672357?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.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_!96m0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 424w, https://substackcdn.com/image/fetch/$s_!96m0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 848w, https://substackcdn.com/image/fetch/$s_!96m0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 1272w, https://substackcdn.com/image/fetch/$s_!96m0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37a481b2-83e9-487a-a43f-ff255d599e60_2970x956.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Backend Services</strong></p><p>First and foremost the Api for Anchorline and the databases are all hosted on <a href="https://fly.io/">Fly.io</a> servers. When deciding on the backend hosting provider managed Postgres mattered, but the bigger win is how little attention Fly needs once it&#8217;s set up.</p><p>The API is written in Bun using Hono and personally I&#8217;ve found that this setup is fast and simple. Startup times are low, request handling is efficient, and the framework does not add much overhead. There is very little abstraction between the app and the platform, which keeps things easy to reason about.</p><p><strong>Frontend Services</strong></p><p>The frontend client is built with Next.js and hosted on <a href="https://vercel.com/">Vercel</a>.</p><p>This is my first production app deployed on Vercel and it has been smooth so far. Setting up dev, QA, and prod environments was painless. Preview deployments work out of the box, and promoting changes through environments is straightforward.</p><p>Since Vercel builds and maintains Next.js, the integration feels natural and avoids a lot of custom deployment work.</p><p><strong>Cloudflare</strong></p><p>The main <a href="https://anchorline.io/?utm_source=substack&amp;utm_medium=post&amp;utm_campaign=launch">anchorline.io</a> site is hosted on <a href="https://www.cloudflare.com/">Cloudflare</a> and I rely on it heavily for security. Bot Fight Mode and Zero Trust handle most of the protection, and Cloudflare Access sits between the app and the API to add an extra layer of control. Edge caching is a nice bonus.</p><p><strong>Managed Services</strong></p><p>In addition to hosting, Anchorline relies on a number of managed services:</p><ul><li><p><a href="https://stripe.com/">Stripe</a> for billing</p></li><li><p><a href="https://umami.is/">Umami</a> for analytics</p></li><li><p><a href="https://sentry.io/">Sentry</a> for error tracking</p></li><li><p><a href="https://betterstack.com/">BetterStack</a> for status monitoring, with a possible move to OpenStatus later</p></li><li><p><a href="https://workspace.google.com/">Google Workspace</a> and <a href="https://resend.com/">Resend</a> for email delivery</p></li><li><p><a href="https://github.com/anchorline">GitHub</a> for private repositories</p></li></ul><p>None of these choices are exotic, and that&#8217;s intentional.</p><p>It takes a fair amount of work to put together an app that is stable, performant, and scalable, but the payoff is that things mostly just work. When it comes to infrastructure, I strongly prefer boring, and this setup has been boring in exactly the right ways so far.</p>]]></content:encoded></item><item><title><![CDATA[Oh my God, it's happening!]]></title><description><![CDATA[Anchorline, which I have dubbed a spreadsheet alternative for everyday life, is finally out of private alpha.]]></description><link>https://blog.anchorline.io/p/oh-my-god-its-happening</link><guid isPermaLink="false">https://blog.anchorline.io/p/oh-my-god-its-happening</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Thu, 25 Dec 2025 23:58:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!h1CZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif" 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_!h1CZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h1CZ!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 424w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 848w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h1CZ!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif" width="640" height="360" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7821612,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://anchorline.substack.com/i/182596351?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!h1CZ!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 424w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 848w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!h1CZ!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd463878-8a0b-43cf-bdef-a11f6aaf9743_640x360.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://anchorline.io/?utm_source=substack&amp;utm_medium=post&amp;utm_campaign=launch">Anchorline</a>, which I have dubbed a spreadsheet alternative for everyday life, is finally out of private alpha.</p><p>The last few months have been a blur. A lot of building, rewriting, fixing things I thought were done, and discovering new problems five minutes after declaring something &#8220;solid.&#8221; At some point it crossed the line from &#8220;I&#8217;m still experimenting&#8221; to &#8220;this is becoming real&#8221;.</p><p>There&#8217;s a lot I want to write about how it works, why it&#8217;s shaped the way it is, and what surprised me along the way. But for now it&#8217;s Christmas and I&#8217;m going to enjoy the next few days after an intense period that brought me to a public launch.</p><p>It&#8217;s early, it&#8217;s real, and there&#8217;s a lot more coming that I couldn&#8217;t be more excited about. For now if you&#8217;d like to check it out please <a href="https://app.anchorline.io/signup">signup for the free trial</a> and let me know what you think. I hope that everyone has a wonderful holiday and at the risk of sounding like a walking clich&#233;; stay tuned, more details soon.</p>]]></content:encoded></item><item><title><![CDATA[Using 1Password to Manage Claude Code API Keys]]></title><description><![CDATA[Like many others, over the past few years I&#8217;ve been experimenting with Claude Code and bringing it more into my workflows.]]></description><link>https://blog.anchorline.io/p/using-1password-to-manage-claude</link><guid isPermaLink="false">https://blog.anchorline.io/p/using-1password-to-manage-claude</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Mon, 03 Nov 2025 13:42:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Like many others, over the past few years I&#8217;ve been experimenting with <a href="https://www.claude.com/product/claude-code">Claude Code</a> and bringing it more into my workflows. I still prefer to handwrite code but for understanding a tricky bug, giving me feedback on architecture decisions, or doing the simple code review, it has made the process of working mostly solo on projects much more manageable.</p><p>One of the things that I discovered just recently is that you can store your API Key in 1Password and have Claude read it at runtime instead of storing it with Claude directly. </p><p><em>Note: This is only useful if you are using the Claude API. If you&#8217;re using one of the general plans you won&#8217;t need this flow.</em></p><h2>Setup 1Password</h2><p>To get started the first thing you need to do is download the <a href="https://1password.com/downloads/command-line">1Password CLI tool</a>.</p><p>Next you&#8217;ll need to create a new shell file in your .claude directory that will read your API Key from 1Password. For my purposes I simply called it claude_key.sh which has a single line: </p><pre><code>op read &#8220;op://MyVault/Claude Code API key/credential</code></pre><p>Make sure to set your new file to be executable so it can actually run the 1Password command: </p><pre><code>chmod +x ~/.claude/claude_key.sh</code></pre><h2>.claude Settings</h2><p>Lastly, you&#8217;ll need to open your Claude settings.json file and set the parameter <strong><a href="https://docs.claude.com/en/docs/claude-code/settings">apiKeyHelper</a> </strong>to point to this new file on your system. </p><pre><code>{ apiKeyHelper: &#8216;./claude_key.sh&#8217; }</code></pre><h2>Done!</h2><p>That&#8217;s it! Now launch Claude Code and it&#8217;ll attempt to read your API Key from 1Password so you&#8217;ll get asked by 1Password to open your vault. And it will read it this way everytime you start a new session. </p><p>&#8212; <a href="https://anchorline.io/about/">Lauren</a></p>]]></content:encoded></item><item><title><![CDATA[The Shape of Work]]></title><description><![CDATA[Over the years, the way I work has shifted.]]></description><link>https://blog.anchorline.io/p/the-shape-of-work</link><guid isPermaLink="false">https://blog.anchorline.io/p/the-shape-of-work</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Fri, 31 Oct 2025 03:56:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the years, the way I work has shifted. Some of it came from experience, and some from finally getting tired of patterns that didn&#8217;t hold up. I&#8217;ve worked remotely for almost my entire career, which means the boundaries between work and everything else have always been blurred. Early on, I would lean into that blur, thinking flexibility meant freedom but really it mostly meant longer days, shorter attention, and more stress.</p><p>I used to equate these long hours with progress, but now I mostly see them as debt just waiting to be paid down. The idea that a good day means pushing through to exhaustion doesn&#8217;t hold anymore and I find that it&#8217;s better to stop while you still know what&#8217;s next.</p><p>I&#8217;ve started working in shorter stints. The context stays tighter, and I&#8217;m less likely to find myself walking into dead ends or end up on wild goose chases. Through maturity I&#8217;ve learned to pause when I lose focus and I now find the gaps in between have become useful. A walk, a few notes, small resets do more for clarity than I find another hour at the keyboard ever did.</p><p>Planning, reorganizing folders, sketching next steps before touching code. None of it looks productive in the moment, but it makes the rest of the work go smoother. Most of the chaos comes from skipping this part and I&#8217;m finding my new found patience pays dividends on the backend.</p><p>Messages and meetings still happen, but they don&#8217;t set the pace anymore. I answer things in batches and let the rest wait. Most of what feels urgent rarely is. <em>It reminds me of that moment in <a href="https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(TV_series)">Halt and Catch Fire</a> when Joe MacMillan wipes the whiteboard clean and Ryan gets upset. Joe tells him it doesn&#8217;t matter &#8212; whatever was important, they&#8217;ll remember.</em></p><p>The shape of work now is slower but steadier. Mornings carry the heavy lifting, afternoons taper off, nights are mostly for everything else (posts like these!) enough structure to keep moving forward without burning through it all at once.</p><p>&#8212; <a href="https://anchorline.io/about/">Lauren</a></p>]]></content:encoded></item><item><title><![CDATA[The Tools That Got Away]]></title><description><![CDATA[Given my last post was on the tools that stuck, it felt right to write one on the ones that didn&#8217;t.]]></description><link>https://blog.anchorline.io/p/the-tools-that-got-away</link><guid isPermaLink="false">https://blog.anchorline.io/p/the-tools-that-got-away</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Tue, 28 Oct 2025 22:50:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Given <a href="https://anchorline.substack.com/p/things-that-still-work">my last post was on the tools that stuck</a>, it felt right to write one on the ones that didn&#8217;t. Some lasted a few weeks, others only a few days. Most faded the same way they arrived, full of promise but never quite at home in my routine. It wasn&#8217;t that they were bad; they just never fit neatly into my life no matter how hard I tried to make it a routine.</p><p>Budget apps like YNAB or Mint always looked promising, but I could never keep them alive for long. They want precision and discipline, which are great in theory but too rigid in practice. I found myself spending more time correcting the software than understanding the numbers. Over time it became a chore and the value I got from them was less than the value I extracted so they would naturally fall away. I think over the years I&#8217;ve given YNAB alone 4 different tries with the most recent one being earlier this year and again it just never sticks.</p><p>Note apps like Obsidian, Notion, and Bear were another recurring experiment. I hear so many wonderful things about these apps so I always feel as if I&#8217;m missing out. Every few months I&#8217;d rebuild a new system from scratch, folders and tags and backlinks, all with good intent. A week later I&#8217;d forget about it and go back to plain text. The notes outlast the structure every time. My go to is CMD+N on VS Code and notetake there and as clunky as it is, it just seems to work for me.</p><p>I tend to default back to Google Meet despite trying to make Zoom stick. It isn&#8217;t better, but it&#8217;s simpler and it gets out of the way. The goal is to talk, not to manage another interface and the fewer desktop apps I have to open on a daily basis the better my day seems to be.</p><p>Hey! (the email service not the exclamation) was another that I wanted to work. I liked the design and the opinions behind it, but I kept finding myself back in a plain desktop client. It does seem that I tend to default back to boring really is better.</p><p>Discord falls into that same category. I like the idea of it, but I never found a rhythm there. It always feels a little too much like shouting in a crowded room, and I&#8217;ve never been good at that kind of noise. It&#8217;s another where I feel I miss out on some of the hype but that&#8217;s never been enough to keep something as a mainstay for my use.</p><p>These are all tools I wanted to love, but that&#8217;s not enough to make them last. The ones that stay are the ones that quietly fit into the system of you. The rest fade, leaving behind exports, empty workspaces, and the quiet realization that usefulness isn&#8217;t universal.</p><p>&#8212; <a href="https://anchorline.io/about/">Lauren</a></p>]]></content:encoded></item><item><title><![CDATA[Things That Still Work]]></title><description><![CDATA[My Daily Drivers]]></description><link>https://blog.anchorline.io/p/things-that-still-work</link><guid isPermaLink="false">https://blog.anchorline.io/p/things-that-still-work</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Mon, 27 Oct 2025 21:42:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!i9ai!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Like most everyone, I&#8217;ve tried a lot of tools over the years, from minimal editors to elaborate dashboards; entire systems that promised to change how I worked. Most didn&#8217;t last. When taking stock of the ones that did, the most interesting thing was how unremarkable they are. They just stayed useful.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i9ai!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i9ai!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 424w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 848w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 1272w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i9ai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png" width="574" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:574,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77068,&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://anchorline.substack.com/i/177313403?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.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_!i9ai!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 424w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 848w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 1272w, https://substackcdn.com/image/fetch/$s_!i9ai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47690fa5-4202-4c4a-9ce7-8fa31c6903bd_574x453.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The command line and VS Code are where quite a few of my daily hours go. The CLI is quiet and predictable, a place that doesn&#8217;t need to explain itself. Over the years I&#8217;ve experimented with moving all my coding to being CLI based but I always drift back to an external editor. VS Code adds just enough comfort to make the work enjoyable: syntax highlighting, split panes, a little visual context when you&#8217;ve been buried in text too long. Between the two, I can move fast, break things, and fix them again without frustration.</p><p>Then there are the tools that simply exist as an integral part of life for better or worser: spreadsheets, email, and Slack. Spreadsheets still handle the messy middle of projects where structure hasn&#8217;t quite solidified. Email remains clunky but indispensable; it&#8217;s the only medium that still behaves like correspondence. And Slack&#8230; well, I use it too much. I haven&#8217;t figured out how to escape it yet, but at least it&#8217;s searchable.</p><p>After all the churn, that&#8217;s what remains as my daily drivers: tools that don&#8217;t try to impress you. They just work, quietly, the same way every day. Stability might not be exciting, but it&#8217;s what keeps me moving forward.</p><p>Maybe one day Anchorline will earn a spot on this list. Not because I build it, but because it has become that ingrained in the system of me.</p><p>&#8212; <a href="https://anchorline.io/about/">Lauren</a></p>]]></content:encoded></item><item><title><![CDATA[Somewhere Between Spreadsheets and Software]]></title><description><![CDATA[The missing middle]]></description><link>https://blog.anchorline.io/p/somewhere-between-spreadsheets-and</link><guid isPermaLink="false">https://blog.anchorline.io/p/somewhere-between-spreadsheets-and</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Mon, 27 Oct 2025 04:36:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6gBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people don&#8217;t need accounting software, they just need a place to keep their things straight. Over the many, many years I&#8217;ve been tracking my savings, I&#8217;ve tried every personal finance app under the sun. The category names were cute, the charts were pretty, and every one of them insisted they could &#8220;automate my finances.&#8221; But automation doesn&#8217;t always help. In fact, it often hides the very thing you&#8217;re trying to understand: the actual story of where your money goes and why.</p><h2>When automation gets in the way</h2><p>Modern finance apps are built for scale, not understanding. They assume you want to optimize for time, for returns, for &#8220;insight.&#8221; Open any popular budgeting app and you&#8217;ll find the same promise: connect your bank account, and we&#8217;ll do the rest.</p><p>They import your transactions automatically, label them for you with machine learning algorithms, and feed you dashboards meant to summarize your life into green arrows and pie charts. But that&#8217;s not understanding.</p><p><strong>The fundamental problem with automated finance tools is that they conflate convenience with clarity.</strong> Yes, it&#8217;s convenient to have transactions imported automatically. But clarity requires something different. It requires you to actually look at each transaction, to make a conscious decision about what it means, to integrate it into your understanding of your financial situation.</p><p>Automation promises to save you time, but what it actually does is save you from thinking. And in personal finance, thinking is not a bug to be eliminated. It&#8217;s the entire point.</p><h2>The burden of flexibility</h2><p>On the other end of the spectrum sits the spreadsheet: beautiful in theory, fragile in practice.</p><p>I know this intimately as I&#8217;ve been maintaining a personal finance spreadsheet for nearly 20 years. It started simple and elegant, a few columns to track income and expenses along with a summary tab with some basic calculations. But after two decades, it has grown into something else entirely: a sprawling, interconnected web of tabs, formulas, and historical data that I&#8217;m now mostly afraid to touch.</p><p>The spreadsheet contains the best financial history of my adult life that I have available and while that should feel empowering it instead feels oddly paralyzing. There are formulas in there I wrote 15 years ago that I no longer fully understand or appreciate. There are workarounds built on top of workarounds, special cases accumulated over time to handle situations that seemed temporary but became permanent.</p><p>Want to change how I categorize something? I have to trace through multiple tabs to make sure I&#8217;m not breaking a calculation somewhere downstream. Need to add a new account? I have to figure out where it fits in a structure that made perfect sense in 2008 but feels arbitrary now.</p><p><strong>This is the paradox of spreadsheet freedom.</strong> They give you infinite flexibility and zero protection. They can&#8217;t tell you when:</p><ul><li><p>A formula drifts or you&#8217;ve accidentally introduced an inconsistency</p></li><li><p>A balance no longer ties out to its component parts</p></li><li><p>The history of a number disappears into a deleted row</p></li><li><p>You&#8217;ve built a circular reference that makes your entire model unreliable</p></li></ul><p>It&#8217;s control without continuity, freedom without safeguards. My 20-year-old spreadsheet is simultaneously my most valuable financial tool and an increasingly unwieldy relic. I depend on it, but I don&#8217;t entirely trust it anymore. And the thought of migrating to something else, of somehow extracting and preserving all that history, feels overwhelming.</p><p>The spreadsheet hasn&#8217;t failed me, exactly. But it has taught me something important: flexibility without structure eventually becomes its own kind of prison.</p><h2>The missing middle</h2><p>This is where <a href="https://anchorline.io/">Anchorline</a> comes in, sitting in that uncomfortable gap between structure and freedom, between the rigidity of accounting software and the chaos of spreadsheets. It&#8217;s not trying to be either one.</p><p><strong>It&#8217;s a ledger built around one deceptively simple rule: append, never edit.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6gBu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6gBu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 424w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 848w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6gBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png" width="1456" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:476083,&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://anchorline.substack.com/i/177237774?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.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_!6gBu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 424w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 848w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 1272w, https://substackcdn.com/image/fetch/$s_!6gBu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe33b47cb-93d8-49bc-9fec-2484a5f10ac6_4600x1994.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every entry is written once and preserved forever. If something changes, you don&#8217;t go back and modify the past. You record the change as a new event, a new line in the ledger. That&#8217;s it.</p><p>From that single rule comes something remarkable: trust. Because entries are never modified, balances can be replayed from scratch at any point in time. You can ask &#8220;what did I have in savings on March 15th?&#8221; and get a reliable answer, built up from the immutable history of every deposit and withdrawal.</p><p>Collections form clear chains of ownership and meaning. You can see exactly where something came from and where it went. You can track savings, expenses, or projects the same way, consistently and audibly, <em>without needing to wrap your head around double-entry accounting or navigating enterprise software designed for companies with compliance requirements</em>.</p><p>The append-only model does something else too: it changes your relationship with mistakes.</p><ul><li><p>In a spreadsheet, a mistake is dangerous. You might have overwritten important data, broken a formula, corrupted your entire system.</p></li><li><p>In an automated app, you might not even notice a mistake until it&#8217;s been compounding for months.</p></li><li><p>In an append-only ledger, <strong>a mistake is just another entry</strong>. You see it, you record a correction, and the full history (including the mistake and its fix) remains visible.</p></li></ul><p>There&#8217;s no fear, no hidden corruption, just an honest record of what actually happened.</p><h2>Deliberate systems</h2><p>Most software tries to save you time, to make things faster and more efficient. Anchorline has a different goal: it tries to give your time structure.</p><p>Typing a line into a ledger isn&#8217;t busywork that should be automated away. It&#8217;s an act of attention, a moment when you pause and acknowledge what&#8217;s actually happening with your money. It&#8217;s how you stay in touch with where things stand, not through a dashboard or a summary, but through the accumulated practice of recording what matters.</p><p>This might sound inefficient to people who&#8217;ve been trained to optimize everything. But efficiency isn&#8217;t always the right goal. Sometimes what you need is not to move faster, but to move with more awareness.</p><p>When you manually enter a transaction, you think about it. You notice patterns you wouldn&#8217;t see in an automated feed. You catch errors immediately rather than discovering them months later. You maintain a relationship with your financial reality rather than outsourcing it to an algorithm.</p><p><strong>It&#8217;s not about optimization. It&#8217;s about orientation.</strong> Knowing where you stand, how you got there, and what it means. When you can&#8217;t erase, when every entry becomes part of a permanent record, you have to think clearly before you write. That constraint isn&#8217;t a limitation. It&#8217;s a feature that makes you more thoughtful, more deliberate, more engaged with the system you&#8217;re building.</p><p>Anchorline wasn&#8217;t built for accountants who need to prepare financial statements or comply with regulations. It was built for people who like to keep things in order and want that order to last. People who understand that the goal isn&#8217;t just to track numbers, but to build a system they can trust six months or six years from now.</p><p>People who recognize that the act of maintaining a ledger is not separate from understanding their finances. It is understanding their finances, one deliberate entry at a time.</p><div><hr></div><p>I plan to get into more specifics for how Anchorline has grown beyond its original finance roots in future posts but I did want to offer this unique perspective on where it sits on the finance spectrum given that was the start for it.</p><p>&#8212; <a href="https://anchorline.io/about/">Lauren</a></p>]]></content:encoded></item><item><title><![CDATA[Inside the Private Alpha]]></title><description><![CDATA[Notes from the messy middle.]]></description><link>https://blog.anchorline.io/p/inside-the-private-alpha</link><guid isPermaLink="false">https://blog.anchorline.io/p/inside-the-private-alpha</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Sat, 25 Oct 2025 16:01:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!jH-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The private alpha is still small. Roughly a dozen folks that are actively using Anchorline in their own way. At the moment though that scale feels right. It&#8217;s enough to reveal what breaks without drowning in noise.</p><p>Most of what&#8217;s happening right now isn&#8217;t glamorous. It&#8217;s the quiet, repetitive work of seeing where ideas hold up and where they don&#8217;t. Every time someone starts a new ledger and shares feedback on their experience I learn something about how flexible the structure really is. Some are tracking savings and budgets. Others are logging books, collections, or ongoing projects. One person built a ledger for home maintenance and wanted to tag entries with photos of their repairs. I didn&#8217;t design it for that, but it&#8217;s this type of feedback that is inspiring.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jH-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jH-0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 424w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 848w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jH-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png" width="728" height="923.3170731707318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1352,&quot;width&quot;:1066,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:149308,&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://anchorline.substack.com/i/177099421?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.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_!jH-0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 424w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 848w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 1272w, https://substackcdn.com/image/fetch/$s_!jH-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F383a503d-cb0f-43bc-89f0-0fba57b18ab8_1066x1352.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>My nights and weekends are spent tuning small things. Rollups, exports, and the way parent and child ledgers talk to each other. The goals are simple in theory but the work to tame complexity into something seemingly simple and frictionless is where the challenge lies. I&#8217;d rather fix one real problem at a time than chase growth. The alpha isn&#8217;t about scaling; it&#8217;s about trust. Getting the foundations solid before anything else.</p><p>So that&#8217;s where I&#8217;m is right now, still in those early, quiet days. If you are interested in seeing what it&#8217;s about please <a href="https://anchorline.io/">signup for the Anchorline waitlist</a>. The feedback is beyond invaluable in shaping the product during its infancy.</p>]]></content:encoded></item><item><title><![CDATA[Welcome to Anchorline]]></title><description><![CDATA[Manage the business of life.]]></description><link>https://blog.anchorline.io/p/welcome-to-anchorline</link><guid isPermaLink="false">https://blog.anchorline.io/p/welcome-to-anchorline</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Fri, 24 Oct 2025 21:54:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LFfL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;ve been building software for more than twenty years, and almost every tool I&#8217;ve touched has had the same flaw. They overwrite. They hide history. They trade clarity for convenience.</p><p><a href="https://anchorline.io">Anchorline</a> started from a simple frustration. I wanted to track a few savings goals like a vacation fund, a car fund, and an emergency reserve, and still see how they all rolled up into one total. Every product I tried either broke the hierarchy or lost the context. I didn&#8217;t want dashboards. I wanted ledgers that never forget, where every change adds to the story instead of replacing it.</p><p>So I built one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LFfL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LFfL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 424w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 848w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 1272w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LFfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png" width="1166" height="777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:777,&quot;width&quot;:1166,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181789,&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://anchorline.substack.com/i/177052178?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.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_!LFfL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 424w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 848w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 1272w, https://substackcdn.com/image/fetch/$s_!LFfL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6325aeee-eb7e-44c8-ae59-6ba007c83cb1_1166x777.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At first it was just a balance ledger that could have child ledgers nested underneath. Then came collections, ways to track things that aren&#8217;t numbers like books, gear, recipes, and notes. It turned out the same model worked everywhere. Anything worth tracking could live inside a hierarchy, append-only, with its own context and history intact.</p><p>That&#8217;s how the idea grew from a personal tool into Anchorline, a universal ledger for the business of life. A system that treats money, inventory, or even a reading list with the same integrity as a financial statement.</p><p>No overwriting. No hidden state. Everything explainable and exportable.</p><p>This blog is a way to peel back the curtain and show how Anchorline is built. It&#8217;s where I&#8217;ll share product decisions, technical details, and design philosophy in real time. Think of it as the development ledger, an ongoing record of what I&#8217;m learning, what&#8217;s changing, and how the system is evolving.</p><p>If you&#8217;ve ever wanted a way to track things that respects time and structure, welcome aboard.</p><p>- <a href="https://anchorline.io/about/">Lauren</a>, for the Anchorline team (it&#8217;s actually just me)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.anchorline.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Anchorline's Substack! Subscribe for free to receive new posts.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Anchorline Notes.]]></description><link>https://blog.anchorline.io/p/coming-soon</link><guid isPermaLink="false">https://blog.anchorline.io/p/coming-soon</guid><dc:creator><![CDATA[Anchorline]]></dc:creator><pubDate>Fri, 24 Oct 2025 17:35:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Mwfg!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9568ce70-92b7-4aae-a3a3-2e95490c464b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Anchorline Notes.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.anchorline.io/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://blog.anchorline.io/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>