<?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"><channel><title><![CDATA[Heldcraft Blog]]></title><description><![CDATA[I'm a cloud architect by day and a solo founder by night. I run Heldcraft — a one-person software studio where I'm building something worth building, carefully and without shortcuts. I write about what I'm learning in the process: the tools, the trade-offs, the honest gaps between what sounds good and what actually works. No hype. Just the build.]]></description><link>https://blog.heldcraft.com</link><image><url>https://cdn.hashnode.com/uploads/logos/69bbec7c8c55d6eefbe51445/93c748be-eec1-462a-882e-0b27bd749b68.png</url><title>Heldcraft Blog</title><link>https://blog.heldcraft.com</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 18 May 2026 20:09:30 GMT</lastBuildDate><atom:link href="https://blog.heldcraft.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Built With Care: Why Privacy Is Not an Afterthought at Heldcraft]]></title><description><![CDATA[At Heldcraft, "built with care" isn't a marketing line. It's an operating principle — and nowhere is that more visible than in how we think about the people who use our software.
Care means not taking]]></description><link>https://blog.heldcraft.com/built-with-care-why-privacy-is-not-an-afterthought-at-heldcraft</link><guid isPermaLink="true">https://blog.heldcraft.com/built-with-care-why-privacy-is-not-an-afterthought-at-heldcraft</guid><category><![CDATA[privacy]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[app development]]></category><category><![CDATA[metrics]]></category><category><![CDATA[umami]]></category><category><![CDATA[aptabase]]></category><category><![CDATA[sentry]]></category><category><![CDATA[Building in Public]]></category><category><![CDATA[indiedev]]></category><dc:creator><![CDATA[Lars Brandt]]></dc:creator><pubDate>Fri, 20 Mar 2026 17:17:08 GMT</pubDate><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/69bbec7c8c55d6eefbe51445/2b591700-5899-429f-a38d-80608db6350a.png" alt="" style="display:block;margin:0 auto" />

<p>At Heldcraft, "built with care" isn't a marketing line. It's an operating principle — and nowhere is that more visible than in how we think about the people who use our software.</p>
<h2>Care means not taking what isn't yours</h2>
<p>Most analytics and monitoring setups are built around a simple assumption: more data is better. Collect everything, store it indefinitely, figure out what's useful later. It's efficient for the developer. It's not a great deal for the user.</p>
<p>We've made a different choice. When we instrument our software, we ask a different question first: <em>what do we actually need to know, and what's the minimum data required to know it?</em></p>
<p>That question changes everything downstream.</p>
<h2>What "privacy-first" means in practice</h2>
<p>It means choosing tools that are designed around data minimisation rather than data maximisation. It means configuring those tools to collect less, not more, even when collecting more is the default. It means not storing IP addresses when aggregate counts tell us everything we need. It means respecting the fact that the people using our software didn't sign up to be subjects of a data collection exercise — they signed up to use a product.</p>
<p>It also means being honest about the tradeoffs. Privacy-first instrumentation gives us less granular data. We can't reconstruct individual user sessions. We can't track people across devices or match behaviour to identities. We've accepted that limitation because we think the alternative — treating every user as a data point to be harvested — is incompatible with building software we'd actually want to use ourselves.</p>
<h2>The tools we chose</h2>
<p>We use <a href="https://aptabase.com">Aptabase</a> for in-app analytics, <a href="https://umami.is">Umami</a> for web analytics, and <a href="https://sentry.io">Sentry</a> for error monitoring. All three can be configured to respect user privacy seriously. None of them require you to do so — that's a choice.</p>
<p>In an upcoming post, we'll walk through exactly how we've configured each one: what we collect, what we deliberately don't collect, and why.</p>
<h2>"Built with care" as a commitment</h2>
<p>The tagline exists because it describes something real. We build slowly and deliberately. We choose tools that reflect our values. We think about the people on the other side of our software as people, not sessions.</p>
<p>Privacy is part of that. Not a feature, not a compliance checkbox — a consequence of caring about what we're building and who we're building it for.</p>
<hr />
<p><em>Heldcraft builds privacy-first software for users who notice. Pre-launch, building in public.</em></p>
]]></content:encoded></item><item><title><![CDATA[One Person. Twenty Engineers. No Hype.]]></title><description><![CDATA[Garry Tan is President & CEO of Y Combinator. He is also, apparently, shipping 10,000 to 20,000 lines of production code per day as a side activity.
That number sounds like marketing copy. It might no]]></description><link>https://blog.heldcraft.com/one-person-twenty-engineers-no-hype</link><guid isPermaLink="true">https://blog.heldcraft.com/one-person-twenty-engineers-no-hype</guid><category><![CDATA[Open Source]]></category><category><![CDATA[AI]]></category><category><![CDATA[Developer Tools]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[claude.ai]]></category><dc:creator><![CDATA[Lars Brandt]]></dc:creator><pubDate>Thu, 19 Mar 2026 17:09:33 GMT</pubDate><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/69bbec7c8c55d6eefbe51445/4c1ed054-3325-4c08-82f9-09cb9957d3a0.png" alt="" style="display:block;margin:0 auto" />

<p><a href="https://www.ycombinator.com/people/garry-tan">Garry Tan</a> is President &amp; CEO of Y Combinator. He is also, apparently, shipping 10,000 to 20,000 lines of production code per day as a side activity.</p>
<p>That number sounds like marketing copy. It might not be.</p>
<p>Tan open-sourced his setup last week: <a href="https://github.com/garrytan/gstack">gstack</a>, a collection of 15 Claude Code slash commands that turn a single AI session into something that behaves like a staffed engineering team. His last 7-day stat from the README: 140,751 lines added, 362 commits, ~115k net LOC. While running YC.</p>
<p>I spent time with it this week. Here's what it actually is.</p>
<hr />
<h2>What gstack does</h2>
<p>The core idea is role-based cognitive specialisation. Instead of prompting Claude Code generically, gstack gives it structured personas — each a slash command, each with a specific mode of thinking:</p>
<ul>
<li><p><code>/plan-ceo-review</code> — reframes your feature request. Asks "is this the right problem?" before you write a line of code. Four modes: expand the scope, selectively expand, hold scope, or reduce.</p>
</li>
<li><p><code>/plan-eng-review</code> — produces architecture, ASCII data flow diagrams, a test matrix, edge cases, failure modes. Forces hidden assumptions into the open before you build.</p>
</li>
<li><p><code>/review</code> — the paranoid staff engineer. Finds bugs that pass CI but fail in production. Auto-fixes the obvious ones. Flags the judgment calls.</p>
</li>
<li><p><code>/qa</code> — opens a real Chromium browser, clicks through your actual app, finds bugs, fixes them with atomic commits, generates regression tests.</p>
</li>
<li><p><code>/ship</code> — syncs main, runs tests, audits coverage, pushes, opens a PR. Bootstraps test frameworks from scratch if you don't have one.</p>
</li>
</ul>
<p>The full list is 15 commands. They're designed to chain: plan with CEO + eng + design, build, review, QA, ship. One feature, seven commands, complete.</p>
<hr />
<h2>What actually matters here</h2>
<p>The interesting thing about gstack isn't any individual command. It's the <strong>governance layer</strong>.</p>
<p>Running Claude Code without structure gets you fast iteration but unpredictable quality. The failure mode is vibe coding — moving quickly, making decisions in the moment, shipping things that work until they don't.</p>
<p>gstack solves this by introducing review gates. The CEO command rejects 3-star features before you build them. The eng review locks in architecture before you write code. The design review catches AI slop before it ships. The QA step verifies fixes actually work.</p>
<p>That's not a coding tool. That's a process. And it's a process that scales with parallel sessions — Tan runs 10+ simultaneous Claude Code instances, each in its own branch, each with the right cognitive mode for the task.</p>
<p>One person, ten parallel agents, structured roles, real review gates. That's the actual innovation.</p>
<hr />
<h2>What I'm taking from it</h2>
<p>I run a small agent pipeline at Heldcraft — six specialist agents (product, architecture, dev, QA, security, release). The pipeline design predates gstack but the philosophy is the same: specialisation beats generalism for structured work.</p>
<p>A few things from gstack I'm actively looking at:</p>
<p><code>/qa</code> <strong>and real browser automation.</strong> The ability to open a real browser, interact with a staging URL, find a bug, fix it, generate a regression test, and verify the fix — in one command — is a genuine capability unlock. Right now my QA infrastructure doesn't have browser access on the server. That's a concrete gap to close.</p>
<p><code>/review</code> <strong>with auto-fix + flag-for-human.</strong> The pattern of "fix the obvious, flag the judgment calls" is exactly what automated PR review should look like. Currently my security review step flags everything and asks for human review.</p>
<p><code>/document-release</code><strong>.</strong> A command that reads every doc file in the project, cross-references the diff, and updates everything that drifted. This is the unglamorous work that never gets done. Automating it would close a real gap.</p>
<hr />
<h2>The honest caveat</h2>
<p>140k lines in 7 days is an extraordinary claim. I have no way to verify it, and lines of code is a notoriously bad metric. What matters is whether the output is useful and correct.</p>
<p>What I can verify: the tooling exists, it's well-designed, it's MIT licensed, and the pattern of structured AI-assisted development it represents is real. Whether any specific individual is hitting those numbers is less interesting than whether the ceiling is higher than most people think.</p>
<p>The answer to that second question seems clearly yes.</p>
<hr />
<p><em>I'm building</em> <a href="https://heldcraft.io"><em>Heldcraft</em></a> <em>— a software studio focused on lean, agent-assisted development. This is part of my ongoing experiment with agentic systems.</em></p>
]]></content:encoded></item><item><title><![CDATA[The 30% Tax Is Optional Now]]></title><description><![CDATA[For years, building a mobile app meant accepting Apple's deal: give us 30% of every subscription, every purchase, every dollar your users spend. That was the cost of distribution.
That deal has change]]></description><link>https://blog.heldcraft.com/the-30-tax-is-optional-now</link><guid isPermaLink="true">https://blog.heldcraft.com/the-30-tax-is-optional-now</guid><category><![CDATA[iOS]]></category><category><![CDATA[payments]]></category><category><![CDATA[indiedev]]></category><category><![CDATA[Mobile Development]]></category><dc:creator><![CDATA[Lars Brandt]]></dc:creator><pubDate>Thu, 19 Mar 2026 16:32:55 GMT</pubDate><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/69bbec7c8c55d6eefbe51445/7b43c900-0fa3-40ed-9c9f-105bb947601e.png" alt="" style="display:block;margin:0 auto" />

<p>For years, building a mobile app meant accepting Apple's deal: give us 30% of every subscription, every purchase, every dollar your users spend. That was the cost of distribution.</p>
<p>That deal has changed.</p>
<p>In 2025, the Supreme Court upheld the Epic v. Apple injunction. Apple must now allow developers to direct users to alternative payment methods. In the EU, the Digital Markets Act arrived first. The result is the same: the 30% cut is no longer mandatory.</p>
<p>I spent some time this week looking at <a href="https://zerosettle.io">ZeroSettle</a> — a YC-backed SDK that operationalises this right. The pitch is straightforward: swap Apple's 30% for their 5% + 50¢, keep the difference, let users pay less.</p>
<p>Here's what I actually found.</p>
<hr />
<h2>The user experience question</h2>
<p>My first question was: how much friction does this add for users?</p>
<p>The answer, at least in the US on iOS, is: less than I expected.</p>
<p>ZeroSettle presents a native-feeling bottom sheet inside your app. Apple Pay is the primary option. Card entry is the fallback. Users never leave the app. On a warm load it opens in under a second. It looks and feels like a standard StoreKit sheet — Stripe under the hood, not that users would know.</p>
<p>Outside the US, it degrades. EU users get an in-app browser or Safari — a noticeable context switch. Android opens a full-screen WebView Activity, rougher than iOS. The product is clearly optimised for US iOS first.</p>
<p>The friction delta in the US: minimal. If your user has Apple Pay set up, it's one Face ID tap, same as StoreKit.</p>
<hr />
<h2>Do you still have to offer the App Store?</h2>
<p>Yes — but you can demote it.</p>
<p>Apple's current rules require that StoreKit remain available as an option when you're using the External Purchase entitlement. You can't block it entirely. But you can:</p>
<ul>
<li><p>Present direct billing as the <strong>primary button</strong> with the App Store as a smaller secondary option</p>
</li>
<li><p>Offer a discount for going direct ("Subscribe and save 15%")</p>
</li>
<li><p>Run campaigns that migrate existing App Store subscribers over time</p>
</li>
</ul>
<p>ZeroSettle handles the compliance automatically — the required Apple disclosure modal, jurisdiction detection, silent fallback to StoreKit outside the US and EU. You write a few lines of code and the SDK figures out the rest.</p>
<hr />
<h2>The math</h2>
<p>On $1M ARR with 75% of users migrating to direct billing and a 10% discount incentive to make the switch worth their while:</p>
<ul>
<li><p><strong>Without ZeroSettle:</strong> Apple keeps \(300K (30% of \)1M)</p>
</li>
<li><p><strong>With ZeroSettle:</strong> You pay ~\(112K (discount + ZeroSettle fee) instead of \)300K</p>
</li>
<li><p><strong>Net extra profit:</strong> ~$188K/year</p>
</li>
</ul>
<p>The calculator on their site is worth playing with. The economics are compelling at any meaningful scale.</p>
<p>At small scale — say, $50K ARR — the absolute numbers are smaller but the margin improvement is the same. 25 percentage points of net margin is 25 percentage points regardless of revenue size.</p>
<hr />
<h2>What I'd watch</h2>
<p>ZeroSettle is early. They just launched on Product Hunt. The legal framework they're operating in is new — the Epic injunction only took effect in 2025 and Apple is still testing what they can push back on.</p>
<p>The compliance story is good but it's worth monitoring. Apple has a history of finding ways to make alternatives less attractive (see: <a href="https://techcrunch.com/2024/01/17/apple-allows-devs-to-promote-subscriptions-on-the-web-with-a-27-cut/">Apple's 27% link-out fee</a>, which Apple introduced post-injunction and was forced to remove in 2025). The DMA in the EU has seen similar friction.</p>
<p>That said: this is not a loophole. It's a court order and a legislative requirement. The direction of travel is toward developer rights, not away from them. Hundreds of major apps already offer external billing. This is becoming standard practice, not early-adopter territory.</p>
<p>If you're building a mobile subscription product, it's worth at least running the calculator and understanding what you're leaving on the table.</p>
<hr />
<p><em>I'm building</em> <a href="https://heldcraft.io"><em>Heldcraft</em></a> <em>— a software studio. This is part of my ongoing research into tools and trends relevant to mobile and SaaS product development.</em></p>
]]></content:encoded></item></channel></rss>