<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web on Andrew's Memory Blog</title><link>https://andrewmemory.acornwall.net/tags/web/</link><description>Recent content in Web on Andrew's Memory Blog</description><generator>Hugo -- gohugo.io</generator><image><url>https://andrewmemory.acornwall.net/img/rss_image.png</url><title>Web 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>Sun, 14 Dec 2025 00:08:05 -0700</lastBuildDate><atom:link href="https://andrewmemory.acornwall.net/tags/web/index.xml" rel="self" type="application/rss+xml"/><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><item><title>Fixing the Firefox 4 open tab / open window nonsense</title><link>https://andrewmemory.acornwall.net/blog/2011-04-15-fixing-the-firefox-4-open-tab-open-window-nonsense/</link><pubDate>Fri, 15 Apr 2011 22:19:17 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2011-04-15-fixing-the-firefox-4-open-tab-open-window-nonsense/</guid><description>&lt;p&gt;Firefox 4 has got it into its head that tabs are better than windows, despite the fact that tabs use up more UI and look ugly, while windows are nice and clean.&lt;/p&gt;
&lt;p&gt;In order to promote their tab agenda, they&amp;rsquo;ve changed the order of the context menu so your muscle memory for &amp;ldquo;Open Link in New Window&amp;rdquo; now brings you &amp;ldquo;Open Link in New Tab&amp;rdquo;. Ugh.&lt;/p&gt;
&lt;p&gt;Luckily, there is an &lt;a href="http://forums.mozillazine.org/viewtopic.php?f=23&amp;amp;t=1954619&amp;amp;start=15" target="_blank" rel="noreferrer"&gt;answer for this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Create a userChrome.css file in your profile/chrome directory (on Windows, C:\Documents and Settings\&lt;em&gt;user&lt;/em&gt;\Application Data\Mozilla\Firefox\Profiles\&lt;em&gt;somethingrandom&lt;/em&gt;.default\chrome\):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#contentAreaContextMenu &amp;gt; * { -moz-box-ordinal-group: 2; } #context-openlink { -moz-box-ordinal-group: 1 !important; }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This doesn&amp;rsquo;t change the order under the file menu, but at least when you&amp;rsquo;re using the context menu it will work right.&lt;/p&gt;</description></item><item><title>Configuring a website on Apache2 with server-side includes</title><link>https://andrewmemory.acornwall.net/blog/2011-01-22-configuring-a-website-on-apache2-with-server-side-includes/</link><pubDate>Sat, 22 Jan 2011 14:37:23 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2011-01-22-configuring-a-website-on-apache2-with-server-side-includes/</guid><description>&lt;p&gt;I recently got myself involved in helping with a website for a local club. In order to maintain it, I wanted to set up an Apache instance at home as well.&lt;/p&gt;
&lt;p&gt;Luckily, in Ubuntu 9.10, it&amp;rsquo;s almost all set up by default. The only changes I had to make were to change the DocumentRoot directory and enable server-side includes. Here&amp;rsquo;s what I did:&lt;/p&gt;
&lt;h2 class="relative group"&gt;Changing the document root
&lt;div id="changing-the-document-root" 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="#changing-the-document-root" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;First I edited /etc/apache2/sites-available/default to put my document root in DocumentRoot, and also changed the two directory references that did point to /var/www to my new document root. Then I made sure all the parents of my document root had r+x permission for the Apache user.&lt;/p&gt;
&lt;h2 class="relative group"&gt;Turning on server-side includes
&lt;div id="turning-on-server-side-includes" 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="#turning-on-server-side-includes" aria-label="Anchor"&gt;#&lt;/a&gt;
&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;My hosting facility has server-side includes turned on for .html. This is not the best use of resources, but this website doesn&amp;rsquo;t get enough traffic to make a difference. So I added: &lt;code&gt;AddType text/html .html AddHandler server-parsed .html Option Include (plus whatever options were there before)&lt;/code&gt; to the two directories that used to be /var/www and /. After that, I had to enable mod_include with: &lt;code&gt;cd /etc/apache2/mods-enabled sudo ln -s ../mods-available/include.load include.load&lt;/code&gt; Then restart apache with sudo /etc/init.d/apache2 restart&lt;/p&gt;</description></item><item><title>Creating thumbnail images with convert</title><link>https://andrewmemory.acornwall.net/blog/2011-01-02-creating-thumbnail-images-with-convert/</link><pubDate>Sat, 01 Jan 2011 17:32:26 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2011-01-02-creating-thumbnail-images-with-convert/</guid><description>&lt;p&gt;A little while ago, I found I had a bunch of images that needed thumbnails that were 100×75. This isn&amp;rsquo;t hard to do - I used convert and a pair of bash for loops.&lt;/p&gt;
&lt;p&gt;The core was a call to convert, which is part of ImageMagick.&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;convert -thumbnail 100x75 input.jpg thumbnail.jpg&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;All of my images happened to be 4:3 - if they hadn&amp;rsquo;t, I might have used &lt;code&gt;100x75!&lt;/code&gt; or rotated/resized them.&lt;/p&gt;
&lt;p&gt;Next, all my files had numbers of the form file01..file09 file10 file11&amp;hellip; etc. If you&amp;rsquo;re nuts, you try to figure out how to do this in a single for-loop with a condition for the first 9 elements that start with 0.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re lazy like me, you use two loops, with a cursor-up in bash so you don&amp;rsquo;t have to type as much:&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;export INFILEPREFIX=file
export OUTFILEPREFIX=file
for i in {1..9}; do convert -thumbnail 100x75 ${INFILEPREFIX}0${i}.jpg ${OUTFILEPREFIX}0${i}t.jpg; done
for i in {10..25}; do convert -thumbnail 100x75 ${INFILEPREFIX}${i}.jpg ${OUTFILEPREFIX}${i}t.jpg; done&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;For the non-thumbnails, I resized as well, using -resize 800x600.&lt;/p&gt;</description></item><item><title>Scale your website images</title><link>https://andrewmemory.acornwall.net/blog/2011-01-01-scale-your-website-images/</link><pubDate>Sat, 01 Jan 2011 17:32:26 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2011-01-01-scale-your-website-images/</guid><description>&lt;p&gt;I just noticed that if you scale an image using width= and height= attributes of the img tag, Firefox 3.6 will (sometimes) put a thin border on the top and left of the image - something that you can&amp;rsquo;t get rid of with CSS/styling.&lt;/p&gt;
&lt;p&gt;Weird - but a good rule seems to be scale your images to the correct size before using them in HTML.&lt;/p&gt;
&lt;p&gt;This is different from the &amp;ldquo;border around link images&amp;rdquo; issue - which is easy enough to get around by using &lt;code&gt;border-style: none&lt;/code&gt; in CSS.&lt;/p&gt;</description></item><item><title>Exposing the Firefox Location Bar behaviour</title><link>https://andrewmemory.acornwall.net/blog/2010-02-19-exposing-the-firefox-location-bar-behaviour/</link><pubDate>Fri, 19 Feb 2010 00:13:42 -0700</pubDate><author>andrewmemoryblog@gmail.com (Andrew's Memory Blog)</author><guid>https://andrewmemory.acornwall.net/blog/2010-02-19-exposing-the-firefox-location-bar-behaviour/</guid><description>&lt;p&gt;On several machines, I&amp;rsquo;ve got Seamonkey 2.0.2 installed. It has some very nice fine-grained preferences to control what shows up in the location bar.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also got a netbook where I put Firefox 3.6 because I didn&amp;rsquo;t need everything that&amp;rsquo;s in Seamonkey. Firefox has really limited preferences to control what shows up in the location bar.&lt;/p&gt;
&lt;p&gt;Luckily, both browsers behave the same way using about:config. So it&amp;rsquo;s possible to get Seamonkey&amp;rsquo;s fine-grained control on Firefox, as long as you don&amp;rsquo;t care about a UI to do it.&lt;/p&gt;
&lt;p&gt;A very useful article can be found here: &lt;a href="http://kb.mozillazine.org/Browser.urlbar.default.behavior" target="_blank" rel="noreferrer"&gt;http://kb.mozillazine.org/Browser.urlbar.default.behavior&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I read that article, and was about to calculate the value I wanted, when I realized the simplest way to do it is to go to the Seamonkey install, set up the preferences the way you want (&amp;ldquo;Autocomplete from your browsing history as you type&amp;rdquo;, &amp;ldquo;Match only websites you&amp;rsquo;ve typed previously&amp;rdquo;, &amp;ldquo;Only match locations, not website titles&amp;rdquo;, &amp;ldquo;Match anywhere but preferring word boundaries&amp;rdquo;, &amp;ldquo;Automatically prefill the best match&amp;rdquo;, &amp;ldquo;Show list of matching results&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;Then look at the values on Seamonkey for&lt;/p&gt;
&lt;figure class="highlight"&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-" data-lang=""&gt;browser.urlbar.default.behavior&lt;/code&gt;&lt;/pre&gt;
&lt;/figure&gt;
&lt;p&gt;using about:config, and enter that value (and any others you care about) in Firefox using about:config on that browser.&lt;/p&gt;
&lt;p&gt;In my case, I set browser.urlbar.default.behavior to 49 to get what I wanted.&lt;/p&gt;</description></item></channel></rss>