<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Joe Forrest: writing</title>
  <subtitle>Essays by Joe Forrest (J.D. Forrest).</subtitle>
  <link href="https://joeforrest.com/feed.xml" rel="self"/>
  <link href="https://joeforrest.com/writing/"/>
  <id>https://joeforrest.com/writing/</id>
  <updated>2026-05-31T00:00:00Z</updated>
  <author><name>Joe Forrest</name><uri>https://joeforrest.com/about/</uri></author>
  <entry>
    <title>Why I tore the CMS out and went static</title>
    <link href="https://joeforrest.com/writing/why-i-went-static/"/>
    <id>https://joeforrest.com/writing/why-i-went-static/</id>
    <published>2026-05-31T00:00:00Z</published>
    <updated>2026-05-31T00:00:00Z</updated>
    <summary>Why I pulled WordPress out and went static: the design tax and the maintenance tax, and what one person gets back by building plain pages instead.</summary>
    <content type="html">&lt;p&gt;For years the answer to &amp;quot;I need a website&amp;quot; was the same: stand up WordPress, fight the theme until it looked like the thing in my head, then spend the rest of the year keeping plugins from breaking each other.&lt;/p&gt;
&lt;p&gt;This post exists because I stopped doing that.&lt;/p&gt;
&lt;h2&gt;The two taxes&lt;/h2&gt;
&lt;p&gt;WordPress charges a design tax and a maintenance tax. The design tax is the editor sitting between you and the actual markup, so matching a custom layout means wrestling an abstraction instead of writing the page you already drew. The maintenance tax is PHP, a database, updates, and a security surface you never asked for.&lt;/p&gt;
&lt;p&gt;For one person, both are pure drag.&lt;/p&gt;
&lt;h2&gt;What replaced it&lt;/h2&gt;
&lt;p&gt;A folder of markdown and a build step. I write the post, a generator turns it into the design, and it deploys as plain files. No database. No login. Nothing to patch at 2am.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The site you are reading was published by pasting a draft and running one command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The design didn&#39;t get worse. It got &lt;em&gt;exactly&lt;/em&gt; what I drew, because there&#39;s nothing in the way of the HTML anymore.&lt;/p&gt;
&lt;h2&gt;What I kept&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The look. The mockup became the template, verbatim.&lt;/li&gt;
&lt;li&gt;The speed. Static files on a CDN are about as fast as the web gets.&lt;/li&gt;
&lt;li&gt;The ownership. It&#39;s a git repo. It&#39;s mine. It can&#39;t be locked behind anyone&#39;s dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want one of these, the contact link is at the bottom of every page.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>The paste-and-publish loop</title>
    <link href="https://joeforrest.com/writing/the-paste-and-publish-loop/"/>
    <id>https://joeforrest.com/writing/the-paste-and-publish-loop/</id>
    <published>2026-05-28T00:00:00Z</published>
    <updated>2026-05-28T00:00:00Z</updated>
    <summary>The whole publishing workflow in four steps: write in plain markdown, drop it in a folder, the build runs, the page is live in the site design.</summary>
    <content type="html">&lt;p&gt;Here is the entire publishing workflow now.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I write a post, anywhere, in plain markdown.&lt;/li&gt;
&lt;li&gt;It lands in the &lt;code&gt;posts&lt;/code&gt; folder.&lt;/li&gt;
&lt;li&gt;The build runs.&lt;/li&gt;
&lt;li&gt;The page is live, in the site&#39;s design, with the index updated.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No editor. No blocks. No &amp;quot;now switch it to the right category and set the featured image and pick a template.&amp;quot; The file &lt;em&gt;is&lt;/em&gt; the post.&lt;/p&gt;
&lt;h2&gt;Why this matters for the flywheel&lt;/h2&gt;
&lt;p&gt;Friction is the enemy of a publishing habit. Every step between &amp;quot;I had a thought&amp;quot; and &amp;quot;it&#39;s on the site&amp;quot; is a place to quit. Cutting that path to four steps means the thing actually gets written and shipped, which is the only version that moves the needle.&lt;/p&gt;
&lt;p&gt;This is the proof of concept. If it feels right, the rest of the network rolls over the same way.&lt;/p&gt;
</content>
  </entry>
</feed>
