<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>chromic</title>
    <link>https://chromic.org/</link>
    <description>Recent content on chromic</description>
    <language>en-ca</language>
    
    
      <managingEditor>chimo@chromic.org (chimo)</managingEditor>
    
    
    
      <webMaster>chimo@chromic.org (chimo)</webMaster>
    

    
    
    
        <atom:link href="https://chromic.org/index.xml" rel="self" type="application/rss+xml" />
    


    
    <item>
      <title>Liked: Markdown Ate the World</title>
      <link>https://chromic.org/likes/markdown-ate-the-world/</link>
      <pubDate>Mon, 23 Mar 2026 19:11:41 +0000</pubDate>
      
      <guid>https://chromic.org/likes/markdown-ate-the-world/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://matduggan.com/markdown-ate-the-world/&#34;&gt;Markdown Ate the World&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://www.matduggan.com/&#34;&gt;Mathew Duggan&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Organic Maps</title>
      <link>https://chromic.org/bookmarks/organic-maps/</link>
      <pubDate>Tue, 10 Mar 2026 21:08:58 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/organic-maps/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://organicmaps.app/&#34;&gt;Organic Maps&lt;/a&gt;&#34;:
    &lt;blockquote&gt;Organic Maps is a privacy-focused offline maps &amp; GPS app for hiking, cycling, biking, and driving.&lt;/blockquote&gt;
  &lt;/div&gt;
  &lt;p&gt;Discovered via &lt;a href=&#34;https://perrotta.dev/2026/03/google-translate-kagi-translate-deepl/&#34;&gt;Google Translate → Kagi Translate, DeepL&lt;/a&gt; by &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;.
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>hledger</title>
      <link>https://chromic.org/bookmarks/hledger/</link>
      <pubDate>Tue, 10 Mar 2026 21:01:47 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/hledger/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://hledger.org/&#34;&gt;hledger&lt;/a&gt;&#34;:
    &lt;blockquote&gt;Robust, friendly, fast, plain text accounting.&lt;/blockquote&gt;
  &lt;/div&gt;
  &lt;p&gt;Discovered via &lt;a href=&#34;https://sufyaan.me/hledger/&#34;&gt;hledger for managing money&lt;/a&gt; by &lt;a href=&#34;https://sufyaan.me/&#34;&gt;Sufyaan&lt;/a&gt;.
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Liked: Nobody Gets Promoted for Simplicity</title>
      <link>https://chromic.org/likes/nobody-gets-promoted-for-simplicity/</link>
      <pubDate>Tue, 03 Mar 2026 22:19:21 +0000</pubDate>
      
      <guid>https://chromic.org/likes/nobody-gets-promoted-for-simplicity/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://terriblesoftware.org/2026/03/03/nobody-gets-promoted-for-simplicity/&#34;&gt;Nobody Gets Promoted for Simplicity&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://terriblesoftware.org/about/&#34;&gt;Matheus Lima&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Liked: 406 Fail</title>
      <link>https://chromic.org/likes/406-fail/</link>
      <pubDate>Wed, 25 Feb 2026 22:47:25 +0000</pubDate>
      
      <guid>https://chromic.org/likes/406-fail/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://406.fail/&#34;&gt;406.fail&lt;/a&gt;&#34;.
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Found while lurking on IRC. Gave me a few chuckles.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>oembed-proxy</title>
      <link>https://chromic.org/bookmarks/oembed-proxy/</link>
      <pubDate>Mon, 23 Feb 2026 21:21:37 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/oembed-proxy/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://codeberg.org/emersion/oembed-proxy&#34;&gt;oembed-proxy&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://emersion.fr/about/&#34;&gt;Simon Ser&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;A proxy that serves oEmbed replies for arbitrary URLs.&lt;/blockquote&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>logbookd</title>
      <link>https://chromic.org/blog/logbookd/</link>
      <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/logbookd/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Today I learned about &lt;a href=&#34;https://sr.ht/~martijnbraam/logbookd/&#34;&gt;logbookd&lt;/a&gt; while lurking in the &lt;a href=&#34;https://wiki.postmarketos.org/wiki/Matrix_and_IRC&#34;&gt;#postmarketos&lt;/a&gt; IRC channel.&lt;/p&gt;
&lt;p&gt;To quote the &lt;a href=&#34;https://wiki.alpinelinux.org/wiki/Logbookd&#34;&gt;Alpine Linux wiki&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;logbookd is a syslogd implementation that uses an sqlite database as a backend.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The wiki also links to an &lt;a href=&#34;https://blog.brixit.nl/looking-closer-at-the-syslog/&#34;&gt;interesting article&lt;/a&gt; about its background.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>tldr pages</title>
      <link>https://chromic.org/bookmarks/tldr-pages/</link>
      <pubDate>Wed, 18 Feb 2026 23:36:04 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/tldr-pages/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://tldr.sh/&#34;&gt;tldr pages&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/tldr-pages/tldr&#34;&gt;tldr-pages&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;
    Collaborative cheatsheets for console commands
  &lt;/blockquote&gt;
  &lt;div&gt;via &lt;a href=&#34;https://jvns.ca/blog/2026/02/18/man-pages/&#34;&gt;Notes on clarifying man pages&lt;/a&gt; by &lt;a href=&#34;https://jvns.ca/&#34;&gt;Julia Evans&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>prek</title>
      <link>https://chromic.org/bookmarks/prek/</link>
      <pubDate>Wed, 18 Feb 2026 23:32:03 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/prek/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/j178/prek&#34;&gt;prek&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/j178&#34;&gt;j178&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;
    Better `pre-commit`, re-engineered in Rust
  &lt;/blockquote&gt;
  &lt;div&gt;via &lt;a href=&#34;https://perrotta.dev/2026/02/new-apkbuild-llm-edition/&#34;&gt;New APKBUILD: LLM edition&lt;/a&gt; by &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Random Search Engine in qutebrowser</title>
      <link>https://chromic.org/blog/random-search-engine-in-qutebrowser/</link>
      <pubDate>Sun, 15 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/random-search-engine-in-qutebrowser/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I usually post things when I&amp;rsquo;m done, or reached a decent point, with whatever
I&amp;rsquo;m doing. This time though I&amp;rsquo;m only halfway there but figure I&amp;rsquo;d post anyway.&lt;/p&gt;
&lt;p&gt;Over time, I&amp;rsquo;ve been stumbling across different search engines. I take note of
them, intend to try them out, but inevitably end up using the same one out of
muscle memory.&lt;/p&gt;
&lt;p&gt;I thought it might be interesting if I could have my browser choose a random
search engine out of a list for every web search I do.&lt;/p&gt;
&lt;p&gt;My attempt at implementing this consists of pointing my
`&lt;a href=&#34;https://qutebrowser.org/&#34;&gt;qutebrowser&lt;/a&gt;`&amp;rsquo;s &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/main/item/.config/qutebrowser/config.py#L15-19&#34;&gt;default search
engine&lt;/a&gt;
at a &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/main/item/.config/qutebrowser/random-search.html&#34;&gt;local HTML
file&lt;/a&gt;,
which includes JavaScript to randomly pick from a &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/main/item/.config/qutebrowser/random-search.html#L10-14&#34;&gt;predefined
list&lt;/a&gt;
of search engines.&lt;/p&gt;
&lt;p&gt;As of now, I&amp;rsquo;m unable to have the browser automatically redirect me to the
target search engine. Doing `window.location = search_engine;` gives me an
error in the lines of &amp;ldquo;Network unavailable&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Dynamically inserting a link on the page and calling `.click()` on it has a
similar behaviour.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m wondering if this is a limitation of the file:// protocol, but I&amp;rsquo;ve not
looked it up yet, and I&amp;rsquo;ve been out of the Web game for a few years now.&lt;/p&gt;
&lt;p&gt;As such, I&amp;rsquo;ve resorted to generating the link, and I have to click on it to get
to the search results. Not the end of the world, but it would be nice if I
didn&amp;rsquo;t have to.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>newsboat bookmarks integration with qutebrowser</title>
      <link>https://chromic.org/blog/newsboat-bookmarks-qutebrowser/</link>
      <pubDate>Sat, 14 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/newsboat-bookmarks-qutebrowser/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I&amp;rsquo;m playing with the idea of having my `&lt;a href=&#34;https://newsboat.org/&#34;&gt;newsboat&lt;/a&gt;`
bookmarks automatically added to `&lt;a href=&#34;https://qutebrowser.org/&#34;&gt;qutebrowser&lt;/a&gt;`.&lt;/p&gt;
&lt;p&gt;Maybe &amp;ldquo;integration&amp;rdquo; is a bit of a strong word for what it does, but time will tell where this goes.&lt;/p&gt;
&lt;p&gt;Basically I added the following as my newsboat
`&lt;a href=&#34;https://newsboat.org/releases/2.42/docs/newsboat.html#bookmark-cmd&#34;&gt;bookmark-cmd&lt;/a&gt;`:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;~/.config/newsboat/config&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bookmark-cmd &lt;span class=&#34;s2&#34;&gt;&amp;#34;sh -c &amp;#39;echo &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;@&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;gt;&amp;gt; /opt/bookmarks/urls&amp;#39; -s&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;It simply adds the bookmarked article to qutebrowser&amp;rsquo;s &amp;ldquo;bookmarks/urls&amp;rdquo; file.
Normally you&amp;rsquo;d want to write to &amp;ldquo;~/.config/qutebrowser/bookmarks/urls&amp;rdquo;, but I
have this at another location for &lt;span style=&#34;white-space: nowrap&#34;&gt;&amp;hellip;reasons&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;At the moment, to view the bookmark via qutebrowser&amp;rsquo;s
`&lt;a href=&#34;ihttps://qutebrowser.org/doc/help/commands.html#bookmark-list&#34;&gt;:bookmark-list&lt;/a&gt;`
command, qutebrowser needs to be restarted so it loads the new file contents.
In an upcoming qutebrowser release a new
`&lt;a href=&#34;https://github.com/qutebrowser/qutebrowser/blob/5d14f90ded9377b857dbe1147297d5e33535494a/doc/changelog.asciidoc#added&#34;&gt;:bookmarks-reload&lt;/a&gt;`
command will be available so that shouldn&amp;rsquo;t be necessary.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>git pull --autostash</title>
      <link>https://chromic.org/blog/git-pull-autostash/</link>
      <pubDate>Fri, 13 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/git-pull-autostash/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Today I learned about the
&lt;a href=&#34;https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---autostash&#34;&gt;--autostash&lt;/a&gt;
switch for git-pull:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Automatically create a temporary stash entry before the operation begins,
record it in the ref MERGE_AUTOSTASH and apply it after the operation ends.
This means that you can run the operation on a dirty worktree. However, use
with care: the final stash application after a successful merge might result
in non-trivial conflicts.&lt;/p&gt;
&lt;/blockquote&gt;

        
      </description>
    </item>
    
    <item>
      <title>EdgeRouter ER-X Firmware v3.0.1</title>
      <link>https://chromic.org/blog/erx-firmware-v301/</link>
      <pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/erx-firmware-v301/</guid>
      <description>
        

        

        

        
          &lt;p&gt;The following firmware versions for the &lt;a href=&#34;https://store.ui.com/us/en/products/er-x&#34;&gt;Ubiquiti
ER-X&lt;/a&gt; (and others) were released a
while ago:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://community.ui.com/releases/EdgeRouter-3-0-0/33ee3852-b5db-453e-ad14-430bc218c02f&#34;&gt;EdgeRouter ER-X/ER-X-SFP/EP-R6/ER-10X: Firmware v3.0.0&lt;/a&gt; (2025-07-29)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://community.ui.com/releases/EdgeRouter-3-0-1/7fe6b39d-baea-4ce6-87a0-5dcdc9538c3a&#34;&gt;EdgeRouter ER-X/ER-X-SFP/EP-R6/ER-10X: Firmware v3.0.1&lt;/a&gt; (2025-10-30)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For whatever reason the Web interface of my ER-X running v2.0.9-hotfix.7
(2023-08-01) did not notify me and kept showing as &amp;ldquo;Up to date&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In any case, I&amp;rsquo;ve upgraded today and so far things seem to have gone smoothly.
I&amp;rsquo;m particularly interested in possibly replacing my IPSec site-to-site tunnel
with WireGuard site-to-site instead.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E08: &#34;The Strip&#34;</title>
      <link>https://chromic.org/watching/tv/2026-02-06-gieagf/</link>
      <pubDate>Fri, 06 Feb 2026 00:04:39 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-02-06-gieagf/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-02-06-gieagf/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;8&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Strip&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;Winning might be overrated...&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E07: &#34;The Handoff&#34;</title>
      <link>https://chromic.org/watching/tv/2026-02-05-bnlkpo/</link>
      <pubDate>Thu, 05 Feb 2026 00:12:06 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-02-05-bnlkpo/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-02-05-bnlkpo/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;7&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Handoff&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;You always end up back where you started.&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Clear /tmp at reboot on Alpine Linux</title>
      <link>https://chromic.org/blog/alpinelinux-clear-tmp-on-reboot/</link>
      <pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/alpinelinux-clear-tmp-on-reboot/</guid>
      <description>
        

        

        

        
          &lt;p&gt;By default, Alpine Linux &lt;a href=&#34;https://quitesimple.org/page/alpine-tmp&#34;&gt;doesn&amp;rsquo;t (completely) clear the /tmp
directory&lt;/a&gt; on reboot (unless you mount
it as tmpfs). If you would like to enable this feature, change &amp;ldquo;wipe_tmp&amp;rdquo; to
&amp;ldquo;YES&amp;rdquo;:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;/etc/conf.d/bootmisc&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# List of /tmp directories we should clean up&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;clean_tmp_dirs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/tmp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Should we wipe the tmp paths completely or just selectively remove known&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# locks / files / etc... ?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;wipe_tmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;The train-of-thought that led me there was:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Why does it take so long to take a snapshot of my `signal-desktop` container?&lt;/li&gt;
&lt;li&gt;&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;comment&#34;&gt;#&amp;nbsp;Check snapshot sizes&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;prompt&#34;&gt;root@xps:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;du -chs /var/lib/incus/storage-pools/default/containers-snapshots/signal/*&lt;/kbd&gt;
9.1G	/var/lib/incus/storage-pools/default/containers-snapshots/signal/pre-patch-2026-02-01T19.54
9.1G	/var/lib/incus/storage-pools/default/containers-snapshots/signal/pre-patch-2026-02-02T15.28
18.1G	total&lt;/samp&gt;&lt;/pre&gt;

Wow. That doesn&amp;rsquo;t seem right.&lt;/li&gt;
&lt;li&gt;&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;root@signal:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;du -chs /*&lt;/kbd&gt;
...
7.8G	/tmp
...&lt;/samp&gt;&lt;/pre&gt;

Huh&amp;hellip;?&lt;/li&gt;
&lt;li&gt;&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;root@signal:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;ls -lhaS /tmp&lt;/kbd&gt;
-rwxr-xr-x    1 root     root       15.4M Jan 19 20:38 .org.chromium.Chromium.BCGOJo
-rwxr-xr-x    1 root     root       15.4M Jan 29 15:36 .org.chromium.Chromium.BFhFGo
-rwxr-xr-x    1 root     root       15.4M Jan 25 09:46 .org.chromium.Chromium.FKJadh
...
...&lt;/samp&gt;&lt;/pre&gt;

Hrm.&lt;/li&gt;
&lt;li&gt;&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;root@signal:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;ls /tmp/.org.chromium.Chromium.* | wc -l&lt;/kbd&gt;
1276&lt;/samp&gt;&lt;/pre&gt;

Sigh&amp;hellip;&lt;/li&gt;
&lt;li&gt;Search the web for &amp;ldquo;.org.chromium.Chromium&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/electron/electron/issues/16097&#34;&gt;electron/electron/issues/16097&lt;/a&gt; shows up: &lt;blockquote&gt; I have a suspicion that this happens to Electron apps, which package native modules into app.asar instead of app.asar.unpacked/node_modules/ &lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;Okay, let&amp;rsquo;s check Alpine Linux&amp;rsquo;s &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/testing/signal-desktop&#34;&gt;APKBUILD&lt;/a&gt; for &lt;a href=&#34;https://pkgs.alpinelinux.org/package/edge/testing/x86_64/signal-desktop&#34;&gt;signal-desktop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Oh, this package has a &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/testing/signal-desktop/README.md&#34;&gt;README&lt;/a&gt; with its APKBUILD: &lt;blockquote&gt;&amp;hellip;&lt;br /&gt;Signal-desktop is an electron application that is rather complex to build&lt;br /&gt;&amp;hellip;&lt;/blockquote&gt;&lt;/li&gt;
&lt;li&gt;Alright, I don&amp;rsquo;t have time for this right now. Let&amp;rsquo;s just treat the symptoms.&lt;/li&gt;
&lt;/ol&gt;

        
      </description>
    </item>
    
    <item>
      <title>28 Years Later: The Bone Temple</title>
      <link>https://chromic.org/watching/movies/2026-01-31-jhiofa/</link>
      <pubDate>Sat, 31 Jan 2026 20:03:00 +0000</pubDate>
      
      <guid>https://chromic.org/watching/movies/2026-01-31-jhiofa/</guid>
      <description>
        

        

        
          


  
    
  


&lt;div class=&#34;movie h-product h-movie&#34;&gt;&#xA;          &lt;div&gt;&#xA;            &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/movies/2026-01-31-jhiofa/w185.jpg&#34; /&gt;&#xA;          &lt;/div&gt;&#xA;&#xA;          &lt;div&gt;&#xA;            &lt;dl&gt;&#xA;              &lt;dt&gt;Title&lt;/dt&gt;&#xA;              &lt;dd class=&#34;p-name&#34;&gt;28 Years Later: The Bone Temple&lt;/dd&gt;&#xA;        &#xA;              &lt;dt&gt;Overview&lt;/dt&gt;&#xA;              &lt;dd class=&#34;e-description&#34;&gt;Dr. Kelson finds himself in a shocking new relationship - with consequences that could change the world as they know it - and Spike&#39;s encounter with Jimmy Crystal becomes a nightmare he can&#39;t escape.&lt;/dd&gt;&#xA;            &lt;/dl&gt;&#xA;          &lt;/div&gt;&#xA;      &lt;/div&gt;


        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E06: &#34;The Other Player&#34;</title>
      <link>https://chromic.org/watching/tv/2026-01-31-jckedd/</link>
      <pubDate>Sat, 31 Jan 2026 00:18:56 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-01-31-jckedd/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-01-31-jckedd/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;6&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Other Player&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;I remember good people.&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>aerc, gpg and pinentry</title>
      <link>https://chromic.org/blog/aerc-gpg-pinentry/</link>
      <pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/aerc-gpg-pinentry/</guid>
      <description>
        

        

        

        
          &lt;p&gt;If you&amp;rsquo;re getting an error like &amp;ldquo;Screen or window too small&amp;rdquo; while trying to
use gpg (ex: &lt;span style=&#34;white-space: nowrap&#34;&gt;`gpg --import
./private.key`&lt;/span&gt;), one way to fix it might be to instruct gpg to use
&amp;ldquo;pinentry-tty&amp;rdquo;&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;~/.gnupg/gpg-agent.conf&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pinentry-program /usr/bin/pinentry-tty&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;Note that you might need to install
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/edge/main/x86_64/pinentry-tty&#34;&gt;pinentry-tty&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re getting &amp;ldquo;failed to parse messagedetails: FAILURE sign&amp;rdquo; when
&lt;a href=&#34;https://aerc-mail.org/&#34;&gt;aerc&lt;/a&gt; tries to sign a message, you might need to tell
aerc to use terminal pinentry:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;~/.config/aerc/aerc.conf&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;general&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;use-terminal-pinentry&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;

        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E05: &#34;The Wrangler&#34;</title>
      <link>https://chromic.org/watching/tv/2026-01-25-njgidg/</link>
      <pubDate>Sun, 25 Jan 2026 01:43:37 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-01-25-njgidg/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-01-25-njgidg/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;5&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Wrangler&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;Big Whoop.&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E04: &#34;The Demon in the Snow&#34;</title>
      <link>https://chromic.org/watching/tv/2026-01-25-iikefc/</link>
      <pubDate>Sun, 25 Jan 2026 00:41:33 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-01-25-iikefc/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-01-25-iikefc/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;4&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Demon in the Snow&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;Rock to spear and so on...&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Real IP when nginx, darkhttpd are behind HAProxy</title>
      <link>https://chromic.org/blog/haproxy-nginx-darkhttpd-real-ip/</link>
      <pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/haproxy-nginx-darkhttpd-real-ip/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I use &lt;a href=&#34;https://www.haproxy.org/&#34;&gt;HAProxy&lt;/a&gt; as an entry point for most of the
traffic hitting this server. Past that, I either have
&lt;a href=&#34;https://nginx.org/&#34;&gt;nginx&lt;/a&gt; fronting dynamic applications, or
&lt;a href=&#34;https://unix4lyfe.org/darkhttpd/&#34;&gt;darkhttpd&lt;/a&gt; fronting static sites (such as
this blog). This means that, unless configured otherwise, client IP addresses
are known by HAProxy but applications behind it see all traffic coming from the
HAProxy instance&amp;rsquo;s IP address.&lt;/p&gt;
&lt;h2 id=&#34;haproxy&#34;&gt;HAProxy&lt;/h2&gt;
&lt;p&gt;One way you can expose the client&amp;rsquo;s IP address to the applications is using
HAProxy&amp;rsquo;s
&amp;ldquo;&lt;a href=&#34;https://www.haproxy.com/documentation/haproxy-configuration-tutorials/proxying-essentials/client-ip-preservation/add-x-forward-for-header/&#34;&gt;forwardfor&lt;/a&gt;&amp;rdquo;
directive:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;/etc/haproxy/haproxy.cfg&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;l&#34;&gt;frontend main&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;option forwardfor&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;This tells HAProxy to add the client&amp;rsquo;s IP address to the value of
&amp;ldquo;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Forwarded-For#security_and_privacy_concerns&#34;&gt;X-Forwarded-For&lt;/a&gt;&amp;rdquo;
HTTP Header.&lt;/p&gt;
&lt;p&gt;Now that the information is forwarded to the rest of the stack, it can be used
in the logs, for example.&lt;/p&gt;
&lt;h2 id=&#34;nginx&#34;&gt;nginx&lt;/h2&gt;
&lt;p&gt;For nginx, we can tell it to use the IP address in the &amp;ldquo;X-Forwarded-For&amp;rdquo; header
as the client&amp;rsquo;s IP in its logs with the
&amp;ldquo;&lt;a href=&#34;https://nginx.org/en/docs/http/ngx_http_realip_module.html&#34;&gt;real_ip_header&lt;/a&gt;&amp;rdquo;
directive:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;/etc/nginx/http.d/app.conf&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;real_ip_header&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;X&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Forwarded&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;For&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;darkhttpd&#34;&gt;darkhttpd&lt;/h2&gt;
&lt;p&gt;The next version of darkhttpd might include a
`&lt;a href=&#34;https://github.com/emikulic/darkhttpd/pull/88&#34;&gt;--trusted-ip&lt;/a&gt;` option,
which tells darkhttpd to use the value of &amp;ldquo;X-Forwarded-For&amp;rdquo; as the client&amp;rsquo;s IP
address if the traffic is coming from a proxy matching the &amp;ldquo;trusted-ip&amp;rdquo; value.&lt;/p&gt;
&lt;p&gt;I tweaked the &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/tree/3.23-stable/main/darkhttpd&#34;&gt;Alpine Linux darkhttpd
APKBUILD&lt;/a&gt;
and created my own &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/master/item/darkhttpd-git&#34;&gt;darkhttpd-git
package&lt;/a&gt;
to test this out. It&amp;rsquo;s currently serving this blog and seems to work as
intended:&lt;/p&gt;
&lt;figure class=&#34;figure-highlight&#34;&gt;
  &lt;figcaption&gt;/etc/conf.d/darkhttpd&lt;/figcaption&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;darkhttpd_args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--trusted-ip x.x.x.x&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;

        
      </description>
    </item>
    
    <item>
      <title>OpenRC zap</title>
      <link>https://chromic.org/blog/service-rc-zap/</link>
      <pubDate>Sun, 18 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/service-rc-zap/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I don&amp;rsquo;t remember how I stumbled on this, but today I learned about the `zap`
OpenRC command.&lt;/p&gt;
&lt;p&gt;From the &lt;a href=&#34;https://github.com/OpenRC/openrc/blob/master/user-guide.md#modifying-service-scripts&#34;&gt;OpenRC User
Guide&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is a special command zap that makes OpenRC &amp;lsquo;forget&amp;rsquo; that a service is
started; this is mostly useful to reset a crashed service to stopped state
without invoking the (possibly broken) stop function of the service script.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Gentoo wiki has a &lt;a href=&#34;https://wiki.gentoo.org/wiki/OpenRC#Manually_recovering_crashed_services&#34;&gt;usage
example&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;root #&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-service docker status&lt;/kbd&gt;
 * status: crashed
&lt;span class=&#34;prompt&#34;&gt;root #&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-service docker start&lt;/kbd&gt;
 * WARNING: docker has already been started
&lt;span class=&#34;prompt&#34;&gt;root #&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-service docker stop&lt;/kbd&gt;
 * Caching service dependencies ...       [ ok ]
 * Stopping docker ...
 * Failed to stop docker                  [ !! ]
 * ERROR: docker failed to stop
&lt;span class=&#34;comment&#34;&gt;#&amp;nbsp;To remedy this situation, zap the service&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;prompt&#34;&gt;root #&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-service docker zap&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;


        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E03: &#34;The Profligate&#34;</title>
      <link>https://chromic.org/watching/tv/2026-01-11-bkbbdg/</link>
      <pubDate>Sun, 11 Jan 2026 00:32:33 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-01-11-bkbbdg/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-01-11-bkbbdg/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;3&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Profligate&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;Most kids are dead by this age.&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Automatically Pushing pet Snippets to an Existing git Repository</title>
      <link>https://chromic.org/blog/pet-git/</link>
      <pubDate>Sun, 11 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/pet-git/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I recently started using `&lt;a href=&#34;https://github.com/knqyf263/pet&#34;&gt;pet&lt;/a&gt;` as a
snippet manager (thanks to &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;&amp;rsquo;s excellent
&lt;a href=&#34;https://perrotta.dev/2025/12/snippets-manager/&#34;&gt;blog post&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It stores the snippets to a text file (`~/.config/pet/snippet.toml` by
default) which makes it easy to copy/sync/version/etc. It natively supports
&lt;a href=&#34;https://github.com/knqyf263/pet?tab=readme-ov-file#sync-snippets&#34;&gt;synchronizing&lt;/a&gt;
the snippet file as a &lt;a href=&#34;https://github.com/knqyf263/pet?tab=readme-ov-file#gist&#34;&gt;GitHub
Gist&lt;/a&gt; or &lt;a href=&#34;https://github.com/knqyf263/pet?tab=readme-ov-file#gitlab-snippets&#34;&gt;GitLab
Snippet&lt;/a&gt;
(manually or
&lt;a href=&#34;https://github.com/knqyf263/pet?tab=readme-ov-file#auto-sync&#34;&gt;automatically&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m already keeping my dotfiles in a &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles&#34;&gt;git
repo&lt;/a&gt;, however, and would like to
keep my snippet.toml file in the same spot as everything else. I also don&amp;rsquo;t
want to have to remember to manually push the changes every time I
add/delete/edit something.&lt;/p&gt;
&lt;p&gt;I run a lot of my applications in &lt;a href=&#34;https://linuxcontainers.org/incus/&#34;&gt;Incus
containers&lt;/a&gt; (including `pet`) and have
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/main/item/.local/bin&#34;&gt;wrapper
scripts&lt;/a&gt;
in `~/.local/bin/` to &lt;a href=&#34;https://chromic.org/blog/containers-on-my-machine/#interacting-with-the-containers&#34;&gt;run
them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/commit/136ac3fdd5c077e6831edfb019f26c388a837ba0&#34;&gt;modified&lt;/a&gt;
my `pet.sh` wrapper script so that on every invocation, it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/main/item/.local/bin/libs/pet.sh#L15-21&#34;&gt;Runs `pet`&lt;/a&gt; like it&amp;rsquo;s meant to be used.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/136ac3fdd5c077e6831edfb019f26c388a837ba0/item/.local/bin/libs/pet.sh#L24-30&#34;&gt;Checks&lt;/a&gt; whether `snippet.toml` has local modifications.&lt;/li&gt;
&lt;li&gt;If so, prompt if we want to:
&lt;ol&gt;
&lt;li&gt;See &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/136ac3fdd5c077e6831edfb019f26c388a837ba0/item/.local/bin/libs/pet.sh#L8-12&#34;&gt;the diff&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/136ac3fdd5c077e6831edfb019f26c388a837ba0/item/.local/bin/libs/pet.sh#L15-21&#34;&gt;Commit&lt;/a&gt; the changes.&lt;/li&gt;
&lt;li&gt;Skip (do nothing).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E02: &#34;The Golden Rule&#34;</title>
      <link>https://chromic.org/watching/tv/2026-01-10-mfddnb/</link>
      <pubDate>Sat, 10 Jan 2026 23:35:48 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2026-01-10-mfddnb/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2026-01-10-mfddnb/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Golden Rule&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;You can&#39;t put a price on family…&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Chic &#39;N&#39; Stu</title>
      <link>https://chromic.org/blog/advertising-causes/</link>
      <pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/advertising-causes/</guid>
      <description>
        

        

        

        
          &lt;p&gt;My &amp;ldquo;go-to&amp;rdquo; gas station (i.e.: the one&amp;rsquo;s that&amp;rsquo;s most conveniently located for
me) started showing advertisement videos on the small monitors built-in the gas
pumps.&lt;/p&gt;
&lt;p&gt;They are too loud and the audio is of terrible quality.&lt;/p&gt;
&lt;p&gt;It is no longer my go-to gas station.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&amp;quot;&lt;cite&gt;what a splendid pie.&lt;/cite&gt;&amp;quot;&lt;/small&gt;&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Too Slow</title>
      <link>https://chromic.org/blog/too-slow/</link>
      <pubDate>Sun, 04 Jan 2026 23:47:12 +0000</pubDate>
      
      <guid>https://chromic.org/blog/too-slow/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I almost sent a patch to &lt;a href=&#34;https://git.sr.ht/~sircmpwn/git.sr.ht&#34;&gt;gitsrht&lt;/a&gt; since
I noticed multiline selection on blobs (ex: &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L4-25&#34;&gt;link to line #4 in a file and
highlight the next 11
lines&lt;/a&gt;)
was broken on my instance while writing &lt;a href=&#34;https://chromic.org/blog/auto-build-apk-when-upstream-changes/&#34;&gt;a blog
post&lt;/a&gt; today,
but &lt;a href=&#34;https://simartin.dev/&#34;&gt;Simon&lt;/a&gt; was faster than me &lt;a href=&#34;https://lists.sr.ht/~sircmpwn/sr.ht-dev/patches/64792&#34;&gt;by about a
day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just as well since it probably would&amp;rsquo;ve taken me a while to figure out patches
via email, potentially wasting other people&amp;rsquo;s time pointing out my inevitable
blunders :).&lt;/p&gt;
&lt;p&gt;A couple of days ago I noticed my editor settings garbled up newlines on an
email I sent. Whoops&amp;hellip;&lt;/p&gt;
&lt;p&gt;I should figure out why my &lt;a href=&#34;https://srht.chromic.org/~chimo/&#34;&gt;hubsrht
profile&lt;/a&gt;&amp;rsquo;s activity isn&amp;rsquo;t updating anymore
though.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Auto-build APK when upstream APKBUILD changes</title>
      <link>https://chromic.org/blog/auto-build-apk-when-upstream-changes/</link>
      <pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/auto-build-apk-when-upstream-changes/</guid>
      <description>
        

        

        

        
          &lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;I have a custom APKBUILD
(&lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/master/item/hugo-nodeploy&#34;&gt;hugo-nodeploy&lt;/a&gt;)
and I want to automatically re-build it when the upstream APKBUILD
(&lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/tree/3.23-stable/community/hugo?ref_type=heads&#34;&gt;hugo&lt;/a&gt;)
changes. Skip to the &lt;a href=&#34;#detect-apkbuild-version-mismatch&#34;&gt;Detect APKBUILD version
mismatch&lt;/a&gt; section if you don&amp;rsquo;t care about
the context.&lt;/p&gt;
&lt;h2 id=&#34;ramblings&#34;&gt;Ramblings&lt;/h2&gt;
&lt;p&gt;I recently noticed something new in `hugo build` output:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Start building sites …&lt;br&gt;
hugo v0.152.2+extended+withdeploy&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m referring to the &amp;ldquo;+withdeploy&amp;rdquo; part. I never noticed that before, got
curious, and looked it up.&lt;/p&gt;
&lt;p&gt;The change in the &amp;ldquo;hugo&amp;rdquo; Alpine Linux package happened &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/commit/7512908ae8887e17980c75380be0fcba3fc4d70c&#34;&gt;on June
12th&lt;/a&gt;.
It probably appeared on my end when I upgraded to &lt;a href=&#34;https://alpinelinux.org/posts/Alpine-3.23.0-released.html&#34;&gt;Alpine
3.23&lt;/a&gt;. The Alpine
commit message refers to &lt;a href=&#34;https://github.com/gohugoio/hugo/releases/tag/v0.137.0&#34;&gt;hugo release
v0.137.0&lt;/a&gt; and &lt;a href=&#34;https://github.com/gohugoio/hugo/pull/12995&#34;&gt;PR
#12995&lt;/a&gt; in the upstream repo,
which mentions &lt;a href=&#34;https://github.com/gohugoio/hugo/issues/12994&#34;&gt;issue #12994&lt;/a&gt;
for context.&lt;/p&gt;
&lt;p&gt;In short, &lt;a href=&#34;https://github.com/gohugoio/hugo/releases/tag/v0.137.0&#34;&gt;the new
release&lt;/a&gt; without the
&amp;ldquo;deploy&amp;rdquo; feature:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] shaves off about 40% of the binary size.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and, &lt;a href=&#34;https://github.com/gohugoio/hugo/issues/12994&#34;&gt;in some contexts&lt;/a&gt;, gets
rid of:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&amp;hellip;] questionable network activity from Hugo&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The network activity, although a little strange, doesn&amp;rsquo;t concern me too much
(I&amp;rsquo;m assuming it&amp;rsquo;s benign). I also don&amp;rsquo;t really know if my setup is affected.
The `hugo` binary isn&amp;rsquo;t very big to being with, so the size reduction isn&amp;rsquo;t
super significant in my scenario.&lt;/p&gt;
&lt;p&gt;So why am I writing about this if it doesn&amp;rsquo;t really matter to me? Well, I don&amp;rsquo;t
use the `deploy` feature so getting rid of it has no downsides and a couple
of small benefits. More importantly though, it got me to thinking: &amp;ldquo;how would I
approach this if I absolutely needed to get rid of this feature?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;One obvious solution is to get the precompiled binary, but where&amp;rsquo;s the fun in
that? Another solution is to build my own package, &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/master/item/hugo-nodeploy&#34;&gt;which I
did&lt;/a&gt;.
But &amp;ldquo;with custom packages comes some responsibilities&amp;rdquo;. I want to follow the
`hugo` Alpine package releases as closely as possible (recompile due to Go
version changes, security fixes, etc.) but just without the &amp;ldquo;withdeploy&amp;rdquo;
feature. What&amp;rsquo;s the easiest way to do that?&lt;/p&gt;
&lt;p&gt;What I came up with probably isn&amp;rsquo;t the easiest way, but I think that it&amp;rsquo;s
something that&amp;rsquo;ll work for my needs, and might re-usable for other packages in
the future, if need be. Basically, I want to do two distinct things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Detect when my APKBUILD&amp;rsquo;s version doesn&amp;rsquo;t match upstream&amp;rsquo;s APKBUILD version.&lt;/li&gt;
&lt;li&gt;Build my custom package the same way as upstream, but without &amp;ldquo;withdeploy&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;detect-apkbuild-version-mismatch&#34;&gt;Detect APKBUILD Version Mismatch&lt;/h2&gt;
&lt;p&gt;This part relies on the fact that my custom package is deployed to my custom
APK repository and accessible from the current machine (i.e.: I can do `apk
search -e hugo-nodeploy`).&lt;/p&gt;
&lt;p&gt;A heavy requirement, perhaps, but then it should make it &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L4-25&#34;&gt;easy to
achieve&lt;/a&gt;
our first goal: get the versions of both &amp;ldquo;hugo&amp;rdquo; and &amp;ldquo;hugo-nodeploy&amp;rdquo; via `&lt;a href=&#34;https://man.archlinux.org/man/apk-search.8.en&#34;&gt;apk
search&lt;/a&gt;`, compare the two (in my
case, with `&lt;a href=&#34;https://man.archlinux.org/man/apk-version.8.en&#34;&gt;apk version&lt;/a&gt;`)
and see if they differ.&lt;/p&gt;
&lt;h2 id=&#34;build-package&#34;&gt;Build Package&lt;/h2&gt;
&lt;p&gt;If the versions don&amp;rsquo;t match, we need to &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L28-68&#34;&gt;build our
package&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L44-46&#34;&gt;Get the upstream files&lt;/a&gt;.&lt;br&gt;
Right now, I&amp;rsquo;m using `wget` to leverage GitLab&amp;rsquo;s feature that lets us download a specific directory from a repository.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L51-52&#34;&gt;Patch upstream&amp;rsquo;s APKBUILD with our changes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run `&lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/0bd2d10dd248375f6fb2f4102c3697e1a42b5a0b/item/check-hugo.sh#L61-63&#34;&gt;abuild checksum &amp;amp;&amp;amp; abuild -r&lt;/a&gt;`&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;running-the-script&#34;&gt;Running the Script&lt;/h2&gt;
&lt;p&gt;I simply dropped
`&lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/master/item/check-hugo.sh&#34;&gt;check-hugo.sh&lt;/a&gt;`
in `/etc/periodic/daily/`. We&amp;rsquo;ll see how it goes.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Liked: Introducing CSS Grid Lanes</title>
      <link>https://chromic.org/likes/css-grid-lanes/</link>
      <pubDate>Thu, 01 Jan 2026 18:45:25 +0000</pubDate>
      
      <guid>https://chromic.org/likes/css-grid-lanes/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://webkit.org/blog/17660/introducing-css-grid-lanes/&#34;&gt;Introducing CSS Grid Lanes&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://webkit.org/&#34;&gt;webkit.org&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;div&gt;via &lt;a href=&#34;https://ln.ht/~ddevault&#34;&gt;ln.ht/~ddevault&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Liked: git-stash Untracked Files</title>
      <link>https://chromic.org/likes/git-stash-untracked-files/</link>
      <pubDate>Thu, 01 Jan 2026 18:43:08 +0000</pubDate>
      
      <guid>https://chromic.org/likes/git-stash-untracked-files/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://perrotta.dev/2025/12/git-stash-untracked-files/&#34;&gt;git: stash untracked files&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>starship</title>
      <link>https://chromic.org/bookmarks/starship/</link>
      <pubDate>Thu, 01 Jan 2026 18:38:51 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/starship/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/starship/starship&#34;&gt;starship&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://starship.rs/&#34;&gt;starship.rs&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;
    The minimal, blazing-fast, and infinitely customizable prompt for any shell!
  &lt;/blockquote&gt;
  &lt;div&gt;via &lt;a href=&#34;https://perrotta.dev/2025/12/starship/&#34;&gt;Starship&lt;/a&gt; by &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>watchexec</title>
      <link>https://chromic.org/bookmarks/watchexec/</link>
      <pubDate>Thu, 01 Jan 2026 18:34:39 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/watchexec/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/watchexec/watchexec&#34;&gt;watchexec&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/watchexec&#34;&gt;watchexec&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;
    Executes commands in response to file modifications
  &lt;/blockquote&gt;
  &lt;div&gt;via &lt;a href=&#34;https://perrotta.dev/2025/12/who-watches-the-watchmen/&#34;&gt;Who watches the watchmen?&lt;/a&gt; by &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>update-conf</title>
      <link>https://chromic.org/blog/update-conf/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/update-conf/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I recently integrated `&lt;a href=&#34;https://wiki.alpinelinux.org/wiki/Alpine_configuration_management_scripts#update-conf&#34;&gt;update-conf&lt;/a&gt;` (from the &lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.23/main/x86_64/alpine-conf&#34;&gt;alpine-conf package&lt;/a&gt;) in my `apk upgrade` workflow.&lt;/p&gt;
&lt;p&gt;I already had a terribly named &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/48710e4931155e14c6387055bffdf227f97a7956/item/.ashrc#L17&#34;&gt;`uh` alias&lt;/a&gt; (short for &amp;ldquo;update host&amp;rdquo;, in contrast to my other alias `&lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/48710e4931155e14c6387055bffdf227f97a7956/item/.ashrc#L13-15&#34;&gt;uc&lt;/a&gt;` which is short for &amp;ldquo;update containers&amp;rdquo;). This alias would run `apk upgrade` and then re-run my &amp;ldquo;&lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar/tree/main/item/blocks/updates/updates.sh&#34;&gt;updates&lt;/a&gt;&amp;rdquo; block for &lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar&#34;&gt;shuibar&lt;/a&gt; so that I get fresh data in my status bar.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/commit/4bc3e639c1e53f0196f23ea153b4ed57fbce525c&#34;&gt;converted the `uh` alias to a function&lt;/a&gt;, which checks for the presence of .apk-new files with `update-conf`. If any are found, the function exits showing me a list of files that need review.&lt;/p&gt;
&lt;p&gt;Basically, I want to force myself to action .apk-new files, otherwise I cannot upgrade. I like to have my shuibar short and concise, so the constant reminder that upgrades are available will probably be enough for me to review the .apk-new files (as opposed to ignore pending updates).&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll let this sit for a while and see how it goes, but I&amp;rsquo;ll probably re-run update-conf after upgrades to flag new .apk-new files so that I can action them as they appear as opposed to whenever I run updates next.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Avatar: Fire and Ash</title>
      <link>https://chromic.org/watching/movies/2025-12-30-oijdhm/</link>
      <pubDate>Tue, 30 Dec 2025 23:59:25 +0000</pubDate>
      
      <guid>https://chromic.org/watching/movies/2025-12-30-oijdhm/</guid>
      <description>
        

        

        
          


  
    
  


&lt;div class=&#34;movie h-product h-movie&#34;&gt;&#xA;          &lt;div&gt;&#xA;            &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/movies/2025-12-30-oijdhm/w185.jpg&#34; /&gt;&#xA;          &lt;/div&gt;&#xA;&#xA;          &lt;div&gt;&#xA;            &lt;dl&gt;&#xA;              &lt;dt&gt;Title&lt;/dt&gt;&#xA;              &lt;dd class=&#34;p-name&#34;&gt;Avatar: Fire and Ash&lt;/dd&gt;&#xA;        &#xA;              &lt;dt&gt;Overview&lt;/dt&gt;&#xA;              &lt;dd class=&#34;e-description&#34;&gt;In the wake of the devastating war against the RDA and the loss of their eldest son, Jake Sully and Neytiri face a new threat on Pandora: the Ash People, a violent and power-hungry Na&#39;vi tribe led by the ruthless Varang. Jake&#39;s family must fight for their survival and the future of Pandora in a conflict that pushes them to their emotional and physical limits.&lt;/dd&gt;&#xA;            &lt;/dl&gt;&#xA;          &lt;/div&gt;&#xA;      &lt;/div&gt;


        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Sisu: Road to Revenge</title>
      <link>https://chromic.org/watching/movies/2025-12-28-pnchmp/</link>
      <pubDate>Sun, 28 Dec 2025 03:27:24 +0000</pubDate>
      
      <guid>https://chromic.org/watching/movies/2025-12-28-pnchmp/</guid>
      <description>
        

        

        
          


  
    
  


&lt;div class=&#34;movie h-product h-movie&#34;&gt;&#xA;          &lt;div&gt;&#xA;            &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/movies/2025-12-28-pnchmp/w185.jpg&#34; /&gt;&#xA;          &lt;/div&gt;&#xA;&#xA;          &lt;div&gt;&#xA;            &lt;dl&gt;&#xA;              &lt;dt&gt;Title&lt;/dt&gt;&#xA;              &lt;dd class=&#34;p-name&#34;&gt;Sisu: Road to Revenge&lt;/dd&gt;&#xA;        &#xA;              &lt;dt&gt;Overview&lt;/dt&gt;&#xA;              &lt;dd class=&#34;e-description&#34;&gt;Returning to the house where his family was brutally murdered during the war, ‘the man who refuses to die’ dismantles it, loads it on a truck, and is determined to rebuild it somewhere safe in their honor. When the commander who killed his family comes back hellbent on finishing the job, a relentless, eye-popping cross-country chase ensues.&lt;/dd&gt;&#xA;            &lt;/dl&gt;&#xA;          &lt;/div&gt;&#xA;      &lt;/div&gt;


        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Location Tracking</title>
      <link>https://chromic.org/blog/location-tracking/</link>
      <pubDate>Fri, 26 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/location-tracking/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I&amp;rsquo;ve been tracking my location for a while (around &lt;a href=&#34;https://git.srht.chromic.org/~chimo/chromic.org/commit/bae26eb2157bccb138d247fb17ab993e6e1bdc4d&#34;&gt;Feb,
2018&lt;/a&gt;,
apparently). I use my location to populate some of my
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar&#34;&gt;shuibar&lt;/a&gt; blocks such as
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar/tree/main/item/blocks/weather/README.md&#34;&gt;weather.sh&lt;/a&gt;,
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar/tree/main/item/blocks/location/README.md&#34;&gt;location.sh&lt;/a&gt;,
as well as automatically &lt;a href=&#34;https://git.srht.chromic.org/~chimo/timezone&#34;&gt;update my laptop&amp;rsquo;s
timezone&lt;/a&gt; based on where I am.
I&amp;rsquo;ve been doing so with a self-hosted instance of
&lt;a href=&#34;https://github.com/bfabiszewski/ulogger-server&#34;&gt;μlogger-server&lt;/a&gt; and its
Android app &lt;a href=&#34;https://github.com/bfabiszewski/ulogger-android&#34;&gt;μlogger-android&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;At the moment, I have a continuous running &amp;ldquo;track&amp;rdquo; since August, 2023. Although
continuous logging is probably not the application&amp;rsquo;s intended main use-case,
it&amp;rsquo;s been pretty rock-solid ever since I first set it up. Most of the time I
don&amp;rsquo;t even remember I have this running. As such, I haven&amp;rsquo;t really looked into
alternatives, until I randomly stumbled on
&lt;a href=&#34;https://github.com/dedicatedcode/reitti&#34;&gt;Reitti&lt;/a&gt; earlier this year, which I&amp;rsquo;m
planning on testing out once the holidays are over.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Create an &#34;Unread&#34; RSS Feed Group with newsboat</title>
      <link>https://chromic.org/blog/unread-feed-with-newsboat/</link>
      <pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/unread-feed-with-newsboat/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I&amp;rsquo;ve been using &lt;a href=&#34;https://github.com/newsboat/newsboat&#34;&gt;newsboat&lt;/a&gt; as my RSS
Reader for a while now and I am really liking it. Although I realized recently
that one thing I was missing from it was the ability to have a single &amp;ldquo;Unread&amp;rdquo;
group containing all unread articles from all the different RSS feeds I&amp;rsquo;m
subscribed to.&lt;/p&gt;
&lt;p&gt;By default, newsboat shows you the list of your feeds along with an
&amp;ldquo;Unread/Total&amp;rdquo; article count. I&amp;rsquo;ve used it this way for a long time but
recently I caught myself loading newsboat, but then turning to my phone to read
articles via &lt;a href=&#34;https://miniflux.app/&#34;&gt;miniflux&lt;/a&gt;&amp;rsquo;s progressive web app (PWA).&lt;/p&gt;
&lt;p&gt;I paused a moment to wonder why that was and realized that since I&amp;rsquo;ve been
busy/lazy/insert-excuse-here lately, the number of unread articles has been
growing to the point where it was difficult to find which articles were new
with newsboat. I also have the bad habit of leaving things &amp;ldquo;Unread&amp;rdquo; as a
reminder to get back to them later, to make matters worse.&lt;/p&gt;
&lt;p&gt;Finding new articles wasn&amp;rsquo;t so much a problem with miniflux since, by default,
it shows you all your unread articles with the most recent ones at the top.&lt;/p&gt;
&lt;p&gt;I did a bit of searching and it turns out you can create a &amp;ldquo;Unread&amp;rdquo; group,
similar to what miniflux shows you, within newsboat.&lt;/p&gt;
&lt;p&gt;First, add the following to your &amp;ldquo;~/.config/newsboat/urls&amp;rdquo; file (create it if
it doesn&amp;rsquo;t exist):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;query:Unread Articles:unread = \&amp;#34;yes\&amp;#34;&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&#34;notice&#34;&gt;
  &lt;u&gt;Update&lt;/u&gt;: If you&#39;re using the &#34;Starred items&#34; special feed that some
  backends support and you &#34;star&#34; an unread article, it&#39;ll show up twice in
  the &#34;Unread Articles&#34; feed. To prevent that from happening, the following
  query can be used:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;query:Unread Articles:(unread = \&amp;#34;yes\&amp;#34;) and (feedtitle != \&amp;#34;Starred items\&amp;#34;)&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Next, if you want to see this group by default when launching newsboat, add the
following to &amp;ldquo;~/.config/newsboat/config&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;run-on-startup goto-title &lt;span class=&#34;s2&#34;&gt;&amp;#34;Unread Articles&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; open&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Done! You can get back to newsboat&amp;rsquo;s default view of all your individual feeds
by pressing &amp;lsquo;q&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;One habit I&amp;rsquo;m planning on changing though is using miniflux&amp;rsquo;s &amp;ldquo;Star&amp;rdquo; feature,
which newsboat supports, as reminders for articles I want to get back to
instead of leaving them as unread.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>Fallout S02E01: &#34;The Innovator&#34;</title>
      <link>https://chromic.org/watching/tv/2025-12-18-hgbnlg/</link>
      <pubDate>Thu, 18 Dec 2025 00:05:58 +0000</pubDate>
      
      <guid>https://chromic.org/watching/tv/2025-12-18-hgbnlg/</guid>
      <description>
        

        
                      
            
            
              
                
              
            

            &lt;div class=&#34;tv h-product h-tv-episode&#34;&gt;&#xA;                  &lt;div&gt;&#xA;                    &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/tv/2025-12-18-hgbnlg/w185.jpg&#34; /&gt;&#xA;                  &lt;/div&gt;&#xA;&#xA;                  &lt;div&gt;&#xA;                    &lt;dl&gt;&#xA;                      &lt;dt&gt;Series&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-series-name&#34;&gt;Fallout&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Season&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-season&#34;&gt;2&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-episode&#34;&gt;1&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Title&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;p-name&#34;&gt;The Innovator&lt;/dd&gt;&#xA;&#xA;                      &lt;dt&gt;Episode Overview&lt;/dt&gt;&#xA;                      &lt;dd class=&#34;e-description&#34;&gt;Every dollar spent is a vote cast.&lt;/dd&gt;&#xA;                    &lt;/dl&gt;&#xA;                  &lt;/div&gt;&#xA;                  &lt;/div&gt;


        

        

        
          
        
      </description>
    </item>
    
    <item>
      <title>The Fantastic Four: First Steps</title>
      <link>https://chromic.org/watching/movies/2025-12-06-nmnedg/</link>
      <pubDate>Sat, 06 Dec 2025 23:14:31 +0000</pubDate>
      
      <guid>https://chromic.org/watching/movies/2025-12-06-nmnedg/</guid>
      <description>
        

        

        
          


  
    
  


&lt;div class=&#34;movie h-product h-movie&#34;&gt;&#xA;          &lt;div&gt;&#xA;            &lt;img class=&#34;u-photo&#34; src=&#34;https://chromic.org/watching/movies/2025-12-06-nmnedg/w185.jpg&#34; /&gt;&#xA;          &lt;/div&gt;&#xA;&#xA;          &lt;div&gt;&#xA;            &lt;dl&gt;&#xA;              &lt;dt&gt;Title&lt;/dt&gt;&#xA;              &lt;dd class=&#34;p-name&#34;&gt;The Fantastic Four: First Steps&lt;/dd&gt;&#xA;        &#xA;              &lt;dt&gt;Overview&lt;/dt&gt;&#xA;              &lt;dd class=&#34;e-description&#34;&gt;Against the vibrant backdrop of a 1960s-inspired, retro-futuristic world, Marvel&#39;s First Family is forced to balance their roles as heroes with the strength of their family bond, while defending Earth from a ravenous space god called Galactus and his enigmatic Herald, Silver Surfer.&lt;/dd&gt;&#xA;            &lt;/dl&gt;&#xA;          &lt;/div&gt;&#xA;      &lt;/div&gt;


        

        
          
        
      </description>
    </item>
    
    <item>
      <title>Incus alpine/3.23</title>
      <link>https://chromic.org/blog/incus-alpine-323/</link>
      <pubDate>Fri, 05 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/incus-alpine-323/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;summary&#34;&gt;
&lt;p&gt;Alpine Linux 3.23.0 Incus images have been released.&lt;/p&gt;
&lt;/div&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;chimo@chromic:~$&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;incus image list images:alpine/3.23 -c l --format compact&lt;/kbd&gt;
           ALIAS
 alpine/3.23 (3 more)
 alpine/3.23 (3 more)
 alpine/3.23/arm64 (1 more)
 alpine/3.23/arm64 (1 more)
 alpine/3.23/armhf (1 more)
 alpine/3.23/cloud (1 more)
 alpine/3.23/cloud (1 more)
 alpine/3.23/cloud/arm64
 alpine/3.23/cloud/arm64
 alpine/3.23/cloud/armhf&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;That was fast!&lt;/p&gt;
        
      </description>
    </item>
    
    <item>
      <title>Alpine Linux 3.23.0</title>
      <link>https://chromic.org/blog/alpinelinux-323/</link>
      <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/alpinelinux-323/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;summary&#34;&gt;
&lt;p&gt;Alpine Linux 3.23.0 &lt;a href=&#34;https://alpinelinux.org/posts/Alpine-3.23.0-released.html&#34;&gt;has been
released&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;rsquo;ve upgraded a bunch of &lt;a href=&#34;https://linuxcontainers.org/incus/&#34;&gt;Incus containers&lt;/a&gt;
and my main machine and everything seems to be working so far.&lt;/p&gt;
&lt;p&gt;The v3.23 Alpine Linux image for Incus isn&amp;rsquo;t yet available, but my &lt;a href=&#34;https://chromic.org/blog/adding-blocks-to-shuibar/&#34;&gt;trusty
shuibar&lt;/a&gt; should notify me
whenever that&amp;rsquo;s available so I can rebuild my custom base images.&lt;/p&gt;
        
      </description>
    </item>
    
    <item>
      <title>pet</title>
      <link>https://chromic.org/bookmarks/pet/</link>
      <pubDate>Wed, 03 Dec 2025 22:18:05 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/pet/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/knqyf263/pet&#34;&gt;pet&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/knqyf263&#34;&gt;knqyf263&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;blockquote&gt;
    Simple command-line snippet manager
  &lt;/blockquote&gt;
  &lt;div&gt;via &lt;a href=&#34;https://perrotta.dev/2025/12/snippets-manager/&#34;&gt;Snippets manager&lt;/a&gt; by &lt;a href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Liked: Snippets Manager</title>
      <link>https://chromic.org/likes/snippets-manager/</link>
      <pubDate>Wed, 03 Dec 2025 22:16:40 +0000</pubDate>
      
      <guid>https://chromic.org/likes/snippets-manager/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-like-of&#34;&gt;
    Liked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://perrotta.dev/2025/12/snippets-manager/&#34;&gt;Snippets manager&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://perrotta.dev/&#34;&gt;Thiago Perrotta&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Reusing my old phone as a universal remote</title>
      <link>https://chromic.org/blog/reusing-my-old-phone-as-a-universal-remote/</link>
      <pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/reusing-my-old-phone-as-a-universal-remote/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;summary&#34;&gt;
&lt;p&gt;Over the years, I&amp;rsquo;ve ended up with a bunch of small infrared remotes for
various things. I also had an old&lt;sup id=&#34;r1&#34; name=&#34;r1&#34;&gt;&lt;a href=&#34;#f1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Samsung_Galaxy_S5&#34;&gt;Samsung
Galaxy S5&lt;/a&gt;, which has an
infrared transmitter, sitting in a storage bin in the basement. I decided to
look into consolidating the various IR remotes into virtual remotes via the
Android phone.&lt;/p&gt;
&lt;/div&gt;
&lt;h2 id=&#34;capturing-the-ir-signals&#34;&gt;Capturing the IR signals&lt;/h2&gt;
&lt;h3 id=&#34;hardware&#34;&gt;Hardware&lt;/h3&gt;
&lt;p&gt;Some years ago, I bought a &lt;a href=&#34;https://www.vishay.com/en/product/82491/&#34;&gt;TSOP38238 IR
receiver&lt;/a&gt; to use with my raspberrypi.
I don&amp;rsquo;t remember why I got this back then, but that&amp;rsquo;s what I used to capture
the IR signals from the remotes this time around.&lt;/p&gt;
&lt;p&gt;I hooked up the IR receiver pins (left) to the raspberrypy&amp;rsquo;s pins (right) as
follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pin 1 -&amp;gt; Pin 18 (Out/GPIO)&lt;/li&gt;
&lt;li&gt;Pin 2 -&amp;gt; Pin 6 (Ground/Ground)&lt;/li&gt;
&lt;li&gt;Pin 3 -&amp;gt; Pin 1 (V&lt;sub&gt;S&lt;/sub&gt;/3V3 Power)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See: &amp;ldquo;&lt;a href=&#34;https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio&#34;&gt;GPIO and the 40-pin
header&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;software&#34;&gt;Software&lt;/h3&gt;
&lt;p&gt;Install &lt;a href=&#34;https://pkgs.alpinelinux.org/package/edge/community/armhf/lirc&#34;&gt;lirc&lt;/a&gt;
and
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.22/community/armhf/raspberrypi-utils-dtmerge&#34;&gt;dtoverlay&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;# apk add lirc raspberrypi-utils-dtmerge&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Load overlay:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;# dtoverlay gpio-ir,gpio_pin=18&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At this point, you should see a device named lirc0 in /dev/&lt;/p&gt;
&lt;p&gt;Run &lt;a href=&#34;https://man.archlinux.org/man/mode2.1&#34;&gt;mode2&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$ mode2 --driver default --device /dev/lirc0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Press a button on an infrared remote. You should see some output like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;pulse &amp;lt;number&amp;gt;&lt;br&gt;
space &amp;lt;number&amp;gt;&lt;br&gt;
&amp;hellip;&lt;br&gt;
timeout&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For my purposes, I wanted to save the output to a file, so I piped the output
to &lt;a href=&#34;https://man.archlinux.org/man/core/coreutils/tee.1.en&#34;&gt;tee&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;$ mode2 --driver default -d /dev/lirc0 | tee out.txt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then pressed all the buttons on my remote one by one. Once done, hit Ctrl+C to
exit.&lt;/p&gt;
&lt;p&gt;Now, we want to only keep the numbers as space-separated list for each button.
The following one-liner does the trick, but I&amp;rsquo;m sure there are better options
out there:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -E &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/timeout [0-9]+//g&amp;#39;&lt;/span&gt; ./out.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;     &lt;span class=&#34;c1&#34;&gt;# Replace &amp;#34;timeout&amp;#34; lines with blank lines&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cut -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; -f2 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;                         &lt;span class=&#34;c1&#34;&gt;# Only keep numbers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sed -r &lt;span class=&#34;s1&#34;&gt;&amp;#39;:a; N ;s/(.+)\n(.+)/\1 \2/; ta&amp;#39;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Remove all newlines except on blank lines&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;android&#34;&gt;Android&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&#34;https://github.com/iodn/android-ir-blaster&#34;&gt;IR-Blaster&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a remote.&lt;/li&gt;
&lt;li&gt;Create buttons using the decimal values captured.&lt;/li&gt;
&lt;li&gt;Use your phone as a remote!&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a id=&#34;f1&#34; name=&#34;f1&#34;&gt;[1]&lt;/a&gt; My SGS5 runs &lt;a href=&#34;https://lineageos.org/&#34;&gt;LineageOS&lt;/a&gt;
18.1, the latest version available for this model. That version isn&amp;rsquo;t
supported anymore. As such, I don&amp;rsquo;t connect this device to the internet. In
fact, since it&amp;rsquo;s only used as a IR remote, both Wifi and Bluetooth are
turned-off. &lt;a href=&#34;#r1&#34;&gt;^&lt;/a&gt;&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>wsl-vpnkit</title>
      <link>https://chromic.org/blog/wsl-vpnkit/</link>
      <pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/wsl-vpnkit/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;summary&#34;&gt;
&lt;p&gt;A recent update to our VPN client at work broke networking in WSL2. Thankfully,
recently I learned about &lt;a href=&#34;https://github.com/sakai135/wsl-vpnkit&#34;&gt;wsl-vpnkit&lt;/a&gt;,
which fixed the issue,&lt;/p&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>wsl-vpnkit</title>
      <link>https://chromic.org/bookmarks/wsl-vpnkit/</link>
      <pubDate>Mon, 01 Dec 2025 02:10:08 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/wsl-vpnkit/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/sakai135/wsl-vpnkit&#34;&gt;wsl-vpnkit&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/sakai135&#34;&gt;sakai135&lt;/a&gt;.
    &lt;/span&gt;
    &lt;blockquote&gt;
      Provides network connectivity to WSL 2 when blocked by VPN
    &lt;/blockquote&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>Android IR Blaster</title>
      <link>https://chromic.org/bookmarks/android-ir-blaster/</link>
      <pubDate>Mon, 01 Dec 2025 02:03:03 +0000</pubDate>
      
      <guid>https://chromic.org/bookmarks/android-ir-blaster/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;h-entry&#34;&gt;
  &lt;div class=&#34;h-cite u-bookmark-of&#34;&gt;
    Bookmarked &#34;&lt;a class=&#34;u-url&#34; href=&#34;https://github.com/iodn/android-ir-blaster&#34;&gt;android-ir-blaster&lt;/a&gt;&#34; by
    &lt;span class=&#34;p-author h-card&#34;&gt;
      &lt;a class=&#34;u-url p-name&#34; href=&#34;https://github.com/iodn&#34;&gt;iodn&lt;/a&gt;.
    &lt;/span&gt;
    &lt;blockquote&gt;
      Create custom infrared (IR) remotes using hex codes, raw
      signals, or Flipper Zero .IR files
    &lt;/blockquote&gt;
  &lt;/div&gt;
&lt;/div&gt;

        
      </description>
    </item>
    
    <item>
      <title>mode2 partial read</title>
      <link>https://chromic.org/blog/mode2-partial-read/</link>
      <pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/mode2-partial-read/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Once you have &lt;a href=&#34;https://chromic.org/blog/dtoverlay-is-also-a-command/&#34;&gt;dtoverlay working&lt;/a&gt; for your
infrared reciever, if you run &lt;a href=&#34;https://man.archlinux.org/man/mode2.1&#34;&gt;mode2&lt;/a&gt; to
capture signal but run into &amp;ldquo;Partial read 12 bytes&amp;rdquo; (where the number may
differ), you may need to switch from the &amp;ldquo;devinput&amp;rdquo; driver to the &amp;ldquo;default&amp;rdquo;
driver.&lt;/p&gt;
&lt;p&gt;For example, on the command-line:&lt;/p&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;k3rnel-pan1c:~$&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;mode2 --driver default --device /dev/lirc0&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;Thanks to &lt;a href=&#34;https://stackoverflow.com/users/5014688/ingo&#34;&gt;Ingo&lt;/a&gt; on stackoverflow
for &lt;a href=&#34;https://stackoverflow.com/a/49339121&#34;&gt;the hint&lt;/a&gt;.&lt;/p&gt;

        
      </description>
    </item>
    
    <item>
      <title>dtoverlay is also a command</title>
      <link>https://chromic.org/blog/dtoverlay-is-also-a-command/</link>
      <pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://chromic.org/blog/dtoverlay-is-also-a-command/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;summary&#34;&gt;
&lt;p&gt;Today I learned that
&amp;ldquo;&lt;a href=&#34;https://www.raspberrypi.com/documentation/computers/configuration.html#part3.5.1&#34;&gt;dtoverlay&lt;/a&gt;&amp;rdquo;
is not only a property of the raspberrypi&amp;rsquo;s config.txt file, but also a command
that can be run after bootup.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I was trying to get my raspberrypi (running Alpine Linux) to recognize my
&lt;a href=&#34;https://www.vishay.com/en/product/82491/&#34;&gt;TSOP38238 IR receiver&lt;/a&gt;, but adding
&amp;ldquo;dtoverlay=gpio-ir,gpio_pin=18&amp;rdquo; to the following files did not work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/boot/usercfg.txt&lt;/li&gt;
&lt;li&gt;/boot/config.txt&lt;/li&gt;
&lt;li&gt;/boot/firmware/config.txt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Running the following command after booting up does make /dev/lirc0 appear,
however:&lt;/p&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;k3rnel-pan1c:~$&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;doas dtoverlay gpio-ir,gpio_pin=18&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;Which is fine for my purposes since I only need the device to be present once
in a while, not on every boot.&lt;/p&gt;
&lt;p&gt;The command is available in the
&amp;ldquo;&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.22/community/armhf/raspberrypi-utils-dtmerge&#34;&gt;raspberrypi-utils-dtmerge&lt;/a&gt;&amp;rdquo;
package.&lt;/p&gt;

        
      </description>
    </item>
    

</channel>
</rss>



