<?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>gdk-pixbuf symbol not found</title>
      <link>https://chromic.org/blog/gdk-pixbuf-sumbol-not-found/</link>
      <pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/gdk-pixbuf-sumbol-not-found/</guid>
      <description>
        

        

        

        
          &lt;p&gt;If you&amp;rsquo;re running Alpine Linux edge right now and some of your applications
(for me,
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/edge/testing/x86_64/signal-desktop&#34;&gt;signal-desktop&lt;/a&gt;.
&lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/work_items/18450&#34;&gt;For others&lt;/a&gt;,
Firefox) throw an error similar to the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;g_module_open() failed for
/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-xpm.so: Error
relocating /usr/lib/libgdk_pixbuf-2.0.so.0: gly_pixel_density_new: symbol not
found Executing gtk+3.0-3.24.52-r0.trigger&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A workaround is to &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/work_items/18450#note_645726&#34;&gt;downgrade
gdk-pixbuf&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t downgrade/pin packages very often. As a result, I never remember how to
do it. In this case, I followed the process described by the commenter:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Add the 3.24 repositories as &amp;ldquo;&lt;a href=&#34;https://wiki.alpinelinux.org/wiki/Repositories#Tagged_repository&#34;&gt;tagged
repositories&lt;/a&gt;&amp;rdquo;
in /etc/apk/repositories:&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;@v3.24 &lt;a href=&#34;http://dl-cdn.alpinelinux.org/alpine/v3.24/main&#34;&gt;http://dl-cdn.alpinelinux.org/alpine/v3.24/main&lt;/a&gt;&lt;br&gt;
@v3.24 &lt;a href=&#34;http://dl-cdn.alpinelinux.org/alpine/v3.24/community&#34;&gt;http://dl-cdn.alpinelinux.org/alpine/v3.24/community&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Install that specific version:&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;apk add &lt;a href=&#34;mailto:gdk-pixbuf@v3.24&#34;&gt;gdk-pixbuf@v3.24&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can also provide a specific version number to `apk add` as described in
the &amp;ldquo;&lt;a href=&#34;https://wiki.alpinelinux.org/wiki/Alpine_Package_Keeper#Package_pinning&#34;&gt;Package
pinning&lt;/a&gt;&amp;rdquo;
section of the Alpine wiki.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: gdk-pixbuf%20symbol%20not%20found&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Modern Motherfucking Website</title>
      <link>https://chromic.org/likes/modern-motherfucking-website/</link>
      <pubDate>Sun, 27 Sep 2026 12:10:21 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/likes/modern-motherfucking-website/</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://modernmotherfuckingwebsite.dreamstation.systems/&#34;&gt;Modern Motherfucking Website&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://dreamstation.systems/personal/&#34;&gt;robin&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Modern%20Motherfucking%20Website&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>rbw missing field access_token</title>
      <link>https://chromic.org/blog/rbw-missing-field-access-token/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/rbw-missing-field-access-token/</guid>
      <description>
        

        

        

        
          &lt;p&gt;If `&lt;a href=&#34;https://github.com/doy/rbw&#34;&gt;rbw&lt;/a&gt;` all of the sudden returns:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;failed to sync database from server: failed to parse JSON: missing field
&lt;code&gt;access_token&lt;/code&gt; at line 1 column 25&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A &lt;a href=&#34;https://github.com/doy/rbw/issues/32#issuecomment-761613019&#34;&gt;workaround&lt;/a&gt; is
to run `rbw purge`. Note that this deletes the local copy of the password
database.&lt;/p&gt;
&lt;p&gt;It looks like there might be &lt;a href=&#34;https://github.com/doy/rbw/pull/362&#34;&gt;a fix in a pending
PR&lt;/a&gt; from August, but it hasn&amp;rsquo;t been
merged.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: rbw%20missing%20field%20access_token&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Beaf Stu</title>
      <link>https://chromic.org/blog/beaf-stu/</link>
      <pubDate>Sat, 26 Sep 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/beaf-stu/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;notice&#34;&gt;
  This is a follow-up to &lt;a href=&#34;https://chromic.org/blog/advertising-causes/&#34;&gt;Chic &#39;N&#39; Stu&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;My fallback &amp;ldquo;go-to&amp;rdquo; gas station (i.e.: the one that&amp;rsquo;s second-most conveniently
located for me) started harassing&lt;sup&gt;&lt;a href=&#34;#f1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;a name=&#34;r1&#34;
id=&#34;r1&#34;&gt;people&lt;/a&gt; to open a credit card while you&amp;rsquo;re trapped filling-up.&lt;/p&gt;
&lt;p&gt;It is also no longer my go-to gas station.&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;&lt;a id=&#34;f1&#34; name=&#34;f1&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; To be fair, the people have always been
pleasant and not pushy while just doing their job. But I still don&amp;rsquo;t want to
deal with this.&lt;a href=&#34;#r1&#34;&gt;&lt;sup&gt;^&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Beaf%20Stu&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Gatus</title>
      <link>https://chromic.org/blog/gatus/</link>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/gatus/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I&amp;rsquo;m testing out &lt;a href=&#34;https://github.com/TwiN/gatus&#34;&gt;Gatus&lt;/a&gt; as a replacement to
&lt;a href=&#34;https://github.com/louislam/uptime-kuma&#34;&gt;Uptime Kuma&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Since &lt;a href=&#34;https://github.com/louislam/uptime-kuma/releases/tag/2.3.0&#34;&gt;v2.3.0&lt;/a&gt;,
Uptime Kuma supports monitoring Oracle databases. That&amp;rsquo;s all well and good, but
I&amp;rsquo;ve had trouble &lt;a href=&#34;https://git.srht.chromic.org/~chimo/apkbuilds/tree/master/item/uptime-kuma&#34;&gt;packaging it for Alpine
Linux&lt;/a&gt;
due to &lt;a href=&#34;https://www.npmjs.com/package/oracledb&#34;&gt;NodeJS oracledb&lt;/a&gt; including
binaries that rely on libraries that aren&amp;rsquo;t available on Alpine Linux.&lt;/p&gt;
&lt;p&gt;Uptime Kuma uses &amp;ldquo;&lt;a href=&#34;https://node-oracledb.readthedocs.io/en/latest/user_guide/introduction.html#architecture&#34;&gt;thin
mode&lt;/a&gt;&amp;rdquo;,
which doesn&amp;rsquo;t use those binaries, but the fact that they&amp;rsquo;re part of the package
caused abuild to error-out at the &amp;ldquo;Tracing dependencies&amp;rdquo; step.&lt;/p&gt;
&lt;p&gt;I managed to get it packaged, and learned about APKBUILD
&amp;ldquo;&lt;a href=&#34;https://github.com/alpinelinux/abuild/blob/master/APKBUILD.5.scd?plain=1#L396&#34;&gt;somask&lt;/a&gt;&amp;rdquo;
and
&amp;ldquo;&lt;a href=&#34;https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities#The_scanelf_application&#34;&gt;scanelf&lt;/a&gt;&amp;rdquo;
in the process, but I had been thinking about finding an alternative that
provides an API for a while now.&lt;/p&gt;
&lt;p&gt;The packaging issues gave me the kick-in-the-pants I needed to actually look
into it.&lt;/p&gt;
&lt;p&gt;Some of the things I like about Gatus so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Has an API.&lt;/li&gt;
&lt;li&gt;Supports PostgreSQL.&lt;/li&gt;
&lt;li&gt;Configuration via text file.&lt;/li&gt;
&lt;li&gt;Clean web interface.&lt;/li&gt;
&lt;li&gt;Seems lighter on resources (CPU/RAM).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also had a look at &lt;a href=&#34;https://github.com/statping-ng/statping-ng&#34;&gt;statping-ng&lt;/a&gt;,
but it doesn&amp;rsquo;t have maintenance windows (and the project doesn&amp;rsquo;t look very
active).&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Gatus&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Incus VM won&#39;t start</title>
      <link>https://chromic.org/blog/incus-vm-wont-start/</link>
      <pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/incus-vm-wont-start/</guid>
      <description>
        

        

        

        
          &lt;div class=&#34;notice&#34;&gt;
  Update: This &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/108599&#34;&gt;has been fixed&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;If your Incus VMs fail to start with a generic &amp;ldquo;Failed to run: forkqemu&amp;hellip;&amp;rdquo;
error and absolutely nothing in the logs anywhere (qemu.log, or otherwise), it
might be because you need to install the
&amp;ldquo;&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.24/community/x86_64/qemu-audio-spice&#34;&gt;qemu-audio-spice&lt;/a&gt;&amp;rdquo;
package.&lt;/p&gt;
&lt;p&gt;More info in the &lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/work_items/18278&#34;&gt;Alpine Linux Issue
Tracker&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Incus%20VM%20won%27t%20start&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Home Assistant</title>
      <link>https://chromic.org/blog/home-assistant/</link>
      <pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/home-assistant/</guid>
      <description>
        

        

        

        
          &lt;p&gt;&lt;a href=&#34;https://chromic.org/blog/jellyfin-for-tizen/&#34;&gt;Earlier this year&lt;/a&gt;, I mentioned something along the
lines of:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the newly released &lt;a href=&#34;https://github.com/jellyfin/jellyfin-tizen&#34;&gt;Jellyfin
app&lt;/a&gt; for my television works
well, I&amp;rsquo;ll likely retire my raspberrypi as a media player and re-use it for a
different purpose.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;About a month ago, I decided to finally give &lt;a href=&#34;https://www.home-assistant.io/&#34;&gt;Home
Assistant&lt;/a&gt; a try, and figured it would be a
good use-case for the raspberrypi.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t really have any notes, except that I missed the mention of the &amp;ldquo;shell&amp;rdquo;
subcommand in the console, because it&amp;rsquo;s not listed with the other commands in
`ha help`.  I just need to learn to read, I suppose.&lt;/p&gt;
&lt;p&gt;I needed the &amp;ldquo;shell&amp;rdquo; function because the default &amp;ldquo;.local&amp;rdquo; URL wasn&amp;rsquo;t magically
accessible from other machines (which, given my network configurations, I
expected and prefer).&lt;/p&gt;
&lt;p&gt;Other than that, it seems to be doing what it&amp;rsquo;s supposed to, and seems to be
doing it well.&lt;/p&gt;
&lt;p&gt;Going forward, I want to be more conscious about which IoT devices enter my
home to ensure they don&amp;rsquo;t &lt;em&gt;require&lt;/em&gt; talking to third-party services and can
work in an air-gapped environment.&lt;/p&gt;
&lt;p&gt;I tend to use my devices until they either die or stop getting security updates
so it might take a little while before my current devices get replaced.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Home%20Assistant&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>RecipeJSON</title>
      <link>https://chromic.org/bookmarks/recipe-json/</link>
      <pubDate>Sun, 30 Aug 2026 14:44:16 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/bookmarks/recipe-json/</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://recipejson.github.io/format/&#34;&gt;RecipeJSON&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/leonkunert&#34;&gt;Leon Kunert&lt;/a&gt;.
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: RecipeJSON&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Unifi Network Application -&gt; Unifi OS Server</title>
      <link>https://chromic.org/blog/unifi-network-application-unifi-os-server/</link>
      <pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/unifi-network-application-unifi-os-server/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Thanks to &lt;a href=&#34;https://neilzone.co.uk/&#34;&gt;Neil&lt;/a&gt;&amp;rsquo;s excellent &lt;a href=&#34;https://neilzone.co.uk/2026/08/migrating-my-self-hosted-unifi-controller-from-network-manager-to-unifi-os-server/&#34;&gt;Migrating my self-hosted
UniFi controller from Network Manager to UniFi OS
Server&lt;/a&gt;
blog post showing up in my RSS Reader, it reminded me that I had tried
installing Unifi OS Server on Incus a little while back but ran into issues.&lt;/p&gt;
&lt;p&gt;A web search later, I found
&lt;a href=&#34;https://discussion.scottibyte.com/u/scott/summary&#34;&gt;Scott&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://discussion.scottibyte.com/t/self-hosted-unifi-os-in-an-incus-container/673&#34;&gt;Self Hosted Unifi
OS in an Incus
Container&lt;/a&gt;
post.&lt;/p&gt;
&lt;p&gt;Armed with those two articles, the migration went fairly smoothly. The one
thing I had to change from Scott&amp;rsquo;s post is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;lxc.cgroup.devices.allow = a * rwm&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;lxc.cgroup2.devices.allow = a * rwm&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another note: when exporting the Network Manager settings to a backup file, the
file had no extension. Unifi OS Server didn&amp;rsquo;t want to import it until I added
the &amp;ldquo;.unf&amp;rdquo; extention to it.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Unifi%20Network%20Application%20-%3e%20Unifi%20OS%20Server&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>They broke old.reddit</title>
      <link>https://chromic.org/blog/they-broke-old-reddit/</link>
      <pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/they-broke-old-reddit/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I don&amp;rsquo;t use reddit often, but when a search result would point me there, I
would use the old.reddit.com interface. It seemed cleaner to me, and didn&amp;rsquo;t
require JavaScript. To that effect, I had &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/86a20b6750aa70702a99b6eb1247e5f612058a8d/item/.config/qutebrowser/pyconfig/redirectors.py#L9-10&#34;&gt;qutebrowser
interceptors&lt;/a&gt;
that would automatically redirect me from reddit.com links to old.reddit.com.&lt;/p&gt;
&lt;p&gt;At some point (in July, I think) Reddit &lt;a href=&#34;https://redditinc.com/news/modernizing-reddits-infrastructure-and-moderation-tools&#34;&gt;decided to require
login&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In order to protect our platform, business, and users from abusive scraping
and spamming, over time we plan to make changes involving Old Reddit, the
legacy desktop web experience for Reddit that was built 21 years ago. In the
short term, we will continue to require users to be logged in to access it
and will work on migrating critical bots and moderator workflows to our
modern stack. These efforts will help us mitigate the bad behavior and give
us time to plan the complex follow-up steps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I &lt;a href=&#34;https://git.srht.chromic.org/~chimo/dotfiles/tree/120b4431c77f7c06ed411c997ccf0a0e4da78dc5/item/.config/qutebrowser/pyconfig/redirectors.py#L9-10&#34;&gt;updated my
interceptors&lt;/a&gt;
so that I&amp;rsquo;m redirected to a &lt;a href=&#34;https://github.com/redlib-org/redlib&#34;&gt;redlib&lt;/a&gt;
&lt;a href=&#34;https://github.com/redlib-org/redlib-instances/blob/main/instances.md&#34;&gt;instance&lt;/a&gt;
instead. /shrug&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: They%20broke%20old.reddit&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Show search count in vim</title>
      <link>https://chromic.org/blog/show-search-count-in-vim/</link>
      <pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/show-search-count-in-vim/</guid>
      <description>
        

        

        

        
          &lt;p&gt;To show &amp;ldquo;search count&amp;rdquo; message in the status bar when searching (ex: &amp;ldquo;[13/37]&amp;rdquo;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;set shortmess-=S&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or to perform a count on-demand:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;:%s/some-word//gn&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Credits to &lt;a href=&#34;https://stackoverflow.com/questions/49297579/how-to-count-search-results-in-vim&#34;&gt;stackoverflow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Show%20search%20count%20in%20vim&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Create git branch from Jira issue summary</title>
      <link>https://chromic.org/blog/create-git-branch-from-jira-issue-summary/</link>
      <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/create-git-branch-from-jira-issue-summary/</guid>
      <description>
        

        

        

        
          &lt;p&gt;We use Jira to track issues/tasks at work. I got tired of switching to the
browser to refer to (or copy, paste and edit) the Jira issue summary to give my
git branches meaningful names.&lt;/p&gt;
&lt;p&gt;I wrote a quick script that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Takes a Jira issue key as an input&lt;br&gt;
(ex: TARDIS-1234).&lt;/li&gt;
&lt;li&gt;Gets my Jira credentials from my password manager&lt;br&gt;
(&lt;a href=&#34;https://github.com/doy/rbw&#34;&gt;rbw&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Calls the Jira API to retrieve the Jira issue &amp;ldquo;Summary&amp;rdquo;&lt;br&gt;
(ex: &amp;ldquo;Implement Time-Traveling&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;Turns the summary into a slug&lt;br&gt;
(thanks, &lt;a href=&#34;https://github.com/Mayeu/slugify/blob/master/slugify#L24&#34;&gt;github.com/Mayeu/slugify&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Creates and switches to a new branch&lt;br&gt;
(ex: `git checkout -b tardis-1234-implement-time-traveling`).&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
&lt;figcaption&gt;~/.local/bin/jira-branch.sh&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;cp&#34;&gt;#!/bin/sh -eu
&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;cp&#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;c1&#34;&gt;# https://github.com/Mayeu/slugify/blob/master/slugify#L24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;to_slug&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &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;  &lt;span class=&#34;c1&#34;&gt;# Forcing the POSIX local so alnum is only 0-9A-Za-z&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;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LANG&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;POSIX
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LC_ALL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;POSIX
&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;# Keep only alphanumeric value&lt;/span&gt;
&lt;/span&gt;&lt;/span&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/[^[:alnum:]]/-/g&amp;#39;&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;c1&#34;&gt;# Keep only one dash if there is multiple one consecutively&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  tr -s &lt;span class=&#34;s1&#34;&gt;&amp;#39;-&amp;#39;&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;c1&#34;&gt;# Lowercase everything&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  tr A-Z a-z                  &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;c1&#34;&gt;# Remove last dash if there is nothing after&lt;/span&gt;
&lt;/span&gt;&lt;/span&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/-$//&amp;#39;&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;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;
&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;issue_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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 class=&#34;nv&#34;&gt;issue_key&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;issue_key&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tr A-Z a-z&lt;span class=&#34;k&#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&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;username&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;rbw get -f username jira&lt;span class=&#34;k&#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;nv&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;rbw get -f password jira&lt;span class=&#34;k&#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&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;jira_api_root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://example.org/rest/api/2&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;nv&#34;&gt;issue_summary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#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;    curl -s -u &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;username&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;password&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --request GET &lt;span class=&#34;se&#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;se&#34;&gt;&lt;/span&gt;    --url &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;jira_api_root&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/issue/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;issue_key&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;?fields=summary&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#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;se&#34;&gt;&lt;/span&gt;    --header &lt;span class=&#34;s2&#34;&gt;&amp;#34;Accept: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#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;se&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; jq .fields.summary -r &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; to_slug
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git checkout -b &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;issue_key&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;issue_summary&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;I might call this from a git-alias in the future. Right now it&amp;rsquo;s just a script
in my $PATH.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Create%20git%20branch%20from%20Jira%20issue%20summary&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Logseq DB (v2) and git sync</title>
      <link>https://chromic.org/blog/logseq-db-git-sync/</link>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/logseq-db-git-sync/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Just jotting down notes on a naive way of syncing my
&lt;a href=&#34;https://logseq.com/&#34;&gt;Logseq&lt;/a&gt;
(&lt;a href=&#34;https://discuss.logseq.com/t/whats-new-with-logseq-db-may-16th-2026/35020&#34;&gt;v2&lt;/a&gt;)
graph to a remote git repository using the &lt;a href=&#34;https://discuss.logseq.com/t/whats-new-with-logseq-db-may-16th-2026/35020#p-70276-h-1-markdown-mirror-your-db-graph-also-on-disk-3&#34;&gt;Markdown
Mirror&lt;/a&gt;
Logseq feature.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Initialize a git repository somewhere (ex: ~/logseq-git).&lt;/li&gt;
&lt;li&gt;Enable Markdown Mirror in your Logseq graph.&lt;/li&gt;
&lt;li&gt;Create a `logseq` alias/script which
&lt;ol&gt;
&lt;li&gt;Starts an auto-commit loop in the background.&lt;/li&gt;
&lt;li&gt;Launches Logseq.&lt;/li&gt;
&lt;li&gt;Auto-commits one last time once Logseq terminates (ex: when Quitting).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;
&lt;figcaption&gt;~/.local/bin/logseq&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;cp&#34;&gt;#!/bin/sh -eu
&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;cp&#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;nv&#34;&gt;git_dir&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;~/logseq-git/.git&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 class=&#34;nv&#34;&gt;work_tree&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;~/logseq/graphs/Demo/mirror/markdown&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;auto_commit&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &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;    &lt;span class=&#34;c1&#34;&gt;# Add all files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    git --git-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;git_dir&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --work-tree&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;work_tree&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; add -A
&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;# Commit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    git --git-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;git_dir&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --work-tree&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;work_tree&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; commit -m &lt;span class=&#34;s1&#34;&gt;&amp;#39;Auto-commit.&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&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;# Push&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    git --git-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;git_dir&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; --work-tree&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;work_tree&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; push &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&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;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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;main&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &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;    &lt;span class=&#34;c1&#34;&gt;# Auto-commit loop&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;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&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;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        auto_commit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        sleep &lt;span class=&#34;m&#34;&gt;60&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;k&#34;&gt;done&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&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;nv&#34;&gt;loop_pid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&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&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;# Launch logseq&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    logseq
&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;nb&#34;&gt;kill&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;loop_pid&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;# Commit on close&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    auto_commit
&lt;/span&gt;&lt;/span&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;
&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;main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;This would probably be better as an actual Logseq plugin.&lt;/li&gt;
&lt;li&gt;The script above only auto-commits a single graph (I only have one).&lt;/li&gt;
&lt;li&gt;From limited testing, it seems to be working okay but time will tell.&lt;/li&gt;
&lt;li&gt;Some weird things may or may not happen if multiple Logseq instances are
launched via this script (I only ever have one instance running).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Logseq%20DB%20%28v2%29%20and%20git%20sync&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Keep Android Open</title>
      <link>https://chromic.org/blog/keep-android-open/</link>
      <pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/keep-android-open/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I use &lt;a href=&#34;https://www.davx5.com/&#34;&gt;DAVx5&lt;/a&gt; (installed via
&lt;a href=&#34;https://f-droid.org&#34;&gt;F-Droid&lt;/a&gt;) to sync my contacts and calendars with my
&lt;a href=&#34;https://nextcloud.com/&#34;&gt;Nextcloud&lt;/a&gt; instance.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t open the app very often, and I mean that in the most positive way. I
configured it a long time ago and it has been doing its thing in the background
since then. For whatever reason, I opened the app recently and saw a small
banner at the top saying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Android&amp;rsquo;s openness is under threat. Learn how you can help at
&lt;a href=&#34;https://keepandroidopen.org/&#34;&gt;keepandroidopen.org&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some random thoughts that crossed my mind while reading the page:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The link above is the only thing I read about this topic (at least so far).
As such, I don&amp;rsquo;t consider myself informed on the matter.&lt;/li&gt;
&lt;li&gt;My Pixel 6 Pro will stop receiving security updates on October, 1st 2026,
and as such;&lt;/li&gt;
&lt;li&gt;I am already considering moving to an alternative operating system such as
&lt;a href=&#34;https://lineageos.org/&#34;&gt;LineageOS&lt;/a&gt; or &lt;a href=&#34;https://grapheneos.org/&#34;&gt;GrapheneOS&lt;/a&gt;
without &lt;a href=&#34;https://en.wikipedia.org/wiki/Google_Mobile_Services&#34;&gt;Google Mobile
Services&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I do realize that switching to a different OS doesn&amp;rsquo;t really do anything to
address the issue at hand.&lt;/li&gt;
&lt;li&gt;From a security/accountability perspective, I understand how a corporation
would want more control over its ecosystem.&lt;/li&gt;
&lt;li&gt;I also understand that individual rights (e.g.: privacy) can be eroded in
the name of &amp;ldquo;security&amp;rdquo; while being thinly veiled attempts at surveillance.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Anyway, I don&amp;rsquo;t really have any insights on this it except a general &amp;ldquo;I don&amp;rsquo;t
like this&amp;rdquo; feeling. I don&amp;rsquo;t publish anything on Google Play, and I&amp;rsquo;m planning
on migrating away from the &amp;ldquo;Google Android&amp;rdquo; ecosystem, so it doesn&amp;rsquo;t directly
affect me (a flawed point-of-view, I know). But I might migrate away from
&amp;ldquo;Google Android&amp;rdquo; before the planned Oct. 1st deadline I had set for myself.&lt;/p&gt;
&lt;p&gt;I ran Cyanogenmod/LineageOS as my daily-driver for about three years
(~2015-2018). I&amp;rsquo;m sure it&amp;rsquo;ll be nice to be back in a lot of ways.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Keep%20Android%20Open&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>btdu</title>
      <link>https://chromic.org/blog/btdu/</link>
      <pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/btdu/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Today I learned about `&lt;a href=&#34;https://github.com/CyberShadow/btdu&#34;&gt;btdu&lt;/a&gt;`. It&amp;rsquo;s like
`&lt;a href=&#34;https://dev.yorhel.nl/ncdu&#34;&gt;ncdu&lt;/a&gt;`, but for
&lt;a href=&#34;https://btrfs.readthedocs.io/en/latest/&#34;&gt;btrfs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: btdu&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Jellyfin, YouTube and Twitch</title>
      <link>https://chromic.org/blog/jellyfin-youtube-twitch/</link>
      <pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/jellyfin-youtube-twitch/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I &lt;a href=&#34;https://chromic.org/blog/jellyfin-for-tizen/&#34;&gt;recently&lt;/a&gt; started using
&lt;a href=&#34;https://jellyfin.org/&#34;&gt;Jellyfin&lt;/a&gt; a bit more and &lt;a href=&#34;https://kodi.tv/&#34;&gt;Kodi&lt;/a&gt; a bit
less. Not because Kodi isn&amp;rsquo;t great, but mainly because I like trying different
things. The fact that my Tv has a native/official Jellyfin client is also a
pretty good motivator.&lt;/p&gt;
&lt;p&gt;Coincidentally (or more likely due to Google snooping on my search history), I
came across &lt;a href=&#34;https://www.xda-developers.com/set-up-jellyfin-movies-youtube-videos-became-real-reason-use-it/&#34;&gt;an article on
XDA&lt;/a&gt;
talking about watching YouTube videos via Jellyfin (with the intermediary step
of downloading them locally).&lt;/p&gt;
&lt;p&gt;The way I currently interface with YouTube (as little as possible) is as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Subscribe to the channel&amp;rsquo;s RSS feed to get notified of new videos.&lt;/li&gt;
&lt;li&gt;Once a new video shows up in my RSS reader, copy the video URL from the feed.&lt;/li&gt;
&lt;li&gt;Run `mpv [video-url]` to watch.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It works well, I don&amp;rsquo;t need to be logged-in to third-party services, and I
don&amp;rsquo;t have to visit the YouTube website (and therefore turn on JavaScript).
Although whenever I need to browse YouTube I use
&lt;a href=&#34;https://docs.invidious.io/instances/&#34;&gt;invidious&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t think Twitch has RSS feeds however, so I don&amp;rsquo;t have a similar process
for Twitch channels. I just use the website to go check once in a while whether
new videos have been added and watch them via the same `mpv` method.&lt;/p&gt;
&lt;p&gt;The XDA article linked above mentioned a few different tools to download
YouTube videos automatically. The one that grabbed my attention is
&amp;ldquo;&lt;a href=&#34;https://github.com/jmbannon/ytdl-sub&#34;&gt;ytdl-sub&lt;/a&gt;&amp;rdquo;. I don&amp;rsquo;t need any kind of UI
if I&amp;rsquo;m going to end up watching using Jellyfin. Configuration is file-driven,
no database needed, works with Twitch, Alpine has &lt;a href=&#34;https://pkgs.alpinelinux.org/package/edge/community/x86_64/ytdl-sub&#34;&gt;a package for
it&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So this gives me a nicer process for Twitch, and a consistent process for both
YouTube and Twitch:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Videos from both sources end up in a Jellyfin library (courtesy of a daily
cronjob running `ytdl-sub`).&lt;/li&gt;
&lt;li&gt;Watch video via Jellyfin.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &amp;ldquo;watching&amp;rdquo; step can be done with any &lt;a href=&#34;https://jellyfin.org/downloads/clients/all/&#34;&gt;Jellyfin
client&lt;/a&gt;. Since I like to stay in
the terminal as much as possible, I opted for
&lt;a href=&#34;https://github.com/Aanok/jftui&#34;&gt;jftui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The last thing I want to do is build a custom notification system using the
&lt;a href=&#34;https://api.jellyfin.org/&#34;&gt;Jellyfin API&lt;/a&gt; to add a block in my
&lt;a href=&#34;https://git.srht.chromic.org/~chimo/shuibar&#34;&gt;shuibar&lt;/a&gt; whenever I have
unwatched videos coming from YouTube/Twitch.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Jellyfin%2c%20YouTube%20and%20Twitch&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Jellyfin doesn&#39;t scan new folders</title>
      <link>https://chromic.org/blog/jellyfin-doesnt-scan-new-folders/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/jellyfin-doesnt-scan-new-folders/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I use &lt;a href=&#34;https://jellyfin.org/&#34;&gt;Jellyfin&lt;/a&gt; to manage my media. I have two
libraries setup. I added a new folder to one of them, but Jellyfin didn&amp;rsquo;t show
me the media items in that new folder. Running &amp;ldquo;Scan library&amp;rdquo; didn&amp;rsquo;t do
anything either.&lt;/p&gt;
&lt;p&gt;Turns out I didn&amp;rsquo;t misconfigure anything (always my first assumption) but
instead it&amp;rsquo;s &lt;a href=&#34;https://github.com/jellyfin/jellyfin-web/issues/7801&#34;&gt;a bug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It has been fixed in the master branch and presumably will be included in the
next release.&lt;/p&gt;
&lt;p&gt;In the meantime, one &lt;a href=&#34;https://github.com/jellyfin/jellyfin-web/issues/7801#issuecomment-4190123026&#34;&gt;work-around is to &amp;ldquo;Scan &lt;strong&gt;All&lt;/strong&gt;
Libraries&lt;/a&gt;&amp;rdquo;
after adding the new folder, apparently.&lt;/p&gt;
&lt;p&gt;If you have decent-size libraries and puny hardware (like I do), re-scanning
all libraries might seem daunting. Instead, I opted to create a new library (I
named it &amp;ldquo;tmp-bug-7801&amp;rdquo;). Jellyfin picked-up the media in the new library just
fine.&lt;/p&gt;
&lt;p&gt;Once the bugfix has been shipped as part of a release, the plan is to delete
this library and re-add the folder to the main library.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Jellyfin%20doesn%27t%20scan%20new%20folders&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>stunnel 5.76 segfault</title>
      <link>https://chromic.org/blog/stunnel-576-segfault/</link>
      <pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/stunnel-576-segfault/</guid>
      <description>
        

        

        

        
          &lt;p&gt;It turns out that &lt;a href=&#34;https://stunnel.org&#34;&gt;stunnel&lt;/a&gt; 5.76 and 5.77, &amp;ldquo;&lt;a href=&#34;https://www.stunnel.org/mailman3/hyperkitty/list/stunnel-users@lists.stunnel.org/thread/EVIIZ3GTPWFHINQKQOGKPJGP67ZRFFVL/?noscript&#34;&gt;crash when
both global (default) and service-level lists of values are configured for an
option&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;For example, this crashes because &amp;ldquo;cert&amp;rdquo; and &amp;ldquo;key&amp;rdquo; are both defined in the
global section, and the &amp;ldquo;example_net&amp;rdquo; section:&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;nv&#34;&gt;cert&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/example.org/fullchain.cer
&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;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/example.org/example.org.key
&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;o&#34;&gt;[&lt;/span&gt;default&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;&lt;span class=&#34;nv&#34;&gt;accept&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;443&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;connect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 127.0.0.1:80
&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;o&#34;&gt;[&lt;/span&gt;example_net&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;&lt;span class=&#34;nv&#34;&gt;sni&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; default:example.net
&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;cert&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/example.net/fullchain.cer
&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;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/example.net/example.net.key
&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;connect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 127.0.0.1:80&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This has been fixed in stunnel &lt;a href=&#34;https://www.stunnel.org/NEWS.html&#34;&gt;5.78&lt;/a&gt; but
since Alpine Linux still ships 5.76 in both
&lt;a href=&#34;https://pkgs.alpinelinux.org/packages?name=stunnel&amp;amp;branch=edge&amp;amp;repo=&amp;amp;arch=x86_64&amp;amp;origin=&amp;amp;flagged=&amp;amp;maintainer=&#34;&gt;edge&lt;/a&gt;
and
&lt;a href=&#34;https://pkgs.alpinelinux.org/packages?name=stunnel&amp;amp;branch=v3.24&amp;amp;repo=&amp;amp;arch=x86_64&amp;amp;origin=&amp;amp;flagged=&amp;amp;maintainer=&#34;&gt;3.24&lt;/a&gt;,
it is something I ran into.&lt;/p&gt;
&lt;p&gt;A work-around in my case is to move the &amp;ldquo;cert&amp;rdquo; and &amp;ldquo;key&amp;rdquo; properties in the
global section to the &amp;ldquo;default&amp;rdquo; section.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: stunnel%205.76%20segfault&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>haproxy 3.3 sets SNI by default</title>
      <link>https://chromic.org/blog/haproxy-33-sni/</link>
      <pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/haproxy-33-sni/</guid>
      <description>
        

        

        

        
          &lt;p&gt;The last sentence of my &lt;a href=&#34;https://chromic.org/blog/acme-alpinelinux-324/&#34;&gt;previous post&lt;/a&gt; was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now I need to figure out why all my
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.24/community/x86_64/stunnel&#34;&gt;stunnel&lt;/a&gt;s
are broken.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Upgrading from Alpine 3.23 to 3.24 upgraded my haproxy from 3.2.x to 3.4.x.&lt;/p&gt;
&lt;p&gt;It turns out that starting with 3.3, haproxy &lt;a href=&#34;https://www.haproxy.com/blog/announcing-haproxy-3-3#sni&#34;&gt;automatically sets an SNI value
from the &amp;ldquo;host&amp;rdquo; HTTP header and forward it to the backend
server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All my stunnel instances only serve a single application, and use a certificate
for an internal domain. For example, this blog (chromic.org on haproxy) maps to
&amp;ldquo;blog.lxc.chromic.org&amp;rdquo; internally. My stunnel configuration looks like this:&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;c1&#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;nv&#34;&gt;cert&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/lxc.chromic.org/fullchain.cer
&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;key&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /etc/ssl/private/lxc.chromic.org/lxc.chromic.org.key
&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;nv&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; no
&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;o&#34;&gt;[&lt;/span&gt;https&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;&lt;span class=&#34;nv&#34;&gt;accept&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;443&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;connect&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 127.0.0.1:80
&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;# ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now that haproxy sets SNI to chromic.org, the certificate configured in stunnel
(*.lxc.chromic.org) doesn&amp;rsquo;t match.&lt;/p&gt;
&lt;p&gt;I could work-around the issue by disabling this new haproxy behaviour by adding
&amp;ldquo;no-sni-auto&amp;rdquo; to every affected &amp;ldquo;server&amp;rdquo; block.&lt;/p&gt;
&lt;p&gt;In this case I simply opted to reconfigure stunnel to use my external cert
instead of the internal one, so the SNI matches the cert.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: haproxy%203.3%20sets%20SNI%20by%20default&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Broken acme.sh with Alpine Linux 3.24</title>
      <link>https://chromic.org/blog/acme-alpinelinux-324/</link>
      <pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/acme-alpinelinux-324/</guid>
      <description>
        

        

        

        
          &lt;p&gt;If your acme.sh client randomly started throwing errors after upgrading to
Alpine Linux 3.24, it might be due to issue
&lt;a href=&#34;https://gitlab.alpinelinux.org/alpine/aports/-/work_items/18285&#34;&gt;aports#18285&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The fix is to install the real
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.24/main/x86_64/openssl&#34;&gt;openssl&lt;/a&gt;
package. It should purge the
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.24/community/x86_64/aws-lc-tools&#34;&gt;aws-lc-tools&lt;/a&gt;
package that got installed:&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;Running &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;apk add openssl&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; at 2026-06-28 01:02:30
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apk-tools 3.0.6-r0, compiled &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; x86_64.
&lt;/span&gt;&lt;/span&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;1/5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; Purging aws-lc-tools &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;5.0.0-r0&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;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;2/5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; Installing openssl &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3.5.7-r0&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;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;3/5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; Purging aws-lc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;5.0.0-r0&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;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;4/5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; Purging libstdc++ &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;15.2.0-r5&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;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;5/5&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; Purging libgcc &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;15.2.0-r5&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;Executing busybox-1.37.0-r31.trigger
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OK: 20.0 MiB in &lt;span class=&#34;m&#34;&gt;53&lt;/span&gt; packages&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For me the error was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Register account Error:
{&amp;ldquo;type&amp;rdquo;:&amp;ldquo;urn:ietf:params:acme:error:malformed&amp;rdquo;,&amp;ldquo;status&amp;rdquo;:400,&amp;ldquo;detail&amp;rdquo;:&amp;quot;[External
Account Binding] Invalid MAC on JWS request&amp;quot;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now I need to figure out why all my
&lt;a href=&#34;https://pkgs.alpinelinux.org/package/v3.24/community/x86_64/stunnel&#34;&gt;stunnel&lt;/a&gt;s
are broken.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Broken%20acme.sh%20with%20Alpine%20Linux%203.24&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Jellyfin for Tizen</title>
      <link>https://chromic.org/blog/jellyfin-for-tizen/</link>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/jellyfin-for-tizen/</guid>
      <description>
        

        

        

        
          &lt;p&gt;Now that &lt;a href=&#34;https://jellyfin.org/posts/state-of-the-fin-2026-05-24/#jellyfin-for-tizen&#34;&gt;Jellyfin is officially available on the Samsung Tizen
store&lt;/a&gt;,
I decided to install it on my Tv. If everything goes well (the first tests were
promising), that might mean I&amp;rsquo;ll be able to repurpose my RaspberryPi (running
&lt;a href=&#34;https://kodi.tv/&#34;&gt;Kodi&lt;/a&gt;) for other uses than a media player.&lt;/p&gt;
&lt;p&gt;Also, fewer wires and cables in the living room!&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Jellyfin%20for%20Tizen&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>nftables Logs on Alpine Linux</title>
      <link>https://chromic.org/blog/nftables-logs-on-alpinelinux/</link>
      <pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/nftables-logs-on-alpinelinux/</guid>
      <description>
        

        

        

        
          &lt;p&gt;If your &lt;a href=&#34;https://nftables.org/projects/nftables/index.html&#34;&gt;nftables&lt;/a&gt; &amp;ldquo;log&amp;rdquo; action isn&amp;rsquo;t &lt;a href=&#34;https://wiki.nftables.org/wiki-nftables/index.php/Logging_traffic&#34;&gt;logging traffic&lt;/a&gt; on Alpine Linux, it may be because sysklogd isn&amp;rsquo;t running:&lt;/p&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;comment&#34;&gt;#&amp;nbsp;Install the init script&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;prompt&#34;&gt;root@logic-b0mb:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;apk add sysklogd-openrc&lt;/kbd&gt;
&lt;span class=&#34;comment&#34;&gt;#&amp;nbsp;Make it start at boot&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;prompt&#34;&gt;root@logic-b0mb:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-update add klogd boot&lt;/kbd&gt;
&lt;span class=&#34;comment&#34;&gt;#&amp;nbsp;Start it now&lt;/span&gt;&lt;br /&gt;&lt;span class=&#34;prompt&#34;&gt;root@logic-b0mb:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;rc-service klogd  start&lt;/kbd&gt;&lt;/samp&gt;&lt;/pre&gt;

&lt;p&gt;Woo!&lt;/p&gt;
&lt;pre class=&#34;repl&#34;&gt;&lt;samp&gt;&lt;span class=&#34;prompt&#34;&gt;root@logic-b0mb:~#&amp;nbsp;&lt;/span&gt;&lt;kbd class=&#34;input&#34;&gt;tail -n 3 /var/log/messages&lt;/kbd&gt;
May 27 17:24:14 logic-b0mb kern.warn kernel: [ 6072.309129] rej-in: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=192.168.xx.xx DST=192.168.xx.xx LEN=160 TOS=0x00 PREC=0x00 TTL=64 ID=22361 DF PROTO=UDP SPT=36150 DPT=514 LEN=140 
May 27 17:24:30 logic-b0mb kern.warn kernel: [ 6088.276676] rej-in: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=192.168.xx.xx DST=192.168.xx.xx LEN=56 TOS=0x00 PREC=0x00 TTL=64 ID=23582 DF PROTO=UDP SPT=33654 DPT=3478 LEN=36 
May 27 17:24:37 logic-b0mb kern.warn kernel: [ 6095.330465] rej-in: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=192.168.xx.xx DST=192.168.xx.xx LEN=160 TOS=0x00 PREC=0x00 TTL=64 ID=23656 DF PROTO=UDP SPT=44940 DPT=514 LEN=140 &lt;/samp&gt;&lt;/pre&gt;


&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: nftables%20Logs%20on%20Alpine%20Linux&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>Containers are great</title>
      <link>https://chromic.org/blog/containers-are-great/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <guid>https://chromic.org/blog/containers-are-great/</guid>
      <description>
        

        

        

        
          &lt;p&gt;I ran into an issue on one of my system-containers earlier today:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;apk Unable to lock database: Resource temporarily unavailable&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I thought about troubleshooting the issue but decided this time around to take
advantage of the disposable nature of containers and delete the problematic
container and rebuild it.&lt;/p&gt;
&lt;p&gt;The problem went away.&lt;/p&gt;
&lt;p&gt;Great.&lt;/p&gt;
&lt;p&gt;Except there&amp;rsquo;s a part of me that really doesn&amp;rsquo;t like the fact that I didn&amp;rsquo;t
learn anything from the situation.&lt;/p&gt;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Containers%20are%20great&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Liked%3a%20Markdown%20Ate%20the%20World&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Organic%20Maps&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>hledger</title>
      <link>https://chromic.org/bookmarks/hledger/</link>
      <pubDate>Tue, 10 Mar 2026 21:01:47 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: hledger&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Liked%3a%20Nobody%20Gets%20Promoted%20for%20Simplicity&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Liked%3a%20406%20Fail&#34;&gt;Reply by email&lt;/a&gt;
&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: oembed-proxy&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>logbookd</title>
      <link>https://chromic.org/blog/logbookd/</link>
      <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: logbookd&#34;&gt;Reply by email&lt;/a&gt;
&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: tldr%20pages&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
    <item>
      <title>prek</title>
      <link>https://chromic.org/bookmarks/prek/</link>
      <pubDate>Wed, 18 Feb 2026 23:32:03 +0000</pubDate>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: prek&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Random%20Search%20Engine%20in%20qutebrowser&#34;&gt;Reply by email&lt;/a&gt;
&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: newsboat%20bookmarks%20integration%20with%20qutebrowser&#34;&gt;Reply by email&lt;/a&gt;
&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: git%20pull%20--autostash&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: EdgeRouter%20ER-X%20Firmware%20v3.0.1&#34;&gt;Reply by email&lt;/a&gt;
&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E08%3a%20%22The%20Strip%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E07%3a%20%22The%20Handoff%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Clear%20%2ftmp%20at%20reboot%20on%20Alpine%20Linux&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: 28%20Years%20Later%3a%20The%20Bone%20Temple&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E06%3a%20%22The%20Other%20Player%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: aerc%2c%20gpg%20and%20pinentry&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E05%3a%20%22The%20Wrangler%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E04%3a%20%22The%20Demon%20in%20the%20Snow%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Real%20IP%20when%20nginx%2c%20darkhttpd%20are%20behind%20HAProxy&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: OpenRC%20zap&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E03%3a%20%22The%20Profligate%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Automatically%20Pushing%20pet%20Snippets%20to%20an%20Existing%20git%20Repository&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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;


        

        

        
          
&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Fallout%20S02E02%3a%20%22The%20Golden%20Rule%22&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&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>
      <author>chimo@chromic.org (chimo)</author>
      <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 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;

&lt;p&gt;
  &lt;a href=&#34;mailto:chimo@chromic.org?subject=Re: Chic%20%27N%27%20Stu&#34;&gt;Reply by email&lt;/a&gt;
&lt;/p&gt;




        
      </description>
    </item>
    
</channel>
</rss>



