<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.henryjstarr.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.henryjstarr.com/" rel="alternate" type="text/html" /><updated>2026-09-01T03:39:34+00:00</updated><id>https://www.henryjstarr.com/feed.xml</id><title type="html">Henry Starr</title><subtitle>Henry Starr&apos;s blog on software engineering, AI, and things he&apos;s building.</subtitle><author><name>Henry Starr</name></author><entry><title type="html">Why I Rebuilt This Site</title><link href="https://www.henryjstarr.com/2026/08/31/why-i-rebuilt-this-site/" rel="alternate" type="text/html" title="Why I Rebuilt This Site" /><published>2026-08-31T00:00:00+00:00</published><updated>2026-08-31T00:00:00+00:00</updated><id>https://www.henryjstarr.com/2026/08/31/why-i-rebuilt-this-site</id><content type="html" xml:base="https://www.henryjstarr.com/2026/08/31/why-i-rebuilt-this-site/"><![CDATA[<p>For a while this domain was a portfolio page: a headshot, a project grid, a résumé link. Useful, but static in the worst sense — it only ever changed when I updated a job title.</p>

<p>I’d rather have a place to actually write: short notes on what I’m building, things I run into at work, projects that don’t fit neatly on a résumé bullet. So this is that place now. The front page is just me; the writing lives at <a href="/blog/">/blog</a>, newest first.</p>

<p>If you want new posts by email rather than checking back, there’s a subscribe box at the bottom of the blog and every post. No account, no tracking beyond the address itself — just an email when something new goes up.</p>]]></content><author><name>Henry Starr</name></author><summary type="html"><![CDATA[For a while this domain was a portfolio page: a headshot, a project grid, a résumé link. Useful, but static in the worst sense — it only ever changed when I updated a job title.]]></summary></entry><entry><title type="html">How This Blog Works</title><link href="https://www.henryjstarr.com/2026/08/30/how-this-blog-works/" rel="alternate" type="text/html" title="How This Blog Works" /><published>2026-08-30T00:00:00+00:00</published><updated>2026-08-30T00:00:00+00:00</updated><id>https://www.henryjstarr.com/2026/08/30/how-this-blog-works</id><content type="html" xml:base="https://www.henryjstarr.com/2026/08/30/how-this-blog-works/"><![CDATA[<p>A short note to my future self on how this site is put together, since I’ll inevitably forget.</p>

<h2 id="writing-a-new-post">Writing a new post</h2>

<p>Add a Markdown file to <code class="language-plaintext highlighter-rouge">_posts/</code> named <code class="language-plaintext highlighter-rouge">YYYY-MM-DD-some-title.md</code>, with front matter at the top:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
title: Some Title
---

The rest is normal Markdown.
</code></pre></div></div>

<p>Commit it and push to <code class="language-plaintext highlighter-rouge">main</code>. GitHub Pages rebuilds the site automatically — nothing to run locally, no build step to remember. The post shows up on <a href="/blog/">/blog</a>, newest first, at <code class="language-plaintext highlighter-rouge">/YYYY/MM/DD/some-title/</code>.</p>

<h2 id="editing-a-page">Editing a page</h2>

<p><code class="language-plaintext highlighter-rouge">index.md</code> is the front-page bio (layout <code class="language-plaintext highlighter-rouge">home</code>); <code class="language-plaintext highlighter-rouge">blog.md</code> is the post list (layout <code class="language-plaintext highlighter-rouge">blog</code>). Both work the same way — front matter, then Markdown. Nav links live in <code class="language-plaintext highlighter-rouge">_includes/nav.html</code>.</p>

<h2 id="how-subscriptions-work">How subscriptions work</h2>

<p>The email box in the footer posts directly to a Supabase table (<code class="language-plaintext highlighter-rouge">subscribers</code>) using a publishable API key that’s safe to expose client-side — it’s restricted by row-level security to <em>inserting</em> new rows only, so it can’t be used to read or export the list. Addresses live in the Supabase dashboard for that project. Actually emailing subscribers when a new post goes up isn’t automated yet — that’d mean wiring up an email-sending service (Resend, Postmark, etc.) behind a Supabase edge function, triggered on new posts. Worth doing once there’s an audience to email.</p>]]></content><author><name>Henry Starr</name></author><summary type="html"><![CDATA[A short note to my future self on how this site is put together, since I’ll inevitably forget.]]></summary></entry></feed>