<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hugo on Andrew's Memory Blog</title><link>https://andrewmemory.acornwall.net/tags/hugo/</link><description>Recent content in Hugo on Andrew's Memory Blog</description><generator>Hugo -- gohugo.io</generator><image><url>https://andrewmemory.acornwall.net/img/rss_image.png</url><title>Hugo on Andrew's Memory Blog</title><link>https://andrewmemory.acornwall.net/</link></image><language>en</language><managingEditor>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</managingEditor><webMaster>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</webMaster><copyright>Copyright 2009--2025</copyright><lastBuildDate>Wed, 08 Apr 2026 22:33:06 -0700</lastBuildDate><atom:link href="https://andrewmemory.acornwall.net/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>Running Hugo from the runner on Forgejo</title><link>https://andrewmemory.acornwall.net/blog/2026-04-08-running-hugo-from-the-runner/</link><pubDate>Wed, 08 Apr 2026 22:33:06 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2026-04-08-running-hugo-from-the-runner/</guid><description>&lt;p&gt;I&amp;rsquo;m taking a shortcut here. With the benefit of foresight which is really hindsight, I &lt;a href="https://andrewmemory.acornwall.net/blog/2026-04-02-setting-up-a-forgejo-runner-for-hugo-and-others/" &gt;set my runner up to run Hugo already&lt;/a&gt; with the label &lt;code&gt;hugo&lt;/code&gt;. So this is really about the automation I used to do the build. I started with attempts to install Hugo using &lt;code&gt;apk add&lt;/code&gt; with the Docker image. That was a side quest that led nowhere.&lt;/p&gt;
&lt;p&gt;Then when I decided to split things up, it took me a while to find the right image. The &lt;a href="https://hub.docker.com/r/gohugoio/hugo" target="_blank" rel="noreferrer"&gt;official Hugo Docker image&lt;/a&gt; luckily it includes Node.js so it can run the &lt;code&gt;checkout&lt;/code&gt; and &lt;code&gt;upload-artifact&lt;/code&gt; actions.&lt;/p&gt;
&lt;p&gt;However, you can&amp;rsquo;t do everything on the Hugo image. That means the build has to be split up into two parts. This part is only for running Hugo. Luckily, when it runs, Hugo can store the files it built (&lt;code&gt;./public/&lt;/code&gt;) in an artifact, so it&amp;rsquo;s not &lt;em&gt;too&lt;/em&gt; hard to get them later for uploading.&lt;/p&gt;
&lt;p&gt;You also need to check out the right thing. For Hugo with Blowfish installed, that means checking out submodules.&lt;/p&gt;
&lt;p&gt;If you want to avoid the shortcut and do what I really did, check out the &lt;a href="https://forgejo.org/docs/latest/user/actions/quick-start/" target="_blank" rel="noreferrer"&gt;Forgejo Actions quick start guide&lt;/a&gt; and build a &amp;ldquo;hello world&amp;rdquo; action first.&lt;/p&gt;
&lt;p&gt;This is the file I ended up creating in my local repo:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;mark&gt;.forgejo/workflows/deploy.yaml&lt;/mark&gt;&lt;/span&gt; &lt;/figcaption&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-YAML" data-lang="YAML"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;push]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;buildhugo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;hugo version&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;submodules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;recursive&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;run hugo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;hugo --gc --minify&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;fix up RSS&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;cp ./public/index.xml ./public/rss.xml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;stash public files&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://code.forgejo.org/forgejo/upload-artifact@v4&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;./public/ &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;This checks out the git repo with submodules, runs &lt;code&gt;hugo --gc --minify&lt;/code&gt; on that, copies index.xml to rss.xml because I started with Astro and didn&amp;rsquo;t want to have to migrate everyone&amp;rsquo;s links, then uploads the &lt;code&gt;./public/&lt;/code&gt; directory with the name &lt;code&gt;public&lt;/code&gt; to &lt;a href="https://forgejo.org/docs/next/user/actions/advanced-features/#artifacts" target="_blank" rel="noreferrer"&gt;Forgejo&amp;rsquo;s artifact repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you&amp;rsquo;ve done that, you can:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .forgejo/workflows/deploy.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;That triggers the automation that will (first time) download the Hugo image, then build the website, then stash it in an artifact called &lt;code&gt;public&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s only half the story for &lt;code&gt;deploy.yaml&lt;/code&gt;. &lt;a href="https://andrewmemory.acornwall.net/blog/2026-04-08-uploading-from-forgejo-to-the-webserver/" &gt;Read about uploading to the webserver here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Migrating from Astro to Hugo</title><link>https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/</link><pubDate>Sun, 14 Dec 2025 00:08:05 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/</guid><description>&lt;p&gt;For a while, I&amp;rsquo;ve been uncomfortable with Astro. I&amp;rsquo;m not a big fan of npm&amp;rsquo;s &lt;a href="https://docs.npmjs.com/creating-and-publishing-scoped-public-packages" target="_blank" rel="noreferrer"&gt;policy on security&lt;/a&gt; which is basically &amp;ldquo;yeah, just upload it here.&amp;rdquo; Every time I upgrade npm packages, they break. There are workarounds to some security issues with configurations like &lt;a href="https://supergeekery.com/blog/containerizing-npm-and-package-managers-for-security" target="_blank" rel="noreferrer"&gt;npm in a box&lt;/a&gt; but the developer experience for npm is still kind of like having a rash.&lt;/p&gt;
&lt;p&gt;So I decided to give Hugo a shot.
&lt;figure&gt;&lt;img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="auto"
alt="An image of the Hugo logo superimposed on the Astro logo"
width="330"
height="140"
src="https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/images/astro-to-hugo.webp"
srcset="https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/images/astro-to-hugo.webp 800w, https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/images/astro-to-hugo.webp 1280w"
sizes="(min-width: 768px) 50vw, 65vw"
data-zoom-src="https://andrewmemory.acornwall.net/blog/2025-12-14-migrating-from-astro-to-hugo/images/astro-to-hugo.webp"&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Moving there was surprisingly easy. There were a few quirks. Here&amp;rsquo;s what I ended up doing:&lt;/p&gt;
&lt;h2 class="relative group"&gt;Set up Hugo
&lt;div id="set-up-hugo" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#set-up-hugo" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I installed Hugo from the .deb that&amp;rsquo;s linked from &lt;a href="https://gohugo.io/installation/linux/" target="_blank" rel="noreferrer"&gt;gohugo.io/installation/linux&lt;/a&gt;. I&amp;rsquo;d have preferred to have installed from the Ubuntu package manager, but its version was&amp;hellip; less than recent. I&amp;rsquo;ll have to rememer to update this manually.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hugo doesn&amp;rsquo;t come with a default theme, so I had to pick one (from &lt;a href="https://themes.gohugo.io/" target="_blank" rel="noreferrer"&gt;themes.gohugo.io/&lt;/a&gt;) or roll my own. I picked &lt;a href="https://themes.gohugo.io/themes/blowfish/" target="_blank" rel="noreferrer"&gt;Blowfish&lt;/a&gt; because it has light and dark modes, has good docs, tags, and search.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I walked through the Blowfish &lt;a href="https://blowfish.page/docs/" target="_blank" rel="noreferrer"&gt;installation instructions&lt;/a&gt;. I was very careful to avoid the npm tools that they provided — my whole reason for doing this was to get away from that.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Incidentally, I get a warning:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;WARN Module &amp;#34;blowfish&amp;#34; is not compatible with this Hugo version: 0.141.0/0.152.2 extended; run &amp;#34;hugo mod graph&amp;#34; for more information.&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;It doesn&amp;rsquo;t seem to affect things.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Copy the old posts over
&lt;div id="copy-the-old-posts-over" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#copy-the-old-posts-over" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Next, I needed to copy my old posts into the new structure. That wasn&amp;rsquo;t too bad:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp -R ~/andrewmemory-astromicroacademic/src/content/blog/ ~/andrewmemory-hugo/content/posts/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Fix the posts
&lt;div id="fix-the-posts" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#fix-the-posts" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Fix the time. After copying the posts over, I started to get errors left and right. Hugo is pickier about time formats than Astro. By default, Hugo uses &lt;code&gt;2025-12-14T00:08:05-0700&lt;/code&gt;. Astro was OK with &lt;code&gt;2025-12-14 00:08:05 GMT-7&lt;/code&gt;. Hugo doesn&amp;rsquo;t really care about the &lt;code&gt;T&lt;/code&gt;, I discovered, so all I had to do was:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find . -name index.md -print0 &lt;span class="p"&gt;|&lt;/span&gt; xargs -0 sed -i &lt;span class="s1"&gt;&amp;#39;s/ GMT-7/-0700/1&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Change from description to summary. I discovered that Hugo uses &lt;code&gt;summary:&lt;/code&gt; where Astro uses &lt;code&gt;description:&lt;/code&gt; in the front matter. So&amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find . -name index.md -print0 &lt;span class="p"&gt;|&lt;/span&gt; xargs -0 sed -i &lt;span class="s1"&gt;&amp;#39;s/description:/summary:/1&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Update internal links. Since Astro wants its blog posts in /blog/ and Hugo wants them in /posts/, I needed to update. I could probably have renamed posts to blog, but I figured, let&amp;rsquo;s go with the Hugo way. &lt;strong&gt;You might not want to do this.&lt;/strong&gt; I had to undo it. Scroll down a few sections to see why.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find . -name index.md -print0 &lt;span class="p"&gt;|&lt;/span&gt; xargs -0 sed -i &lt;span class="s1"&gt;&amp;#39;s|/blog/|/posts/|g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Fix links to static files. Astro requires that you put static files in /public for them to be visible. Hugo apparently lets you keep them in their associated directories! So my &lt;a href="https://andrewmemory.acornwall.net/blog/2011-10-01-converting-yaps-to-keepassdroid/" &gt;post with a Perl script&lt;/a&gt; can just say &lt;code&gt;[convertcsv.pl](convertcsv.pl)&lt;/code&gt;. Nice! I copied the static assets into their appropriate directories.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="relative group"&gt;Tweak code blocks to allow filenames
&lt;div id="tweak-code-blocks-to-allow-filenames" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tweak-code-blocks-to-allow-filenames" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;I had &lt;a href="https://andrewmemory.acornwall.net/posts/2024-11-17-adding-code-titles-to-astro-micro-academic/" &gt;modified Astro&lt;/a&gt; to enable filenames on code blocks. I needed to do the same thing for Hugo. I found a few good references, particularly &lt;a href="https://write.rog.gr/writing/labeling-code-blocks-in-hugo/" target="_blank" rel="noreferrer"&gt;Roger Steve Ruiz&amp;rsquo;s blog&lt;/a&gt;. There were a few steps here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create directories &lt;code&gt;~/andrewmemory-hugo/layouts/_default&lt;/code&gt; and &lt;code&gt;~/andrewmemory-hugo/layouts/_default/_markup/&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add a &lt;code&gt;render-codeblock.html&lt;/code&gt; file there. I wanted the titles to stick out a little more, so I abused the &lt;code&gt;&amp;lt;mark&amp;gt;&lt;/code&gt; tag. I also decided to set &lt;code&gt;isVerbatim&lt;/code&gt; to false because I prefer it that way. I ended up with:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;mark&gt;layouts/_default/_markup/render-codeblock.html&lt;/mark&gt;&lt;/span&gt; &lt;/figcaption&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="cm"&gt;/* this file is exists at `layouts/_default/_markup/` in your Hugo project */&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;$isVerbatim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;isset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Attributes&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;verbatim&amp;#34;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;$isVerbatim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Attributes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;verbatim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;figure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt;&lt;span class="err"&gt;=&amp;#34;&lt;/span&gt;&lt;span class="nc"&gt;highlight&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- with .Attributes.title }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;figcaption&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- if $isVerbatim -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;span&amp;gt;&amp;lt;mark&amp;gt;{{ . }}&amp;lt;/mark&amp;gt;&amp;lt;/span&amp;gt; {{/* As a file name */}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- else -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;span&amp;gt;&amp;lt;mark&amp;gt;{{ . | markdownify }}&amp;lt;/mark&amp;gt;&amp;lt;/span&amp;gt; {{/* As a code description */}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- end -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;/figcaption&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- end }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- if transform.CanHighlight .Type }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;pre tabindex=&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="s"&gt;&amp;#34; class=&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;chroma&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;gt;&amp;lt;code class=&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34; data-lang=&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- with transform.HighlightCodeBlock . -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{ .Inner }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- end -}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- else }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; &amp;lt;pre tabindex=&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;0&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;gt;&amp;lt;code class=&amp;#34;&lt;/span&gt;&lt;span class="n"&gt;language&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34; data-lang=&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;&amp;gt;{{ .Inner }}&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; {{- end }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;&amp;lt;/figure&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Finally, I needed to change the references from the old Astro syntax:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;``&lt;span class="sb"&gt;`bash:/usr/local/bin/file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;My file contents
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;``&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;``&lt;span class="sb"&gt;`bash {title = &amp;#34;/usr/local/bin/file&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;My file contents
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sb"&gt;`&lt;/span&gt;``&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;I didn&amp;rsquo;t have enough code blocks with filenames to script this, so I this by hand. I used this one-liner to find out where I needed to make changes:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find . -name index.md -print0 | xargs -0 grep &amp;#39;``&lt;span class="sb"&gt;`&amp;#39; | grep &amp;#39;`&lt;/span&gt;.*:&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;h2 class="relative group"&gt;Move things to match the old site
&lt;div id="move-things-to-match-the-old-site" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#move-things-to-match-the-old-site" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Ok, it looks as if Hugo doesn&amp;rsquo;t have an easy way to alias a section, so I can&amp;rsquo;t define a global /blog/ that redirects to /posts/. If I put everything in /posts/ it will break existing links. I have to undo it. So much for the Hugo way&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Undo the sed that I did above:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;find . -name index.md -print0 &lt;span class="p"&gt;|&lt;/span&gt; xargs -0 sed -i &lt;span class="s1"&gt;&amp;#39;s|/posts/|/blog/|g&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Move the posts/ directory under content/ to blog/:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv posts blog&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Update the Blog link&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;mark&gt;./config/_default/menus.en.toml&lt;/mark&gt;&lt;/span&gt; &lt;/figcaption&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Blog&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;pageRef&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;blog&amp;#34;&lt;/span&gt; &lt;span class="c"&gt;# was posts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;weight&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="4"&gt;
&lt;li&gt;I&amp;rsquo;d love to add a link for the old RSS. But I can&amp;rsquo;t figure out how to rename it. Boo. I guess I can add that when I build the site.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="relative group"&gt;Prettify the RSS feed
&lt;div id="prettify-the-rss-feed" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#prettify-the-rss-feed" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;By default, the RSS that Hugo/Blowfish has is pretty spartan. I found a great blog post called &lt;a href="https://justingarrison.com/blog/2022-11-22-hugo-rss-improvements/" target="_blank" rel="noreferrer"&gt;Hugo RSS Improvements&lt;/a&gt; that got me started. Here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a file in /assets/img/ called &lt;code&gt;rss_image.png&lt;/code&gt;. Mine is 475 by 475 pixels. I read on &lt;a href="https://help.rss.com/en/support/solutions/articles/44000492924-cover-art-formatting-requirements" target="_blank" rel="noreferrer"&gt;rss.com&lt;/a&gt; that Apple wants a minimum of 3000 by 3000. 🙄&lt;/li&gt;
&lt;li&gt;Copy the theme&amp;rsquo;s XML from &lt;code&gt;themes/blowfish/layouts/_default/rss.xml&lt;/code&gt; into &lt;code&gt;layouts/_default/rss.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change the RSS to include the image under the &lt;code&gt;&amp;lt;generator&amp;gt;&lt;/code&gt; line:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;mark&gt;layouts/_default/rss.xml&lt;/mark&gt;&lt;/span&gt; &lt;/figcaption&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;image&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;url&amp;gt;&lt;/span&gt;{{ $.Site.BaseURL }}img/rss_image.png&lt;span class="nt"&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;{{ $.Site.BaseURL }}&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/image&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Change the RSS &lt;code&gt;&amp;lt;description&amp;gt;&lt;/code&gt; to include content rather than summaries:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class="highlight"&gt;
&lt;figcaption&gt;&lt;span&gt;&lt;mark&gt;layouts/_default/rss.xml&lt;/mark&gt;&lt;/span&gt; &lt;/figcaption&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;{{ .Content | html }}&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Now my RSS feed is 600 K and only going to grow, but I can read the blog from the RSS feed in AntennaPod.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Build the static site
&lt;div id="build-the-static-site" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#build-the-static-site" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;On to building and testing. That&amp;rsquo;s easy:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;killall hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/andrewmemory-hugo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rm -rf public resources
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --gc --minify
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; public
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp index.xml rss.xml &lt;span class="c1"&gt;# Yuck&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m http.server &lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;Hey, it looks good! Everything works&amp;hellip; except search. Hmm&amp;hellip; there&amp;rsquo;s a lot of questions in the Hugo community about that. The RSS file is just copied, which means I&amp;rsquo;ll have to do that every time.&lt;/p&gt;
&lt;p&gt;Is it possible that search isn&amp;rsquo;t working because I&amp;rsquo;m not under my domain? Close your eyes, take a breath, and try it out.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Install the static site
&lt;div id="install-the-static-site" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#install-the-static-site" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Blow away the existing site.&lt;/li&gt;
&lt;li&gt;Upload everything in the new public/ to the site.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="relative group"&gt;Images are broken
&lt;div id="images-are-broken" class="anchor"&gt;&lt;/div&gt;
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
&lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#images-are-broken" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;Hmm&amp;hellip; that appears to be something weird with HostGator. I changed Hotlink Protection Management to block links to .png, but allowed direct URL requests. Don&amp;rsquo;t ask, that just has to happen. Websites -&amp;gt; Settings -&amp;gt; Hotlink Protection -&amp;gt; Manage -&amp;gt; Click .png, Click Allow direct requests&lt;/p&gt;</description></item></channel></rss>