<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>henrikbro</title>
      <link>https://blog.midterracedream.duckdns.org</link>
      <description>Notes on data platforms, running, tools, and web projects.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://blog.midterracedream.duckdns.org/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Wed, 29 Apr 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Site housekeeping</title>
          <pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate>
          <author>Henrik Brodtkorb</author>
          <link>https://blog.midterracedream.duckdns.org/blog/site-housekeeping/</link>
          <guid>https://blog.midterracedream.duckdns.org/blog/site-housekeeping/</guid>
          <description xml:base="https://blog.midterracedream.duckdns.org/blog/site-housekeeping/">&lt;p&gt;Static sites stay pleasant when the boring pieces are kept tidy.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;figure&quot;&gt;Figure&lt;&#x2F;h2&gt;
&lt;figure class=&quot;post-figure image-wide&quot;&gt;
  &lt;img src=&quot;&#x2F;images&#x2F;site-housekeeping.svg&quot; alt=&quot;A static site housekeeping dashboard with checks for links, feeds, and sitemap output.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
  
  &lt;figcaption&gt;A wide image example with lazy loading, alt text, and an optional caption.&lt;&#x2F;figcaption&gt;
  
&lt;&#x2F;figure&gt;
&lt;p&gt;That means checking links after template changes, keeping markdown fixtures
around for tables and code blocks, and making sure the homepage still works
when the post list grows.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;checks&quot;&gt;Checks&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Homepage post list has enough density.&lt;&#x2F;li&gt;
&lt;li&gt;Tags with multiple posts show useful counts.&lt;&#x2F;li&gt;
&lt;li&gt;Filtered tag pages still feel like part of the same system.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;callout&quot;&gt;Callout&lt;&#x2F;h2&gt;
&lt;aside class=&quot;callout callout-note&quot;&gt;
  
  &lt;p class=&quot;callout-title&quot;&gt;Small pieces&lt;&#x2F;p&gt;
  
  &lt;div class=&quot;callout-body&quot;&gt;&lt;p&gt;Shortcodes should make posts easier to read, not turn the blog into a component catalogue.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;aside&gt;
&lt;h2 id=&quot;caption&quot;&gt;Caption&lt;&#x2F;h2&gt;
&lt;p class=&quot;caption&quot;&gt;The checklist is intentionally short: it is here to exercise post typography, spacing, and helper components.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;gallery&quot;&gt;Gallery&lt;&#x2F;h2&gt;
&lt;p&gt;The scroll gallery keeps images in a horizontal rail with snap points. Images still link to the full-size source.&lt;&#x2F;p&gt;
&lt;div class=&quot;gallery gallery-scroll&quot; tabindex=&quot;0&quot; aria-label=&quot;Scrollable image gallery&quot;&gt;
  &lt;figure&gt;
    &lt;a href=&quot;&#x2F;images&#x2F;site-detail.svg&quot;&gt;
      &lt;img src=&quot;&#x2F;images&#x2F;site-detail.svg&quot; alt=&quot;Generated page route card.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
    &lt;&#x2F;a&gt;
    &lt;figcaption&gt;Generated routes.&lt;&#x2F;figcaption&gt;
  &lt;&#x2F;figure&gt;
  
  &lt;figure&gt;
    &lt;a href=&quot;&#x2F;images&#x2F;site-card.svg&quot;&gt;
      &lt;img src=&quot;&#x2F;images&#x2F;site-card.svg&quot; alt=&quot;Shortcode component card.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
    &lt;&#x2F;a&gt;
    &lt;figcaption&gt;Shortcode components.&lt;&#x2F;figcaption&gt;
  &lt;&#x2F;figure&gt;
  
  
  &lt;figure&gt;
    &lt;a href=&quot;&#x2F;images&#x2F;site-housekeeping.svg&quot;&gt;
      &lt;img src=&quot;&#x2F;images&#x2F;site-housekeeping.svg&quot; alt=&quot;Static site housekeeping dashboard.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;
    &lt;&#x2F;a&gt;
    &lt;figcaption&gt;Wide source image.&lt;&#x2F;figcaption&gt;
  &lt;&#x2F;figure&gt;
  
&lt;&#x2F;div&gt;
&lt;h2 id=&quot;link-card&quot;&gt;Link card&lt;&#x2F;h2&gt;
&lt;a class=&quot;link-card&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;
  &lt;span class=&quot;link-card-title&quot;&gt;Zola&lt;&#x2F;span&gt;
  
  &lt;span class=&quot;link-card-description&quot;&gt;The static site generator used for this blog.&lt;&#x2F;span&gt;
  
  &lt;span class=&quot;link-card-url&quot;&gt;https:&amp;#x2F;&amp;#x2F;www.getzola.org&amp;#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;h2 id=&quot;abbreviation&quot;&gt;Abbreviation&lt;&#x2F;h2&gt;
&lt;p&gt;The page also supports inline abbreviations like &lt;abbr class=&quot;abbr&quot; title=&quot;Really Simple Syndication&quot; tabindex=&quot;0&quot; data-title=&quot;Really Simple Syndication&quot;&gt;RSS&lt;&#x2F;abbr&gt;
 without making the prose noisy.&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
