<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Verily</title><link>https://degruchy.org/</link><description>Recent content on Verily</description><generator>Hugo</generator><language>en-us</language><managingEditor>nathan@degruchy.org (Nathan DeGruchy)</managingEditor><webMaster>nathan@degruchy.org (Nathan DeGruchy)</webMaster><copyright>&amp;copy; 2025 Nathan DeGruchy - All Rights Reserved</copyright><lastBuildDate>Wed, 04 Mar 2026 14:28:01 +0000</lastBuildDate><atom:link href="https://degruchy.org/rss.xml" rel="self" type="application/rss+xml"/><item><title>Why Can't I Think of Anything to Vibe Code?</title><link>https://degruchy.org/2026/03/04/why-cant-i-think-of-anything-to-vibe-code/</link><pubDate>Wed, 04 Mar 2026 14:28:01 +0000</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2026/03/04/why-cant-i-think-of-anything-to-vibe-code/</guid><description>
&lt;p&gt;I know a lot of people are freaking out because tools like Claude Code and
friends are able to write, reason about and modify code. This has business
leaders absolutely salivating at the possibility of getting rid of a huge chunk
of their bulky, expensive &amp;hellip; human &amp;hellip; capital. However, &lt;abbr title='State of the Art'&gt;SOTA&lt;/abbr&gt;
 is still not going to fully replace anyone.&lt;/p&gt;
&lt;p&gt;However I find my problem, specifically, is that I don&amp;rsquo;t know of any need I&amp;rsquo;m
unable to fulfill that I would somehow need vibe coding to accomplish. I&amp;rsquo;ve had
AI tools look at code I&amp;rsquo;ve written to suggest improvements or fix issues I was
having with it. I just don&amp;rsquo;t know about having one code a full app that solves a
need that I have. One that the myraid of other apps or tools don&amp;rsquo;t. Sure, that
means I need to spend time learning about and utilizing the tools I have, but
that seems like a better use of my time than wasting untold hours of datacenter
time, and all the ills that go with it, to code up something that might barely
be considered a 1.0 tool.&lt;/p&gt;
&lt;p&gt;Granted, I&amp;rsquo;m not a developer. I don&amp;rsquo;t spend time trying to suss out details of
marketing and management requests into something that works as envisioned, so I
guess I&amp;rsquo;m not &lt;em&gt;really&lt;/em&gt; the demographic. But what kind of tools are people
building with these systems that is really pushing the needle? Is this really
sustainable? What happens when people inevitably abandon these projects? I feel
like these are terrible loops to be stuck in, recreating things, poorly,
abandoning them, and then doing it all over again.&lt;/p&gt;
&lt;p&gt;Am I missing something?&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2026-03-04 Why Can't I Think of Anything to Vibe Code?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hello (and Goodbye) San Fransisco!</title><link>https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/</link><pubDate>Sun, 01 Mar 2026 12:10:10 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/</guid><description>
&lt;p&gt;HELLLLOOOOOO San Fransisco!&lt;/p&gt;
&lt;p&gt;(and goodbye)&lt;/p&gt;
&lt;p&gt;We had a lovely trip to SFO this week. Taking in a whirlwind tour of sights and
sounds all over this lovely city. My son and his class were selected to visit
and perform in SFO, which meant that the whole family packed up, flew out and
did a crazy 3-day tour of the city. I&amp;rsquo;m exhausted.&lt;/p&gt;
&lt;ul class="idksomethingincredible gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0001.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0001_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0001_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0001_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0001_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0002.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0002_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0002_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0002_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0002_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0003.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0003_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0003_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0003_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0003_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0004.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0004_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0004_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0004_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0004_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0005.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0005_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0005_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0005_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0005_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0006.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0006_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0006_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0006_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0006_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0007.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0007_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0007_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0007_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0007_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0008.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0008_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0008_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0008_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0008_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0009.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0009_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0009_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0009_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0009_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0010.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0010_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0010_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0010_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0010_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0011.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0011_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0011_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0011_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0011_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0012.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0012_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0012_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0012_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0012_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0013.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0013_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0013_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0013_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0013_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0014.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0014_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0014_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0014_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0014_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0015.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0015_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0015_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0015_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0015_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0016.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0016_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0016_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0016_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0016_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0017.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0017_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0017_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0017_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0017_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0018.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0018_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0018_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0018_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0018_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0019.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0019_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0019_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0019_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0019_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0020.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0020_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0020_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0020_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0020_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0021.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0021_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0021_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0021_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0021_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0022.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0022_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0022_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0022_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0022_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0023.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0023_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0023_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0023_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0023_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0024.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0024_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0024_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0024_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0024_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0025.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0025_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0025_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0025_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0025_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0026.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0026_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0026_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0026_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0026_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0027.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0027_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0027_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0027_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/03/01/hello-and-goodbye-san-fransisco/san-fransisco-trip_0027_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;As you can see, we got to see a bunch of stuff (and stuff I was too tired, or
feeling too ill to see). My wife even got a Waymo and saw some stuff that wasn&amp;rsquo;t
part of our tour package. Highlights included Pier 39, Ghirardelli square, the
cable cars, Alcatraz, Muir Woods and some lovely local restaurants.&lt;/p&gt;
&lt;p&gt;Our last trip to SFO was &lt;em&gt;15 years ago&lt;/em&gt;. Which seems like a lifetime ago. So
far, little has changed since we last saw it. A &lt;em&gt;lot&lt;/em&gt; more advertising for AI,
though. That was godsdamned everywhere.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m still organizing photos from everyone, so I may add to this list later.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2026-03-01 Hello (and Goodbye) San Fransisco!"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Dungeon Crawling with Carl</title><link>https://degruchy.org/2026/02/19/dungeon-crawling-with-carl/</link><pubDate>Thu, 19 Feb 2026 10:16:32 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2026/02/19/dungeon-crawling-with-carl/</guid><description>
&lt;p&gt;As &lt;a
	href="https://degruchy.org/reading/"
	
	&gt;
	you may (or may not) have noticed on my reading list
&lt;/a&gt;, that I&amp;rsquo;ve picked
up on the &lt;a
	href="https://en.wikipedia.org/wiki/Dungeon_Crawler_Carl"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Dungeon_Crawler_Carl"
	target="_blank" rel="noopener"
	&gt;
	Dungeon Crawler Carl
&lt;/a&gt; series of books. I&amp;rsquo;m burning my way through
the 4th book (of 8!) my wife is steaming through number 2 and my son is right on
my heels at the end of 3. We&amp;rsquo;re all enjoying the series throughly. It&amp;rsquo;s not it&amp;rsquo;s
&lt;a
	href="https://en.wikipedia.org/wiki/Isekai"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Isekai"
	target="_blank" rel="noopener"
	&gt;
	Isekai-esque
&lt;/a&gt; story beats, or it&amp;rsquo;s heroic main character &amp;ndash; it&amp;rsquo;s the
completely unhinged situations that our character&amp;rsquo;s find themselves in, and try
to deal with the gruesome consequences, often with lots of &lt;a
	href="https://en.wikipedia.org/wiki/Dark_humor"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Dark_humor"
	target="_blank" rel="noopener"
	&gt;
	black-humor
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t really want to spoil any of this for you, so I&amp;rsquo;ll just give you the
briefest of overviews. I know many will bounce off of it because of the content,
but maybe you will find yourself renting it from the library. However, if you
find any of these things appealing, I &lt;em&gt;highly&lt;/em&gt; recommend it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Carl is a Coast Guard veteran living with his girlfriend and her prize-winning
persian cat, Donut. When his girlfriend goes on a girl&amp;rsquo;s vacation in the
Bahama&amp;rsquo;s, leaving Carl alone taking care of her cat, Aliens arrive and
shenanigan&amp;rsquo;s ensue. Lots of video game and table-top RPG elements are
referenced and intermixed, bringing this surreal book to life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2026-02-19 Dungeon Crawling with Carl"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Uh... Okay?</title><link>https://degruchy.org/2026/01/05/uh...-okay/</link><pubDate>Mon, 05 Jan 2026 10:44:29 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2026/01/05/uh...-okay/</guid><description>
&lt;p&gt;Microsoft&amp;rsquo;s &lt;em&gt;definitely&lt;/em&gt; huffing the good stuff.&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://www.office.com"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2026/01/05/uh...-okay/microsoft-copilot-what.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2026/01/05/uh...-okay/microsoft-copilot-what.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2026/01/05/uh...-okay/microsoft-copilot-what.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2026/01/05/uh...-okay/microsoft-copilot-what.jpg"
 alt="Needs more .NET" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Wow&lt;/h4&gt;&lt;p&gt;Needs more .NET&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2026-01-05 Uh... Okay?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Feel Noticed</title><link>https://degruchy.org/2025/12/20/i-feel-noticed/</link><pubDate>Sat, 20 Dec 2025 17:09:00 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/12/20/i-feel-noticed/</guid><description>
&lt;p&gt;There is &lt;a
	href="https://hn-wrapped.kadoa.com/?year=2025"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://hn-wrapped.kadoa.com/?year=2025"
	target="_blank" rel="noopener"
	&gt;
	a tool for summarizing your 2025 Hacker News interactions
&lt;/a&gt;. Of
course it uses &amp;ldquo;AI&amp;rdquo;. However, I decided to try it out. I feel &lt;em&gt;very&lt;/em&gt; seen.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/12/20/i-feel-noticed/xkcd-hn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/12/20/i-feel-noticed/xkcd-hn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/12/20/i-feel-noticed/xkcd-hn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/12/20/i-feel-noticed/xkcd-hn.jpg"
 alt="A picture of my faux XKCD comic, generated by AI" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;It&amp;#39;s organized!&lt;/h4&gt;&lt;p&gt;Okay, yes. I should really symlink my toothbrush into .local/personal/bathroom&amp;hellip;&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Here&amp;rsquo;s the full breakdown:&lt;/p&gt;
&lt;ul class="hn-2025 gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/12/20/i-feel-noticed/ndegruchy-hn-wrapped-full.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/12/20/i-feel-noticed/ndegruchy-hn-wrapped-full_hu_ef17fa25e524f124.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/12/20/i-feel-noticed/ndegruchy-hn-wrapped-full_hu_3f5f8711c6fd23c1.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-12-20 I Feel Noticed"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Screenshot Saturday? 🙂‍↕️ Screenshot Saturday.</title><link>https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./</link><pubDate>Sat, 29 Nov 2025 18:21:41 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./sss.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./sss.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./sss.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/11/29/screenshot-saturday--screenshot-saturday./sss.jpg"
 alt="A screenshot of my desktop with festive holiday lights trimming the menu and dock, snow falling from the top of the screen" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Festive&lt;/h4&gt;&lt;p&gt;A little jingle to the desktop&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-11-29 Screenshot Saturday? 🙂‍↕️ Screenshot Saturday."&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>We Are Here [====| ] on the Path to Authoritarianism</title><link>https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/</link><pubDate>Thu, 06 Nov 2025 12:19:13 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/</guid><description>
&lt;figure&gt;&lt;a href="https://www.youtube.com/shorts/VOZ_HAh8gF4"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/know-your-rights.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/know-your-rights.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/know-your-rights.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/11/06/we-are-here-on-the-path-to-authoritarianism/know-your-rights.jpg"
 alt="A poster image for the &amp;#39;Know Your Rights&amp;#39; video on YouTube that explains what your rights are with regard to ICE" width="403" height="702"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:403px;"&gt;
 &lt;h4&gt;Know Your Rights&lt;/h4&gt;&lt;p&gt;As we slide toward authoritarianism, you should exercise what rights you have left while you can.&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-11-06 We Are Here [====| ] on the Path to Authoritarianism"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Whither to Archive or Delete?</title><link>https://degruchy.org/2025/11/05/whither-to-archive-or-delete/</link><pubDate>Wed, 05 Nov 2025 14:37:19 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/11/05/whither-to-archive-or-delete/</guid><description>
&lt;p&gt;What do you do with your email? Do you archive everything? Or are you a person who will delete everything not immediately useful? &lt;a
	href="https://email-is-good.com/2025/11/05/archive-or-delete/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://email-is-good.com/2025/11/05/archive-or-delete/"
	target="_blank" rel="noopener"
	&gt;
	There are good arguments for both sides
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Personally, I &lt;em&gt;try&lt;/em&gt; to delete most email. Most of my email ends up being passive information that is point-in-time based, but not really &lt;em&gt;long term&lt;/em&gt;. These are things like mailing list messages or notifications from services and stuff from my son’s school. Things that don’t often need to be retrieved because they’re only about the point in time when they were sent.&lt;/p&gt;
&lt;p&gt;I do archive &lt;em&gt;quite a bit&lt;/em&gt; of email, though. Things like replies to job offers, receipts, license keys and emails from my wife and family. Those are things that I would likely have a reason to reference later. Otherwise, I try to keep it trim. I don’t really have a &lt;em&gt;long term&lt;/em&gt; archival storage solution sorted out, but I’m not sure if I have a &lt;em&gt;real need&lt;/em&gt; for something like that. There’s always &lt;a
	href="https://c-command.com/eaglefiler/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://c-command.com/eaglefiler/"
	target="_blank" rel="noopener"
	&gt;
	EagleFiler
&lt;/a&gt; if I were serious about it. I could also just &lt;code&gt;File &amp;gt; Save As…&lt;/code&gt; and dump it into some folder. Again, I just don’t have a &lt;em&gt;need&lt;/em&gt; to do it.&lt;/p&gt;
&lt;p&gt;I kind of flip this on it’s head when I’m at work, though. Work has retention policies, archive mailboxes and other requirements. Honestly, I probably delete a vast amount of email there, too, but the rest of it I don’t bother archiving because none of my email is “record worthy.” If I need to save some information from an email, I’ll copy and paste it into OneNote or something because that’s the blessed tool for that sort of thing. Besides, I’m not paying for the mailbox or the storage or the maintenance of it, so let the pros in those position handle it.&lt;/p&gt;
&lt;p&gt;I have a habit of being a digital pack-rat, but I’m also kind of picky about what I actually want to save. I go through fits of cleaning up old data that I’ve accumulated, purging everything but what I &lt;em&gt;know that I’ll need&lt;/em&gt; in the future. This ends up biting me in the ass sometimes, as I end up killing more than I should, but honestly? Having sets of emephemeral data is sometimes a &lt;em&gt;good thing.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;What do y’all do? Archive? Delete? Print (🤢)?&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-11-05 Whither to Archive or Delete?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Don't Be a Sucker</title><link>https://degruchy.org/2025/10/14/dont-be-a-sucker/</link><pubDate>Tue, 14 Oct 2025 11:23:34 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/10/14/dont-be-a-sucker/</guid><description>
&lt;figure class="dbas"&gt;&lt;a href="https://www.youtube.com/watch?v=vGAqYNFQdZ4"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/10/14/dont-be-a-sucker/dbas.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/10/14/dont-be-a-sucker/dbas.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/10/14/dont-be-a-sucker/dbas.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/10/14/dont-be-a-sucker/dbas.jpg"
 alt="A picture of a man in front of a microphone" width="1280" height="720"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:1280px;"&gt;
 &lt;h4&gt;Don&amp;#39;t be a Sucker&lt;/h4&gt;&lt;p&gt;Oddly prescient for a film coming out in the 1940&amp;rsquo;s&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-10-14 Don't Be a Sucker"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rules for Thee, None for Me</title><link>https://degruchy.org/2025/09/15/rules-for-thee-none-for-me/</link><pubDate>Mon, 15 Sep 2025 09:32:15 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/09/15/rules-for-thee-none-for-me/</guid><description>
&lt;p&gt;Danish ass-clown, and Minister of Justice, Peter Hummelgarrd is quoted as
saying:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;We must break with the totally erroneous perception that it is everyone&amp;rsquo;s
civil liberty to communicate on encrypted messaging services.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Which, is of course, comically absurd. If the constitutions and other laws and
mechanisms around the world didn&amp;rsquo;t already explicitly guard personal privacy,
and therefore the ability to use services that safeguard that privacy using
encryption, you also run in to the problem of Math.&lt;/p&gt;
&lt;p&gt;Math being the thing that makes encryption work the way it does. Math that is
really just a series of formulas to take a stream of bytes, scramble it in some
way that makes it difficult to unscramble unless you&amp;rsquo;re using a special input
that only you know to unscramble it. Math is hard to govern, as it&amp;rsquo;s just an
idea. A way in which to demonstrate how to solve a problem. Making encryption
(services, et al) is just to make certain branches of mathematics illegal, and
therefore certain kinds of &lt;em&gt;thought&lt;/em&gt; illegal.&lt;/p&gt;
&lt;p&gt;Not to mention, &lt;em&gt;how&lt;/em&gt; is making encryption, or services that provide encrypted
messaging going to do &lt;em&gt;anything&lt;/em&gt; to stop crime? Do criminals also follow the law
around firearm sales and ownership? Do criminals follow any laws that you
implement? No? So what would stop them from continuing to do so?&lt;/p&gt;
&lt;p&gt;Lets say you don&amp;rsquo;t &lt;em&gt;ban&lt;/em&gt; encrypted messaging services, but instead force
companies to implement a tap, where the government gets to peek at messages as
they transverse a system. Lets also say that the only people who are able to
peek at these messages are the so-called &amp;ldquo;Good Guys&amp;rdquo; ™, does this also
apply to the public servants? People who we entrust to do the right thing on
behalf of the populace? No? Of course not. Rules for Thee; None for Me.&lt;/p&gt;
&lt;p&gt;Again, implementing a tap doesn&amp;rsquo;t stop &lt;em&gt;anyone anywhere&lt;/em&gt; from doing any
encrypted messaging. It just moves the problem somewhere else. Criminals aren&amp;rsquo;t
using WhatsApp or Facebook Messenger, at least real criminals that you,
ostensibly, want to capture don&amp;rsquo;t. Your populace does. So, lets drop the charade
and call a spade a spade: You want to listen in on communications of your
population so that you can either control, kill or otherwise silence
&amp;ldquo;problematic&amp;rdquo; speech. You can coat it in whatever linguistic sugar you&amp;rsquo;d like,
but that&amp;rsquo;s what you want. Power over what people say and do. Power to squash
those who would oppose you or your ideals. Power.&lt;/p&gt;
&lt;p&gt;Anyone with half-a-brain should say &amp;ldquo;No.&amp;rdquo; Yet, here we are, even having this
debate because the whole world is leaning authoritarian lately, and plenty of
people are just willing to go along for the ride. Either due to apathy (me) or
learned hopelessness, or just straight up being silenced. The writing, however,
has been on the proverbial wall for some time now. If you&amp;rsquo;re part of any
&amp;ldquo;right-winged&amp;rdquo; movement, you&amp;rsquo;re buying into this police state. Either for
supposed safety, ideology or just lack of empathy for those who are different
than you.&lt;/p&gt;
&lt;p&gt;I say: Fuck you. You don&amp;rsquo;t scare me.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-09-15 Rules for Thee, None for Me"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>NPM is a Joke, a Bad One at That</title><link>https://degruchy.org/2025/09/09/npm-is-a-joke-a-bad-one-at-that/</link><pubDate>Tue, 09 Sep 2025 09:30:22 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/09/09/npm-is-a-joke-a-bad-one-at-that/</guid><description>
&lt;p&gt;Apparently supply chain attacks on NPM aren&amp;rsquo;t &amp;ldquo;so last year&amp;rdquo;. In fact, &lt;a
	href="https://github.com/debug-js/debug/issues/1005"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/debug-js/debug/issues/1005"
	target="_blank" rel="noopener"
	&gt;
	the
latest one affects a huge amount of packages
&lt;/a&gt;. That one is &lt;code&gt;debug&lt;/code&gt;. In fact,
I was &lt;em&gt;almost&lt;/em&gt; affected by it just by having the stupid language server
installed.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;head -n &lt;span class="m"&gt;7&lt;/span&gt; package.json 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;4.4.1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;repository&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;git&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;git://github.com/debug-js/debug.git&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;God, I hate Node.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-09-09 NPM is a Joke, a Bad One at That"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Last Week, Tonight with John Oliver: Gangs</title><link>https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/</link><pubDate>Mon, 28 Jul 2025 09:32:18 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/</guid><description>
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=rlR8d9JVWtQ"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/poster.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/poster.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/poster.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/07/28/last-week-tonight-with-john-oliver-gangs/poster.jpg"
 alt="A picture of the episode segment of Last Week Tonight" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Gangs&lt;/h4&gt;&lt;p&gt;A brilliant exposition on the problem with gang databases in the US&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I have no love for police, but I respect the work they do. However, there are
lots of problems with the way they do their work that could be improved.
Ideally, there needs to be more public oversight over these &amp;ldquo;public servants&amp;rdquo;.
Especially since they seem unaccountable for their actions, even when they&amp;rsquo;re
clearly at fault.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-28 Last Week, Tonight with John Oliver: Gangs"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Managing Software Licenses</title><link>https://degruchy.org/2025/07/24/managing-software-licenses/</link><pubDate>Thu, 24 Jul 2025 16:13:36 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/24/managing-software-licenses/</guid><description>
&lt;p&gt;In true nerd fashion. I don&amp;rsquo;t use a spreadsheet (anymore) to manage the various
licenses that I buy for software. CSV files are fine for shorter lists, but
become problematic when dealing with more, especially trying to properly format
the document. So, I started looking for alternatives.&lt;/p&gt;
&lt;p&gt;There are a couple of purpose built programs, generally for enterprises, that
claim to manage your software licenses, but I&amp;rsquo;m not that big, and I don&amp;rsquo;t have
enterprise cash to throw around. So I started looking at SQLite, which is a
durable format that even the Library of Congress endorses as a archival format.
However, it can be a little obtuse to work with. Plus you can&amp;rsquo;t just crack open
the file in an editor and edit it. So, you need to know SQL and how to work
around the command-line tools for it. Still, a tempting choice.&lt;/p&gt;
&lt;p&gt;However, there &lt;em&gt;are&lt;/em&gt; text-only databases that can be opened and handled by text
editors &lt;em&gt;and&lt;/em&gt; command-line tooling. The one that comes to mind is
&lt;a
	href="https://www.gnu.org/software/recutils/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.gnu.org/software/recutils/"
	target="_blank" rel="noopener"
	&gt;
	&lt;code&gt;recutils&lt;/code&gt;
&lt;/a&gt;, a suite of utilities that can parse, format and error check a
database made up of a text-only schema and it&amp;rsquo;s associated data. It kind of
looks like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-rec" data-lang="rec"&gt;%rec: License
%doc: A collection of personal software licenses that I have purchased.
%typedef: OS_t enum Windows macOS Linux CrossPlatform
%key: Id
%type: Id int
%type: Name line
%type: PurchaseDate date
%type: OS OS_t
%mandatory: Name LicenseKey
%auto: Id

Id: 1
Name: Acorn
Version: 8
PurchaseDate: 1970-01-01
LicenseKey:
OS: macOS
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The stuff behind the &lt;code&gt;%&lt;/code&gt; are field identifiers, allowing you to define &lt;em&gt;what&lt;/em&gt; a
field should contain and conform to. You can set your own types, like I did with
&lt;code&gt;%Id&lt;/code&gt;. Additionally you can set mandatory and unique fields to better wrangle
compliance of data being entered. All in all, it&amp;rsquo;s a pretty &lt;em&gt;damn simple&lt;/em&gt; format
that works really well. Bash, the shell, also has a built in &lt;code&gt;recread&lt;/code&gt; built-in
to read in data like this, so if you&amp;rsquo;re already handling it on the command-line,
it&amp;rsquo;s one less thing you have to run. For me, I can get by with the standard
utilities in this ZSH shell script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/usr/bin/env zsh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# VERSION: 2.3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Hello, future me. This is a mini-zsh program to make working with the software&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# license database a bit easier from the command-line. macOS, specifically.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# However, there shouldn&amp;#39;t be anything in here that is specific to macOS, except&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# maybe the path to the database itself.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Usage:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## You&amp;#39;ll want to set the variables in the &amp;#39;_decrypt-license&amp;#39; and &amp;#39;license-add&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## functions to the proper path for the encryption key and the license recutils&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## file.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CHANGELOG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 1:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Initial creation.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Add encryption and reverse the sort options on fzf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2.1:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Add guard-rails for missing license and keyfiles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2.1.1:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Fix comparison for missing files (&amp;amp;&amp;amp; vs ||). Thanks ChatGPT!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2.1.2:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Add check for `age` tool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2.2:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Not really a fix in this file, but fixes to the database allow this to work&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Version 2.3:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;## Add purchase date field and pre-check for &amp;#39;age&amp;#39; command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; $+commands&lt;span class="o"&gt;[&lt;/span&gt;recsel&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; $+commands&lt;span class="o"&gt;[&lt;/span&gt;age&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;then&lt;/span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# Decrypt the license file with the age key, this will dump the file to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# stdout, so all subsequent uses should be a pipeline dealing with the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	_decrypt-license&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;LICENSE_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;path-to-license.rec&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;KEY_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;path-to-encryption-key.txt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;if&lt;/span&gt; ! &lt;span class="o"&gt;((&lt;/span&gt; $+commands&lt;span class="o"&gt;[&lt;/span&gt;age&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Unable to find the `age` command-line tool in the PATH, please install before retrying.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;if&lt;/span&gt; ! &lt;span class="o"&gt;[[&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$KEY_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Unable to decrypt the license file, please ensure both the license file exists and the keyfile exists.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Key File: &lt;/span&gt;&lt;span class="nv"&gt;$KEY_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;License File: &lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		age --decrypt --identity &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$KEY_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# Add to the license file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	license-add&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;LICENSE_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;path-to-license.rec&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;KEY_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;path-to-encryption-key.txt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="c1"&gt;# First, lets get some information from the user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;?Software name: &amp;#34;&lt;/span&gt; name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;?Platform (Windows, macOS, Linux or CrossPlatform): &amp;#34;&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;?Purchase date (YYYY-MM-DD): &amp;#34;&lt;/span&gt; pdate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;?Version number: &amp;#34;&lt;/span&gt; version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;?License key: &amp;#34;&lt;/span&gt; key
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;if&lt;/span&gt; ! &lt;span class="o"&gt;[[&lt;/span&gt; -n &lt;span class="nv"&gt;$name&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; -n &lt;span class="nv"&gt;$os&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; -n &lt;span class="nv"&gt;$version&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; -n &lt;span class="nv"&gt;$key&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;All fields are required!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="c1"&gt;# Decrypt, edit the stream, encrypt.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		cp &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;.bkup
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		_decrypt-license &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			recins --verbose &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 --type&lt;span class="o"&gt;=&lt;/span&gt;License &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 -f Name -v &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$name&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 -f PurchaseDate -v &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$pdate&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 -f LicenseKey -v &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$key&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 -f &lt;span class="s2"&gt;&amp;#34;OS&amp;#34;&lt;/span&gt; -v &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$os&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			age --encrypt --identity &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$KEY_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; --output &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$LICENSE_FILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# Search by name (case-insensitive)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	license-find&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		_decrypt-license &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			recsel --type&lt;span class="o"&gt;=&lt;/span&gt;License --case-insensitive &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 --expression&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Name = &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 --print&lt;span class="o"&gt;=&lt;/span&gt;Name,OS,Version,LicenseKey
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="c1"&gt;# Search by OS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	license-os&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		_decrypt-license &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			recsel --type&lt;span class="o"&gt;=&lt;/span&gt;License --case-insensitive &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 --expression &lt;span class="s2"&gt;&amp;#34;OS = &amp;#39;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				 --print-row&lt;span class="o"&gt;=&lt;/span&gt;Name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt; $+commands&lt;span class="o"&gt;[&lt;/span&gt;fzf&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		license-fzf&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="nb"&gt;local&lt;/span&gt; &lt;span class="nv"&gt;selected&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;_decrypt-license &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;								recsel --collapse --type&lt;span class="o"&gt;=&lt;/span&gt;License &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;										--print-values&lt;span class="o"&gt;=&lt;/span&gt;Name &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;								fzf --height &lt;span class="m"&gt;10&lt;/span&gt; --reverse&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$selected&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				license-find &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$selected&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;				&lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;			&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here, I use &lt;code&gt;recutils&lt;/code&gt; (&lt;code&gt;recsel&lt;/code&gt; and &lt;code&gt;recins&lt;/code&gt;) to manage the actual database,
and age to encrypt/decrypt the data. You could, of course, use whatever
encryption system you want to handle the data at rest. The nice thing here is
that age (and GNUPG) support reading data from &lt;code&gt;stdin&lt;/code&gt; and writing to &lt;code&gt;stdout&lt;/code&gt;,
which makes it perfect for manipulating the database in-memory, without having
to do any jiggery-pokery with temp files and risking data being left somewhere
unencrypted. Much like &lt;a
	href="https://www.passwordstore.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.passwordstore.org"
	target="_blank" rel="noopener"
	&gt;
	&lt;code&gt;pass&lt;/code&gt;
&lt;/a&gt;, this lets each tool do what it does best,
and just strings each tool along, passing the relevant data to/from the user as
needed. There&amp;rsquo;s even a handy filtering tool in &lt;code&gt;fzf&lt;/code&gt; to help the user find an
entry that they might not know the name of off-hand.&lt;/p&gt;
&lt;p&gt;Anyway, I hope this helps someone build their own license system, or other cool
tool. Let me know if it helped!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-24 Managing Software Licenses"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Dog Walk is ADORABLE</title><link>https://degruchy.org/2025/07/14/dog-walk-is-adorable/</link><pubDate>Mon, 14 Jul 2025 21:44:07 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/14/dog-walk-is-adorable/</guid><description>
&lt;p&gt;&lt;a
	href="https://blenderstudio.itch.io/dogwalk"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://blenderstudio.itch.io/dogwalk"
	target="_blank" rel="noopener"
	&gt;
	Dog Walk
&lt;/a&gt; is an open source game made in all open-source tools by the
Blender Stuido and Godot Engine. Using papercraft and free and open source
software, they developed an absolutely &lt;em&gt;adorable&lt;/em&gt; game about a boy and a dog
looking for bits of a snowman. It&amp;rsquo;s not a long game by any stretch of the
imagination, but it&amp;rsquo;s absolutely full of heart and soul. It goes to show you how
much goes into the craft of game making and story telling, versus the tools used
to make it.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m really glad they released this. Godot is a great engine, and Blender is a
powerhouse of both 3D modeling &lt;em&gt;and&lt;/em&gt; video editing. It&amp;rsquo;s astonishing what you
can do with the power of people helping people.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-14 Dog Walk is ADORABLE"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Trying out Task</title><link>https://degruchy.org/2025/07/14/trying-out-task/</link><pubDate>Mon, 14 Jul 2025 11:42:02 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/14/trying-out-task/</guid><description>
&lt;p&gt;For this site, I&amp;rsquo;ve been using a &lt;code&gt;Makefile&lt;/code&gt; that automates much of the process
of building, indexing and ultimately uploading the static files to AWS
CloudFront for distribution to you, my dear reader.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Make&lt;/code&gt; &lt;a
	href="https://en.wikipedia.org/wiki/Make_%28software%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Make_%28software%29"
	target="_blank" rel="noopener"
	&gt;
	has been around for ages
&lt;/a&gt;. Current incarnations use either BSD or GNU
variants, but for my purposes, GNU is where it&amp;rsquo;s at. I use in the following
form:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-makefile" data-lang="makefile"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;SHELL&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;.SHELLFLAGS&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; -eu -o pipefail -c
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;.ONESHELL&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;CLOUDFRONT_DIST_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt; &lt;span class="o"&gt;?=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt; &lt;span class="o"&gt;?=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MAKEFLAGS&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; --warn-undefined-variables
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;MAKEFLAGS&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; --no-builtin-rules
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;REQUIRED_PROGRAMS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; pagefind hugo aws
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;check_dependencies&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="n"&gt;upload&lt;/span&gt; &lt;span class="n"&gt;clean&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hugo&lt;/span&gt;.&lt;span class="n"&gt;toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Building site&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@hugo build --cleanDestinationDir --quiet
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;serve&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;hugo&lt;/span&gt;.&lt;span class="n"&gt;toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Serving local build&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@hugo serve --buildDrafts --disableFastRender
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt;/&lt;span class="n"&gt;search&lt;/span&gt;/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Building search index&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@pagefind --root-selector&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;main&amp;#34;&lt;/span&gt; --logfile search-log.log --silent --site public --output-subdir search/pagefind
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;upload&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt;/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Uploading files&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@AWS_ACCESS_KEY_ID&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;AWS_ACCESS_KEY_ID&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;AWS_SECRET_ACCESS_KEY&lt;span class="k"&gt;)&lt;/span&gt; aws s3 sync public/ s3://degruchy.org --storage-class REDUCED_REDUNDANCY --quiet --delete --exclude &lt;span class="s2"&gt;&amp;#34;*.csv&amp;#34;&lt;/span&gt; --exclude &lt;span class="s2"&gt;&amp;#34;*.caption&amp;#34;&lt;/span&gt; --exclude &lt;span class="s2"&gt;&amp;#34;*.DS_Store&amp;#34;&lt;/span&gt; --exclude &lt;span class="s2"&gt;&amp;#34;.DS_Store&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Invalidating caches&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@AWS_ACCESS_KEY_ID&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;AWS_ACCESS_KEY_ID&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="nv"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;AWS_SECRET_ACCESS_KEY&lt;span class="k"&gt;)&lt;/span&gt; aws cloudfront create-invalidation --distribution-id &lt;span class="k"&gt;$(&lt;/span&gt;CLOUDFRONT_DIST_ID&lt;span class="k"&gt;)&lt;/span&gt; --paths &lt;span class="s2"&gt;&amp;#34;/*&amp;#34;&lt;/span&gt; &amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;clean&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt;-&lt;span class="n"&gt;log&lt;/span&gt;.&lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt;/ &lt;span class="n"&gt;resources&lt;/span&gt;/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Cleaning up build artefacts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@rm search-log.log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@rm -r public/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@rm -r resources/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;check_dependencies&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	@echo &lt;span class="s2"&gt;&amp;#34;Checking for required programs&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="k"&gt;$(&lt;/span&gt;foreach prog,&lt;span class="k"&gt;$(&lt;/span&gt;REQUIRED_PROGRAMS&lt;span class="k"&gt;)&lt;/span&gt;,&lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	 &lt;span class="k"&gt;$(if&lt;/span&gt; &lt;span class="k"&gt;$(&lt;/span&gt;shell which &lt;span class="k"&gt;$(&lt;/span&gt;prog&lt;span class="k"&gt;))&lt;/span&gt;,,&lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	 &lt;span class="k"&gt;$(&lt;/span&gt;error &lt;span class="s2"&gt;&amp;#34;Required program: &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;prog&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; not in PATH&amp;#34;&lt;/span&gt;&lt;span class="k"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;.PHONY&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;check_dependencies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Local Variables:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# truncate-lines: t
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# End:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The problem is that when you start doing stuff that loops, or that makes use of
shell incantations you start getting into the weeds. Also, if you close one of
your eyes and squint the other, it &lt;em&gt;kind of&lt;/em&gt; looks like a &lt;a
	href="https://en.wikipedia.org/wiki/YAML"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/YAML"
	target="_blank" rel="noopener"
	&gt;
	YAML file
&lt;/a&gt;
(&lt;strong&gt;Note:&lt;/strong&gt; I have a healthy distaste for YAML files). Which means you can
probably just actually make it a YAML file and be done with it.&lt;/p&gt;
&lt;p&gt;So, I decided to try out &lt;a
	href="https://taskfile.dev"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://taskfile.dev"
	target="_blank" rel="noopener"
	&gt;
	&lt;code&gt;task&lt;/code&gt;
&lt;/a&gt; as a build runner instead. After a few minutes of fiddling (and no AI help, just the docs) I had the following &lt;code&gt;Taskfile.yaml&lt;/code&gt; working and uploading just fine. Neat!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;check_dependencies&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;build&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;index&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;upload&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Building site&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;hugo build --cleanDestinationDir --quiet&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;serve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Serving local build&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;check_dependencies&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;index&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;hugo serve --buildDrafts --disableFastRender&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;defer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;clean }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Building search index&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;pagefind --root-selector=&amp;#34;main&amp;#34; --logfile search-log.log --silent --site public --output-subdir search/pagefind&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;upload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;AWS_ACCESS_KEY_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;AWS_SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;CLOUDFRONT_DIST_ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preconditions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;test -d public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Uploading files&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;aws s3 sync public/ s3://degruchy.org --storage-class REDUCED_REDUNDANCY --quiet --delete --exclude &amp;#34;*.csv&amp;#34; --exclude &amp;#34;*.caption&amp;#34; --exclude &amp;#34;*.DS_Store&amp;#34; --exclude &amp;#34;.DS_Store&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;defer&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;clean }&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Invalidating caches&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;aws cloudfront create-invalidation --distribution-id $CLOUDFRONT_DIST_ID --paths &amp;#34;/*&amp;#34; &amp;gt;/dev/null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;clean&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preconditions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;test -d public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;test -d resources&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;test -f search-log.log&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;echo &amp;#34;Cleaning up build artefacts&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;rm search-log.log&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;rm -r public&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;rm -r resources&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;check_dependencies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;for&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pagefind&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;hugo&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;aws&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;test -x $(which {{ .ITEM }})&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This ends up being slightly easier to read and maintain. Each bit has it&amp;rsquo;s own
section and commands, preconditions and even environments are handled in a
purpose-driven way that makes it more clear what that section is for. It&amp;rsquo;s
&lt;em&gt;still&lt;/em&gt; YAML, though, so yuck.&lt;/p&gt;
&lt;p&gt;However, I think I&amp;rsquo;ll give this a spin for a while and see how I like it. &lt;code&gt;make&lt;/code&gt;
has the ~49 year advantage over &lt;code&gt;task&lt;/code&gt;, but not all new software is &lt;em&gt;bad&lt;/em&gt;, it
just has to prove itself. &lt;code&gt;make&lt;/code&gt; has, but it&amp;rsquo;s grown warts over that time, and
unless you&amp;rsquo;re doing dead simple stuff, it may be more confusing to write than
YAML. In fact, I had Claude write the loop for me, and some of the other parts
because the syntax is&amp;hellip; terse.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-14 Trying out Task"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Feel a Little Called Out Here</title><link>https://degruchy.org/2025/07/09/i-feel-a-little-called-out-here/</link><pubDate>Wed, 09 Jul 2025 17:29:44 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/09/i-feel-a-little-called-out-here/</guid><description>
&lt;blockquote&gt;
&lt;p&gt;You get access to a bunch of drunken sailors who spend money irresponsibly&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a
	href="https://www.pcgamer.com/gaming-industry/knowing-steam-players-are-hoarders-explains-why-you-give-valve-that-30-percent-analyst-tells-devs-you-get-access-to-a-bunch-of-drunken-sailors-who-spend-money-irresponsibly/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.pcgamer.com/gaming-industry/knowing-steam-players-are-hoarders-explains-why-you-give-valve-that-30-percent-analyst-tells-devs-you-get-access-to-a-bunch-of-drunken-sailors-who-spend-money-irresponsibly/"
	target="_blank" rel="noopener"
	&gt;
	I mean, they&amp;rsquo;re not &lt;em&gt;wrong&lt;/em&gt;, either.
&lt;/a&gt; I just object to being called a sailor. I&amp;rsquo;ve never sailed in my life.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-09 I Feel a Little Called Out Here"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Stay Out of my (Project) $HOME</title><link>https://degruchy.org/2025/07/03/stay-out-of-my-project-home/</link><pubDate>Thu, 03 Jul 2025 11:10:43 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/07/03/stay-out-of-my-project-home/</guid><description>
&lt;p&gt;
I love making files organized. It gives me a sense of control over
&lt;em&gt;something&lt;/em&gt; in my life without really changing how things work. I&amp;#39;m an
ardent fan of the &lt;a href="https://specifications.freedesktop.org/basedir-spec/latest/"&gt;XDG Base Directory Specification&lt;/a&gt;, I even use it on
macOS to organize the various config files that Linux tools tend to
spread everywhere.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://jackson.dev/"&gt;Patrick Jackson&lt;/a&gt; takes &lt;a href="https://jackson.dev/post/stay-out-of-my-project-home/"&gt;this ethos to his project root
directory&lt;/a&gt;. Wanting to organize the mess of special tool files that
inevitably find themselves taking up valuable cognitive space in the
project root. These files could easily be put into a configuration
directory or tool director that would keep the project root clean and
clear for, you know, &lt;em&gt;actual project files&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;
It&amp;#39;s odd that we allow these kinds of tools to just spray files
where ever they want. In wildly inconsistent locations, formats and
styles. Requiring the fastidious developer to employ yet &lt;em&gt;another&lt;/em&gt;
tool (&lt;code&gt;direnv&lt;/code&gt;) to help fend off the rising tide of tool file
pollution. Are developers of these tools just &lt;em&gt;that lazy&lt;/em&gt;? Or do they
not even think about it, because their tools &lt;em&gt;should&lt;/em&gt; be the first
thing you see when you open a repository? Needless to say, I don&amp;#39;t
fall into that latter camp.&lt;/p&gt;
&lt;p&gt;
I&amp;#39;m with Patrick on this one. We need an XDG-style specification
(informal or not) to take root and provide some guidance for future
generations. Otherwise we&amp;#39;ll start seeing projects with more tool
lines of code and config than actual program code.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-07-03 Stay Out of my (Project) $HOME"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Project: Hail Mary</title><link>https://degruchy.org/2025/06/30/project-hail-mary/</link><pubDate>Mon, 30 Jun 2025 09:42:52 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/06/30/project-hail-mary/</guid><description>
&lt;figure&gt;&lt;a href="https://www.theverge.com/news/694319/project-hail-mary-trailer-ryan-gosling-phil-lord-christopher-miller"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/06/30/project-hail-mary/projecthailmary_poster.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/06/30/project-hail-mary/projecthailmary_poster.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/06/30/project-hail-mary/projecthailmary_poster.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/06/30/project-hail-mary/projecthailmary_poster.jpg"
 alt="A poster for the &amp;#34;Project Hail Mary&amp;#34; movie" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Project: Hail Mary&lt;/h4&gt;&lt;p&gt;I&amp;rsquo;m cautiously optimisitic&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I&amp;rsquo;m going to stay cautiously optimistic about the &lt;a
	href="https://www.theverge.com/news/694319/project-hail-mary-trailer-ryan-gosling-phil-lord-christopher-miller"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.theverge.com/news/694319/project-hail-mary-trailer-ryan-gosling-phil-lord-christopher-miller"
	target="_blank" rel="noopener"
	&gt;
	announcement of Andy Weir&amp;rsquo;s
Project: Hail Mary being made into a movie
&lt;/a&gt;. I loved the book, and his
&amp;ldquo;The Martian&amp;rdquo;, so there is a lot of good will hanging on this, but I&amp;rsquo;ve been
disappointed too many times this year.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-06-30 Project: Hail Mary"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Cake Bake Shop</title><link>https://degruchy.org/2025/06/08/the-cake-bake-shop/</link><pubDate>Sun, 08 Jun 2025 14:46:24 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/06/08/the-cake-bake-shop/</guid><description>
&lt;p&gt;We took the family down to Orlando to go to EPCOT and see the sights. It was hot as Hades out, but we found several cool spots to relax in. For dinner, we took the boat from EPCOT&amp;rsquo;s France gate to the Boardwalk and took our sweatiness to the elegant and decidedly &lt;em&gt;not&lt;/em&gt; sweaty &lt;a
	href="https://thecakebakeshop.com"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://thecakebakeshop.com"
	target="_blank" rel="noopener"
	&gt;
	Cake·Bake·Shop
&lt;/a&gt;.&lt;/p&gt;
&lt;ul class="cake-bake-shop gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1967.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1967_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1967_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1967_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1967_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Red Velvet Lovelyness
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1968.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1968_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1968_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1968_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1968_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Cookie Dough Cake 🤤
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1969.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1969_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1969_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1969_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/06/08/the-cake-bake-shop/IMG_1969_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Lemon Blueberry Cake
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Of course, a store with &amp;ldquo;Cake&amp;rdquo; in the first part of the title behooves it&amp;rsquo;s customers to eat some cake. And eat we did. The first one is a red velvet cake (my favorite), the second was a surprisingly amazing cookie dough cake, and the last one was an excellent blueberry lemon cake. 🤤&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-06-08 The Cake Bake Shop"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>You are a horrible person</title><link>https://degruchy.org/2025/06/04/you-are-a-horrible-person/</link><pubDate>Wed, 04 Jun 2025 13:44:12 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/06/04/you-are-a-horrible-person/</guid><description>




&lt;figure&gt;
 &lt;audio controls &gt;
	
	
	
	&lt;source src="https://degruchy.org/2025/06/04/you-are-a-horrible-person/well-done.mp3" type="audio/mp3"&gt;
	
	
	&lt;source src="https://degruchy.org/2025/06/04/you-are-a-horrible-person/well-done.ogg" type="audio/ogg"&gt;
	
 &lt;/audio&gt;
 
&lt;/figure&gt;

&lt;p&gt;I hope &lt;a
	href="https://sahillavingia.com/doge"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://sahillavingia.com/doge"
	target="_blank" rel="noopener"
	&gt;
	this peice of shit felt great that he helped fire
&lt;strong&gt;half-a-million employees&lt;/strong&gt;
&lt;/a&gt; and didn&amp;rsquo;t actually positively affect
&lt;em&gt;dick&lt;/em&gt; except make his delusional boss feel like he was accomplishing
something other than pure chaos and attempt to control the government,
privately.&lt;/p&gt;
&lt;p&gt;Sahil Lavingia: You are a fucking waste. Please, stop interacting with
humanity &lt;strong&gt;immediately&lt;/strong&gt;. It&amp;rsquo;s better for everyone involved.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-06-04 You are a horrible person"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>On: "The Emacs devotee walks through an ever-expanding mansion whose rooms rearrange themselves to their thoughts."</title><link>https://degruchy.org/2025/05/27/on-the-emacs-devotee-walks-through-an-ever-expanding-mansion-whose-rooms-rearrange-themselves-to-their-thoughts./</link><pubDate>Tue, 27 May 2025 11:46:00 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/27/on-the-emacs-devotee-walks-through-an-ever-expanding-mansion-whose-rooms-rearrange-themselves-to-their-thoughts./</guid><description>
&lt;p&gt;A post on &lt;a
	href="https://irreal.org/blog/?p=13016"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://irreal.org/blog/?p=13016"
	target="_blank" rel="noopener"
	&gt;
	Irreal about the customizability of Emacs caught my attention
today
&lt;/a&gt;. It talks about how younger developers don&amp;rsquo;t use Emacs and why they
should. It specifically pulls out the following quote from a &lt;a
	href="https://news.ycombinator.com/item?id=44024086"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://news.ycombinator.com/item?id=44024086"
	target="_blank" rel="noopener"
	&gt;
	Hacker News
post
&lt;/a&gt; regarding it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The specialized app user lives in rented apartments; the Emacs devotee walks
through an ever-expanding mansion whose rooms rearrange themselves to their
thoughts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m not sure I entirely agree with the sentiment. Sure, Emacs &lt;a
	href="https://lmno.lol/alvaro/awesome-emacs-on-macos"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://lmno.lol/alvaro/awesome-emacs-on-macos"
	target="_blank" rel="noopener"
	&gt;
	is &lt;em&gt;vastly&lt;/em&gt; more
customizable than pretty much &lt;em&gt;any&lt;/em&gt; other &lt;del&gt;text editor&lt;/del&gt; tool out there
&lt;/a&gt;. The
whole thing is just a big ball of Elisp sitting atop a VM that handles lower
level interactions in C. You can get away with pretty much anything you want
without having to go through those lower levels, because much of it is exposed
inside code. Additionally, changes you make to the environment are immediately
available to you without any stop/restart/update trickery. This is incredibly
valuable when changing things.&lt;/p&gt;
&lt;p&gt;However, I dislike this bit specifically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;the Emacs devotee walks through an ever-expanding mansion whose rooms
rearrange themselves to their thoughts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, and no. You have to build those rooms yourself. Yes, you &lt;em&gt;can&lt;/em&gt; build those
rooms yourself, and building them is easier (or even possible) than it would be
in any other tool, but you&amp;rsquo;re still building them. There is also the idea of
need. Do you &lt;em&gt;need&lt;/em&gt; such a system that accommodates every bespoke aspect of
things? Do you &lt;em&gt;need&lt;/em&gt; to build a window manager because you don&amp;rsquo;t want to
context switch? Do you &lt;em&gt;need&lt;/em&gt; to manage your music library in your editor? Do
you &lt;em&gt;need&lt;/em&gt; to read your email, usenet, or RSS posts in your editor? Likely not.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;love&lt;/em&gt; that Emacs is so extensible, I love that I can tweak each bit to what I
prefer. However, I don&amp;rsquo;t &lt;em&gt;need&lt;/em&gt; it. Most of the tools I use I understand how
they work, and fit them into my workflow, or discard them. Most of my
interaction with them is not one of frustration or fighting against some
imagined interaction model. Most of the time I&amp;rsquo;m just &lt;em&gt;using&lt;/em&gt; the application.
Sure, there are times that I struggle to figure out how or why an application
does the things it does, but those are usually the applications I discard
because they don&amp;rsquo;t fit what I need. Bending their utility to my needs is not
always the best solution, I probably don&amp;rsquo;t even need that functionality, if it&amp;rsquo;s
not immediately apparent.&lt;/p&gt;
&lt;p&gt;Some folks want to &lt;em&gt;own&lt;/em&gt; every bit of their environment and change it to their
bespoke needs. They want every keystroke, every click of a mouse button to
summon or dismiss tools as fast as the display can shove the pixels on the
screen. That&amp;rsquo;s fine. &lt;a
	href="https://en.wikipedia.org/wiki/Default_effect"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Default_effect"
	target="_blank" rel="noopener"
	&gt;
	Most people don&amp;rsquo;t do those sorts of things
&lt;/a&gt;. In fact,
&lt;a
	href="https://service-design.co/95-of-the-people-stick-to-the-default-option-9e16316a64e1"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://service-design.co/95-of-the-people-stick-to-the-default-option-9e16316a64e1"
	target="_blank" rel="noopener"
	&gt;
	most people don&amp;rsquo;t even find the setting screen
&lt;/a&gt;. While I would certainly
argue that developers &lt;em&gt;do&lt;/em&gt; look for the settings screens, I&amp;rsquo;ve been pretty
horrified working in a tech office where developers have a hard time even
getting their &lt;em&gt;own environment&lt;/em&gt; set up correctly. As it turns out, lots of
developers just do this &lt;em&gt;as a job&lt;/em&gt;. They don&amp;rsquo;t &lt;em&gt;care&lt;/em&gt; how the tool works and are
fine with using the default options. Some upstart junior developer can weed
around in the settings and find changes that will help, but most are just there
to plug in some code and go home. Coding is not their interest.&lt;/p&gt;
&lt;p&gt;There is also the conformity aspect. Some young developer coming into the office
is not going to be given the choice of development tools. By and large they are
going to be told what tools they use, how the environment is setup and how to
build the application. This will vary from office to office, but conformity is a
big thing in large development houses because it reduces defects and keeps
everyone working the same, without weird one-off setups that break things in new
and interesting (read: expensive) ways.&lt;/p&gt;
&lt;p&gt;So, sure, Emacs is luxurious if you&amp;rsquo;ve got the time and energy to devote to it,
it&amp;rsquo;s also a completely manipulatable environment that works the way you think it
should. It&amp;rsquo;s also old, which kids hate. It&amp;rsquo;s also ugly, which kids hate. It&amp;rsquo;s
also extremely fiddly with new technology, which kids hate. I love Emacs. I love
that it&amp;rsquo;s ugly, that it&amp;rsquo;s old and well worn, that it interfaces with anything
that can output plain text. But it&amp;rsquo;s not &amp;ldquo;cool&amp;rdquo;. VSCode is &amp;ldquo;cool&amp;rdquo;. Cursor is
&amp;ldquo;cool&amp;rdquo;. Nova and Sublime Text are &amp;ldquo;cool&amp;rdquo;. It doesn&amp;rsquo;t matter how good Emacs is,
it&amp;rsquo;s &lt;em&gt;not&lt;/em&gt; &amp;ldquo;cool&amp;rdquo; and that makes the effort to learn it that much harder than it
is to say, get into VSCode, which has GUI&amp;rsquo;s and tools that hook into their
already existing workflows of new and cool tools.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s a huge gap to overcome.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Jack Baty has also &lt;a
	href="https://baty.net/posts/2025/05/too-much-rope/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://baty.net/posts/2025/05/too-much-rope/"
	target="_blank" rel="noopener"
	&gt;
	recently posted about how much that effort usually
takes
&lt;/a&gt;. Often Emacs gives us a lot of leeway in how we approach problems.
That can end up being a hinderance to actually getting things done. When you
have endless customization, where do you stop? Sometimes, less is more.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-27 On: "The Emacs devotee walks through an ever-expanding mansion whose rooms rearrange themselves to their thoughts.""&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>ChatGPT as Siri</title><link>https://degruchy.org/2025/05/23/chatgpt-as-siri/</link><pubDate>Fri, 23 May 2025 12:45:02 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/23/chatgpt-as-siri/</guid><description>
&lt;p&gt;One of the things I&amp;rsquo;ve been surprisingly pleased with is how &lt;em&gt;good&lt;/em&gt; the macOS
app is for ChatGPT. I don&amp;rsquo;t use it often, but when I do, it&amp;rsquo;s &lt;em&gt;really nice&lt;/em&gt; to
have it be able to peek into a document open in BBEdit, or look at the terminal
to see the output of a command. I don&amp;rsquo;t know if these are pre-baked integrations
or are using some sort of universal AppleScript interface to do the magic, but
it does kind of feel like that: magic.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s even had me reduce my usage of competing tools like Claude or local LLMs
like Ollama because I don&amp;rsquo;t have to copy/paste everything in and out of the
chat. I can just say: &amp;ldquo;Hey, does this look right?&amp;rdquo; and ChatGPT will look at the
document (even just highlighted segments) and offer it&amp;rsquo;s thoughts on it. Very
handy. Avoiding the clunky copy/paste routine is probably the experience
programmers are getting when they use tools like Cursor that integrate right
into their IDE. It&amp;rsquo;s great!&lt;/p&gt;
&lt;p&gt;&lt;a
	href="https://help.openai.com/en/articles/10119604-work-with-apps-on-macos"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://help.openai.com/en/articles/10119604-work-with-apps-on-macos"
	target="_blank" rel="noopener"
	&gt;
	Reading into the documentation
&lt;/a&gt;, it looks like it might be a bit of
incantation using the Accessibility settings. This means that your app probably
needs to have accessibility compatibility that exposes a certain level of
actions the system can read. Certainly better than trying to manually grab the
data out of the app with bespoke rules for each. It also doesn&amp;rsquo;t look like this
is supported &lt;em&gt;at all&lt;/em&gt; on Windows, which I don&amp;rsquo;t think exposes the same kind of
universal accessibility API.&lt;/p&gt;
&lt;p&gt;For all the doom and gloom going on right now in the world, especially about
Apple and their floundering &amp;ldquo;Apple Intelligence&amp;rdquo;, it&amp;rsquo;s nice to see some good
things floating about and working well. And if Apple decides to open Siri up to
using any of the publicly available models, I&amp;rsquo;d be just as happy. So long as we
can get deeper control over where it goes and privacy guarantees about how it&amp;rsquo;s
used (if at all), then I don&amp;rsquo;t see the problem. Yeah, their plan for Apple
Intelligence seemed sound, but it doesn&amp;rsquo;t seem like it worked out in practice.
The best thing is to admit that they didn&amp;rsquo;t have the chops to get it right, and
either scrap it or hand it off to someone who &lt;em&gt;does&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-23 ChatGPT as Siri"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Japan Looks Really Pretty</title><link>https://degruchy.org/2025/05/23/japan-looks-really-pretty/</link><pubDate>Fri, 23 May 2025 09:23:40 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/23/japan-looks-really-pretty/</guid><description>
&lt;p&gt;Kagi apparently had a meetup in Japan. Setting aside the Kagi stuff, I&amp;rsquo;m always humbled by how &lt;em&gt;nice&lt;/em&gt; Japan looks. I know that every city has grimy dirty and poor areas, but even the side roads of Japan look inviting and well kept. I really want to visit it some day.&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=EPm-cjd5rsw"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/23/japan-looks-really-pretty/kagi-japan.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/23/japan-looks-really-pretty/kagi-japan.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/23/japan-looks-really-pretty/kagi-japan.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/23/japan-looks-really-pretty/kagi-japan.jpg"
 alt="A poster picture for Kagi&amp;#39;s Japan meetup" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Kagi x Japan&lt;/h4&gt;&lt;p&gt;Kagi is great, but Japan looks gorgeous&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-23 Japan Looks Really Pretty"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Won't Someone Think of the Children? Not if You're in a Red State.</title><link>https://degruchy.org/2025/05/21/wont-someone-think-of-the-children-not-if-youre-in-a-red-state./</link><pubDate>Wed, 21 May 2025 13:49:33 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/21/wont-someone-think-of-the-children-not-if-youre-in-a-red-state./</guid><description>
&lt;p&gt;
Fuck you, DeSantis. Nice to know that our cHilDrEn are top of mind
when dealing with crisises in our state. Can&amp;#39;t get those kickbacks if
you&amp;#39;re giving children \*checks notes\* food.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Beginning in the 2025-26 school year, there will be 37 schools that
will no longer be providing free lunch meals through the Community
Eligibility Provision (CEP). Instead, families with students attending
these schools will need to complete an application for free or
reduced-price meals to receive meal assistance or be directly
certified through the State. The full list of affected schools is
included below.&lt;/p&gt;
&lt;p&gt;
These schools do not meet the criteria for the Community Eligibility
Provision (CEP), a federal program that allows schools to offer free
meals to all students. To qualify as a CEP school, 40 percent of
enrolled students must be eligible for free or reduced-price meals
through other government programs such as SNAP (Supplemental Nutrition
Assistance Program) or TANF (Temporary Assistance for Needy Families)
or Medicaid.&lt;/p&gt;
&lt;p&gt;
This change comes after a careful review of our budget for the
upcoming school year. Since March 2020, we’ve been able to offer free
meals to all students districtwide thanks to federal pandemic relief
funding. However, that funding has ended, and continuing the program
without it is no longer financially sustainable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-21 Won't Someone Think of the Children? Not if You're in a Red State."&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Ever Wanted to Unbind macOS Keybindings in Emacs?</title><link>https://degruchy.org/2025/05/21/ever-wanted-to-unbind-macos-keybindings-in-emacs/</link><pubDate>Wed, 21 May 2025 13:42:47 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/21/ever-wanted-to-unbind-macos-keybindings-in-emacs/</guid><description>
&lt;p&gt;
Here&amp;#39;s all the keys that get bound in
&lt;code&gt;Emacs.app/Contents/Resources/lisp/term/ns-win.el.gz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;
I&amp;#39;ve changed it to be unsetting these keys, because I find them
annoying when I accidentally press them. This gives you more keys to
allow for customization on macOS. You may want to wrap this in a
&lt;code&gt;when&lt;/code&gt; stanza to undefine it only on macOS, but that&amp;#39;s up to you.&lt;/p&gt;
&lt;div class="src src-elisp"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;;; unset macOS keybindings&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-,&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nf"&gt;-&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nf"&gt;-&lt;/span&gt;&lt;span class="o"&gt;`&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-~&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;--&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-:&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-?&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-^&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-C&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-D&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-E&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-L&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-M&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-S&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-a&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-c&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-d&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-e&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-f&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-F&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-g&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-h&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-H&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\M&lt;/span&gt;&lt;span class="nv"&gt;-\s-h&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-j&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-k&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-l&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-m&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-n&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-o&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-p&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-q&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-s&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-t&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-u&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-v&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-w&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-x&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-y&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-z&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-+&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-=&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="mi"&gt;-0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\s&lt;/span&gt;&lt;span class="nv"&gt;-|&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;s-kp-bar&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sc"&gt;?\C&lt;/span&gt;&lt;span class="nv"&gt;-\s-&lt;/span&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;s-right&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;s-left&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;home&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;end&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;kp-home&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;kp-end&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;kp-prior&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;kp-next&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;; Allow shift-clicks to work similarly to under Nextstep.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;S-down-mouse-1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;; Special Nextstep-generated events are converted to function keys. Here&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;; are the bindings for them. Note, these keys are actually declared in&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;;; x-setup-function-keys in common-win.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-power-off&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-open-file&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-open-temp-file&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-open-file-line&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-spi-service-call&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-new-frame&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-toggle-toolbar&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;global-unset-key&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;ns-show-prefs&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-21 Ever Wanted to Unbind macOS Keybindings in Emacs?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Like Finder Tabs</title><link>https://degruchy.org/2025/05/19/i-like-finder-tabs/</link><pubDate>Mon, 19 May 2025 18:26:16 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/19/i-like-finder-tabs/</guid><description>
&lt;p&gt;I&amp;rsquo;m gonna use them, and you can&amp;rsquo;t stop me. &lt;img src="https://degruchy.org/assets/images/emoji/emoji-colbert.gif" alt="An image of a man crossing his
arms, a serious look on his face" title="emoji-colbert.gif"&gt;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-19 I Like Finder Tabs"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Love Fossil</title><link>https://degruchy.org/2025/05/19/i-love-fossil/</link><pubDate>Mon, 19 May 2025 18:15:13 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/19/i-love-fossil/</guid><description>
&lt;p&gt;I love being able to have a local-first bug tracker. One that I can use in a GUI &lt;em&gt;or&lt;/em&gt; in a terminal. Fossil lets me have that. I don&amp;rsquo;t even need to have Gitea or Forjeo installed in a container for it. I just kick off &lt;code&gt;fossil ui&lt;/code&gt; and I can post my own bugs, take notes in the wiki and keep them contained and versioned. I don&amp;rsquo;t need GitHub or CodeBerg. Just my computer, the repository and what I need to do.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/19/i-love-fossil/fossil-ui-bugtracker.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/19/i-love-fossil/fossil-ui-bugtracker.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/19/i-love-fossil/fossil-ui-bugtracker.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/19/i-love-fossil/fossil-ui-bugtracker.jpg"&gt;
 &lt;/picture&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-19 I Love Fossil"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>'Never Meet Your Heroes'</title><link>https://degruchy.org/2025/05/19/never-meet-your-heroes/</link><pubDate>Mon, 19 May 2025 14:49:31 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/19/never-meet-your-heroes/</guid><description>
&lt;p&gt;Well, another round of dark secrets to turn me off of things I&amp;rsquo;ve like or like.
One of them is old: &lt;a
	href="https://en.wikipedia.org/wiki/Scott_Adams#:~:text=In%20February%202023,his%20locals.com%20website."
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Scott_Adams#:~:text=In%20February%202023,his%20locals.com%20website."
	target="_blank" rel="noopener"
	&gt;
	Scott Adams is a racist
&lt;/a&gt;. However, it appears that &lt;a
	href="https://www.thewrap.com/dilbert-scott-adams-prostate-cancer-biden/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.thewrap.com/dilbert-scott-adams-prostate-cancer-biden/"
	target="_blank" rel="noopener"
	&gt;
	he&amp;rsquo;s
dying of prostate cancer
&lt;/a&gt;. The same &lt;a
	href="https://www.cnn.com/2025/05/18/politics/joe-biden-prostate-cancer"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.cnn.com/2025/05/18/politics/joe-biden-prostate-cancer"
	target="_blank" rel="noopener"
	&gt;
	prostate cancer that is killing Joe
Biden
&lt;/a&gt;. So, there&amp;rsquo;s that.&lt;/p&gt;
&lt;p&gt;Then, we have &lt;a
	href="https://en.wikipedia.org/wiki/Neil_Gaiman#:~:text=Beginning%20in%202024,denied%20these%20allegations."
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Neil_Gaiman#:~:text=Beginning%20in%202024,denied%20these%20allegations."
	target="_blank" rel="noopener"
	&gt;
	Neil Gaiman
&lt;/a&gt;. He&amp;rsquo;s accused of serial rape, along with his
estranged wife, &lt;a
	href="https://archive.md/8xhpJ"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://archive.md/8xhpJ"
	target="_blank" rel="noopener"
	&gt;
	who, allegedly, helped groom girls for him
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I should really just turn off the Internet for the remainder of my life. What a
shitshow.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-19 'Never Meet Your Heroes'"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Andor is the Best Star Wars of All Time</title><link>https://degruchy.org/2025/05/18/andor-is-the-best-star-wars-of-all-time/</link><pubDate>Sun, 18 May 2025 16:46:54 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/18/andor-is-the-best-star-wars-of-all-time/</guid><description>
&lt;p&gt;Yeah I said it. Coupled with Rogue One, it is the best Star Wars has to offer.
Sure the original prequels were great, and I revere them as such, but Andor is
the best. Hands down. It was sci-fi but not sci-fi. It was a real story about
loss and finding yourself and being part of something bigger.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s going to take a while to come down off this show. Disney has some mighty
big shoes to fill moving forward.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-18 Andor is the Best Star Wars of All Time"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hot Caturday</title><link>https://degruchy.org/2025/05/17/hot-caturday/</link><pubDate>Sat, 17 May 2025 12:50:57 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/17/hot-caturday/</guid><description>
&lt;ul class="hot-caturday gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/17/hot-caturday/ellie-and-bailey.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/ellie-and-bailey_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/ellie-and-bailey_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/ellie-and-bailey_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/17/hot-caturday/ellie-and-bailey_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Despite it being so hot, they&amp;#39;re soaking up the sun and enjoying the hunt for bugs and lizards
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/17/hot-caturday/nice-caturday.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/nice-caturday_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/nice-caturday_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/17/hot-caturday/nice-caturday_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/17/hot-caturday/nice-caturday_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;It looks so nice. But it&amp;#39;s really too hot to stay out too long.
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Despite it being 92F here, being in the shade and under a fan makes it slightly more bearable, enough to enjoy time with the cats on the catio.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-17 Hot Caturday"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Right in the Feels</title><link>https://degruchy.org/2025/05/15/right-in-the-feels/</link><pubDate>Thu, 15 May 2025 15:09:19 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/15/right-in-the-feels/</guid><description>
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=8aExk3WHGN4"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/15/right-in-the-feels/last-scene.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/15/right-in-the-feels/last-scene.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/15/right-in-the-feels/last-scene.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/15/right-in-the-feels/last-scene.jpg"
 alt="🥹" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Last Scene&lt;/h4&gt;&lt;p&gt;🥹&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Apple is showcasing more of the &amp;ldquo;Shot on iPhone&amp;rdquo; movies that folks have made. There is &lt;a
	href="https://www.youtube.com/watch?v=8aExk3WHGN4"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.youtube.com/watch?v=8aExk3WHGN4"
	target="_blank" rel="noopener"
	&gt;
	a new one out that not only is shot well
&lt;/a&gt;, but tugs on the heart strings. It&amp;rsquo;s called &amp;ldquo;Last Scene&amp;rdquo; and is very much worth the watch.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-15 Right in the Feels"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Florida Forces Abstinence-based Sexual Education</title><link>https://degruchy.org/2025/05/13/florida-forces-abstinence-based-sexual-education/</link><pubDate>Tue, 13 May 2025 12:47:41 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/13/florida-forces-abstinence-based-sexual-education/</guid><description>
&lt;p&gt;Florida, why you gotta be so stupid? &lt;a
	href="https://en.wikipedia.org/wiki/Abstinence-only_sex_education"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Abstinence-only_sex_education"
	target="_blank" rel="noopener"
	&gt;
	We know it doesn&amp;rsquo;t work
&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This email is to inform you of recent changes and additions to Board Policy
4.10, which includes Comprehensive Health Education for students in grades K-12
and will go into effect in the 2025-26 school year. Most updates center around
reproductive health and disease prevention education and were approved by the
School Board at its regular monthly meeting on Tuesday, May 6.&lt;/p&gt;
&lt;h2 id="policy-defines-instruction-as-abstinence-based-clarifies-instruction-by-grade"&gt;Policy Defines Instruction as Abstinence-Based, Clarifies Instruction by Grade&lt;/h2&gt;
&lt;p&gt;In accordance with Florida law, the district has consistently upheld abstinence
as the expected standard in its educational programming. The Board policy now
explicitly affirms that the district&amp;rsquo;s instruction is abstinence-based and
promotes sexual abstinence. Additionally, the policy stipulates that
&amp;ldquo;instruction shall include all information required by Florida State Statutes,&amp;rdquo;
which encompasses, but is not limited to, education on the risks and prevention
of pregnancy, sexually transmitted infections and diseases, and other relevant
topics.&lt;/p&gt;
&lt;p&gt;The updated policy additionally clarifies the district&amp;rsquo;s ongoing practices in
providing current, research-based, age, and developmentally appropriate
information about AIDS, HIV, and other sexually transmitted diseases and
infections to students in grades 6-12. In contrast, students in grades K-5 will
receive instruction on the prevention and spread of common communicable
diseases, like the flu.&lt;/p&gt;
&lt;h3 id="separating-middle-school-students-by-gender-for-reproductive-health-and-disease-prevention"&gt;Separating Middle School Students by Gender for Reproductive Health and Disease Prevention&lt;/h3&gt;
&lt;p&gt;An addition to Board Policy 4.10 states the superintendent will implement
procedures allowing students in grades 6-8 to be separated by gender during
reproductive health and disease prevention instruction. This is in accordance
with Florida State Statute 1000.05 (2)(d).&lt;/p&gt;
&lt;h3 id="ways-parents-can-learn-about-and-opt-children-out-of-instruction"&gt;Ways Parents Can Learn About and Opt Children Out of Instruction&lt;/h3&gt;
&lt;p&gt;While it has long been the district&amp;rsquo;s practice to notify parents about
reproductive health and disease prevention instruction and provide them with the
option to opt their child out, the updated policy now clearly outlines these
procedures. The new language enhances transparency and ensures consistency
across schools by detailing how and when parents are informed, as well as the
steps required to decline participation. Among the policy&amp;rsquo;s requirements:&lt;/p&gt;
&lt;p&gt;Parents will receive the opportunity to preview material prior to instruction on
the district&amp;rsquo;s website.&lt;/p&gt;
&lt;p&gt;Schools will disseminate information regarding instructional materials through
welcome back packets or other official school communications.&lt;/p&gt;
&lt;p&gt;No later than two weeks prior to instruction, schools will provide formal notice
to parents using two of the three methods: (1) Hard copy correspondence sent
home with students, (2) Push notifications through the district&amp;rsquo;s student
information system, and/or (3) Electronic distribution via email or other
district-approved digital platforms.&lt;/p&gt;
&lt;p&gt;Parents can expect to see changes go into effect in the fall. To read Board
Policy 4.10 in its entirety, view Chapter 4 in the board policy handbook.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maybe someone should tell the folks in The Villages that abstinence is the way
to go. You know, for God and stuff.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-13 Florida Forces Abstinence-based Sexual Education"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Shortcut to Bookmarking</title><link>https://degruchy.org/2025/05/13/shortcut-to-bookmarking/</link><pubDate>Tue, 13 May 2025 11:47:07 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/13/shortcut-to-bookmarking/</guid><description>
&lt;p&gt;When I find a link that I want to share to the world, I add it to &lt;a
	href="https://degruchy.org/bookmarks/"
	
	&gt;
	my bookmarks
page
&lt;/a&gt; and upload it. Except, I don&amp;rsquo;t just have a page of raw links in my
repo, I have Hugo generate the page from a much simpler to manage &lt;a
	href="https://toml.io/en/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://toml.io/en/"
	target="_blank" rel="noopener"
	&gt;
	TOML
&lt;/a&gt;
file. This file is fairly long, but orders of magnatude shorter than the
resultant HTML, and it&amp;rsquo;s far easier to manage.&lt;/p&gt;
&lt;p&gt;That being said, the &lt;em&gt;actual creation&lt;/em&gt; of bookmarks requires multiple steps,
including copying the URL, the Title and creating an archive (optional) then
telling the bookmark it has one. While this is not &lt;em&gt;super&lt;/em&gt; complicated, it&amp;rsquo;s a
lot of back and forth between Safari and BBEdit. I can sometimes get confused
about what the &amp;lsquo;stack&amp;rsquo; order of Command-Tab and end up in different
windows/applications. So, I decided to fix it.&lt;/p&gt;
&lt;h2 id="shortcut-to-the-win"&gt;Shortcut to the Win&lt;/h2&gt;
&lt;p&gt;I had a couple of ideas where I could use AppleScript, or Automator, but both of
those tools are dated and not as well supported by the upstart Shortcuts. Not
only are the Shortcuts created on macOS useful, but they can work on iOS and
iPadOS, too. They&amp;rsquo;re also synced across devices on your account, making it a
no-brainer.&lt;/p&gt;
&lt;p&gt;Ultimately, I need to make the following out of as much information as I can
gather.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nx"&gt;bookmark&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;added&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2025-05-13&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;20-04&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Page title&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Current Safari URL&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;archive&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here&amp;rsquo;s my Shortcut:&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut.jpg"
 alt="An image of the Shortcut Edit Shortcut window" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Grab all the Details&lt;/h4&gt;&lt;p&gt;This makes it so much faster to add bookmarks.&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a
	href="make-shortcut.shortcut"
	
	&gt;
	(download a copy of the shortcut here.)
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And the details pane&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut-details.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut-details.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut-details.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/13/shortcut-to-bookmarking/shortcut-details.jpg"
 alt="Adding the &amp;ldquo;Show in Share Pane&amp;rdquo; makes this work" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;Adding the &amp;ldquo;Show in Share Pane&amp;rdquo; makes this work&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One thing that tripped me up is that Shortcuts doesn&amp;rsquo;t use any of the standard
date formatting methods that I&amp;rsquo;ve seen. It uses &lt;a
	href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns"
	target="_blank" rel="noopener"
	&gt;
	Unicode Date Formatting
&lt;/a&gt;,
which I had to hunt around for to get the RFC date formatting correct.
Ultimately, this is the string that worked: &lt;code&gt;yyyy-MM-dd HH:mm:ssXXX&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Using this shortcut, I can now use any share pane and grab the URL, Title and
Current Date in RFC format and have a nicely formatted TOML fragment that I
can just paste into my bookmarks file.&lt;/p&gt;
&lt;p&gt;I did the same thing with my wishlist items. Though that still requires some
manual intervention for the image. I also run that through Retrobatch to
reformat, resize and downsample for the site.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-13 Shortcut to Bookmarking"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Watch the Earth Move in Myanmar Earthquake</title><link>https://degruchy.org/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/</link><pubDate>Tue, 13 May 2025 10:26:34 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/</guid><description>
&lt;video poster="earthquake-myanmar.jpg" controls preload="auto" width="100%" poster="/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/earthquake-myanmar.jpg" playsinline class=""&gt;
 &lt;source src="https://degruchy.org/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/earthquake-myanmar.webm" type="video/webm"&gt;
 &lt;source src="https://degruchy.org/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/earthquake-myanmar.ogv" type="video/ogg"&gt;
 &lt;source src="https://degruchy.org/2025/05/13/watch-the-earth-move-in-myanmar-earthquake/earthquake-myanmar.mp4" type="video/mp4"&gt;
 &lt;span&gt;&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;Note the light pole (the one with the solar panel on it) and the large power
transmission line on the right in the background. The whole area just&amp;hellip;shifts
about 3-5 feet. Unreal!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-13 Watch the Earth Move in Myanmar Earthquake"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Host, Who Dis?</title><link>https://degruchy.org/2025/05/12/new-host-who-dis/</link><pubDate>Mon, 12 May 2025 19:16:39 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/12/new-host-who-dis/</guid><description>
&lt;p&gt;Just migrated over to AWS/CloudFront/S3/Washtub/Whatever, again. The bill for my
very small Hetzner host was far outside reasonable, especially since I wasn&amp;rsquo;t
really running anything on it except this site, Vaultwarden and Miniflux, all
things I can run locally or drop on AWS and forget about them.&lt;/p&gt;
&lt;p&gt;It also means one less &lt;em&gt;thing&lt;/em&gt; to have to babysit and take care of. Sorry if
my RSS feed blew up in your reader. Nothing changed, but it may have gotten new
etags or somesuch and caused it to redownload the whole thing.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-12 New Host, Who Dis?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Hate in my Heart</title><link>https://degruchy.org/2025/05/08/the-hate-in-my-heart/</link><pubDate>Thu, 08 May 2025 15:00:54 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/08/the-hate-in-my-heart/</guid><description>
&lt;p&gt;I don&amp;rsquo;t like to hate people. It feels &lt;em&gt;wrong&lt;/em&gt;. Yet, I find myself hating people
that I don&amp;rsquo;t agree with. Not &lt;em&gt;everyone&lt;/em&gt; I disagree with, but the vocal set of
them. Hate is something that I had while I was a much younger man. I ran off it.
Rage at the world that I felt was so unfair and uninterested in noticing me. As
I grew, I grew to let go of that hate because it wore me out. I didn&amp;rsquo;t see a
point in wasting so much energy on stuff I couldn&amp;rsquo;t change.&lt;/p&gt;
&lt;p&gt;Now, I don&amp;rsquo;t see a point in being that pragmatic anymore.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m tired of boot-licking, racist, sexist, homophobe assholes who are actively
trying to hurt people, innocent people all in the name of power and money. The
current crop of Nazis in power want to do everything they can to tear away any
vestige of public-ownership of organizations, and therefore any governmental
safeguards that protect those who are marginalized and hurt the &lt;em&gt;most&lt;/em&gt; by
bigoted shit-eaters like Trump and Company.&lt;/p&gt;
&lt;p&gt;I hate Trump. I hate him and his goons. I hate that half the country have
somehow decided that instead of a government by and for the people, it should be
by and for oligarchs and monopolists. Fuck them. I hate them, too. Too stupid to
understand that they voted against their self-interests, too stupid to realize
that this unchecked hatred and bigotry serves their corporate overlords and only
hurts the &amp;ldquo;enemy&amp;rdquo; by proxy. The fact that they see half the fucking country as
&amp;ldquo;enemies&amp;rdquo; because they aren&amp;rsquo;t gender-confirming or originally from here
(spoilers: no one here was &amp;ldquo;from here&amp;rdquo; except the oft oppressed native
population). Fuck them.&lt;/p&gt;
&lt;p&gt;No one wants to listen to me, so it doesn&amp;rsquo;t matter. I&amp;rsquo;m done trying to be nice
about this. Fuck these people. We the people deserved so much better.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-08 The Hate in my Heart"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Pope. Less Friendly as Old Pope</title><link>https://degruchy.org/2025/05/08/new-pope.-less-friendly-as-old-pope/</link><pubDate>Thu, 08 May 2025 13:39:23 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/08/new-pope.-less-friendly-as-old-pope/</guid><description>
&lt;p&gt;&lt;a
	href="https://www.cnn.com/world/live-news/new-pope-conclave-day-two-05-08-25"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.cnn.com/world/live-news/new-pope-conclave-day-two-05-08-25"
	target="_blank" rel="noopener"
	&gt;
	New Pope; Who dis?
&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Whereas Francis said, “Who am I to judge?” when asked about gay clerics,
Cardinal Prevost has expressed less welcoming views to L.G.B.T.Q. people.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a
	href="https://archive.ph/20250508172005/https://www.nytimes.com/2025/05/02/world/americas/pope-candidate-cardinal-robert-francis-prevost.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://archive.ph/20250508172005/https://www.nytimes.com/2025/05/02/world/americas/pope-candidate-cardinal-robert-francis-prevost.html"
	target="_blank" rel="noopener"
	&gt;
	New York Times
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well, lets see how this shakes out.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-08 New Pope. Less Friendly as Old Pope"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Disney is Building a new Park in Abu Dhabi</title><link>https://degruchy.org/2025/05/07/disney-is-building-a-new-park-in-abu-dhabi/</link><pubDate>Wed, 07 May 2025 13:32:19 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/07/disney-is-building-a-new-park-in-abu-dhabi/</guid><description>
&lt;p&gt;&lt;a
	href="https://wdwnt.com/2025/05/breaking-the-walt-disney-company-announces-new-theme-park-in-abu-dhabi/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://wdwnt.com/2025/05/breaking-the-walt-disney-company-announces-new-theme-park-in-abu-dhabi/"
	target="_blank" rel="noopener"
	&gt;
	Yep, that&amp;rsquo;s right
&lt;/a&gt;. Abu Dhabi, yes &lt;a
	href="https://en.wikipedia.org/wiki/Abu_Dhabi#Human_rights"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Abu_Dhabi#Human_rights"
	target="_blank" rel="noopener"
	&gt;
	&lt;em&gt;that&lt;/em&gt; Abu Dhabi
&lt;/a&gt;. Though,
tellingly, they&amp;rsquo;re &lt;a
	href="https://wdwnt.com/2025/05/disney-to-oversee-creative-development-but-will-not-pay-for-or-operate-new-abu-dhabi-park/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://wdwnt.com/2025/05/disney-to-oversee-creative-development-but-will-not-pay-for-or-operate-new-abu-dhabi-park/"
	target="_blank" rel="noopener"
	&gt;
	not actually going to &lt;em&gt;run&lt;/em&gt; or even &lt;em&gt;pay&lt;/em&gt; for the
park
&lt;/a&gt;. Just oversee creative matters. How that&amp;rsquo;s going to translate
into guest experience, I don&amp;rsquo;t know. Bob had some glowing words to say
about his new UAE partners:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Miral has] already demonstrated a commitment to quality in that
regard. This is essentially a license arrangement, but with
considerable involvement from us. So although they will operate it,
we will have employees embedded in the organization with them to
help them operate a Disney theme park, basically at the quality
level that everybody is used to.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So, they&amp;rsquo;ll be working it from the inside. How long that&amp;rsquo;ll last is
anyone&amp;rsquo;s guess. However, I&amp;rsquo;m concerned about the rampant human rights
abuses that the UAE seems to revel in, is going to play with a &lt;em&gt;theme
park&lt;/em&gt;. Disney is not shy about controlling their message, but having
to bend to the will of a crown prince in a &lt;em&gt;literal&lt;/em&gt; monarchy is going
to be an &lt;a
	href="https://wdwnt.com/2025/04/first-2025-rainbow-pride-pins-available-at-walt-disney-world/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://wdwnt.com/2025/04/first-2025-rainbow-pride-pins-available-at-walt-disney-world/"
	target="_blank" rel="noopener"
	&gt;
	interesting line to walk
&lt;/a&gt;. I wouldn&amp;rsquo;t be expecting any
pride parades or merch, let alone any actual welcoming behavior from
the workers there. I wonder how they&amp;rsquo;ll handle talking shit about
their government.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are reports of forced disappearances of foreign nationals and
Emirati citizens, who have been abducted, illegally detained and
tortured in undisclosed locations, and denied the right to a speedy
trial or access to counsel during investigations by the UAE
government. The non-governmental organization (NGO) Human Rights
Watch, states that Emirati laws maintain capital punishment and
discriminate against women, migrants and LGBTQ individuals.
&lt;a
	href="https://en.wikipedia.org/wiki/Human_rights_in_the_United_Arab_Emirates"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Human_rights_in_the_United_Arab_Emirates"
	target="_blank" rel="noopener"
	&gt;
	Wikipedia
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yeah, very Disney.&lt;/p&gt;
&lt;p&gt;Bob. This is a boondoggle. I hope you have some &lt;em&gt;very&lt;/em&gt; good guarantees
about visitor safety.&lt;/p&gt;
&lt;p&gt;No thanks. I&amp;rsquo;ll visit all but Shanghai and, now, Abu Dhabi. It&amp;rsquo;s a
shame, because both look like nice places. I just can&amp;rsquo;t trust the
government there to not black-bag me. Hell, I can&amp;rsquo;t trust the
government &lt;em&gt;here&lt;/em&gt; to not black bag me.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-07 Disney is Building a new Park in Abu Dhabi"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sometimes, AI Does Drugs</title><link>https://degruchy.org/2025/05/06/sometimes-ai-does-drugs/</link><pubDate>Tue, 06 May 2025 15:08:12 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/06/sometimes-ai-does-drugs/</guid><description>
&lt;p&gt;
Today, I wanted to try out my newly downloaded Gemma3 model and see if
it could answer a question that had been on my mind lately: There are
are quite a few features and similarities between BBEdit and
Emacs. Things like scratch buffers, Emacs keybindings and even a
full-blown simulation mode that extends BBEdit&amp;#39;s controls to Emacs
equivalants. Thus, I spake into the mouthpiece:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I see a lot of similarities between Emacs and BBEdit. Things like
scratchpads, emacs keybindings, and other small tweaks here and there
are very reminicent of Emacs. Is that on purpose?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
A simple enough question. I don&amp;#39;t know what kind of knowledge that has
been imbuded in Gemma, but I would imagine a question like this is old
enough that it would have made it into their knowledge by now. Emacs
is old, and so is BBEdit.&lt;/p&gt;
&lt;p&gt;
It&amp;#39;s answer:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You&amp;#39;ve hit on a really interesting and surprisingly common
observation! The similarities between BBEdit and Emacs are absolutely
intentional, and it&amp;#39;s a direct result of BBEdit&amp;#39;s creator, Byron Alan
Johnson, being a long-time Emacs user and admirer. Here&amp;#39;s a breakdown
of why and how that happened:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Byron Alan Johnson&amp;#39;s Emacs Love:&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;
STOP!&lt;/p&gt;
&lt;p&gt;
Okay, what? Byron Alan Johnson? I can&amp;#39;t find this guy
&lt;em&gt;anywhere&lt;/em&gt;. Searches come up with lots of names similar to that, but
&lt;em&gt;nothing&lt;/em&gt; about BBEdit, Barebones and similar. Not only can I not find
a guy named Byron Alan Johnson who is alive today, but I can&amp;#39;t find
one that is in technology. I checked &lt;a href="https://www.barebones.com/company/history.html"&gt;BBEdit&amp;#39;s site&lt;/a&gt; and can&amp;#39;t find any
mention of him. Nor can I find it in the &lt;a href="https://groups.google.com/g/comp.sys.mac.announce/c/gvPGyuX3UCs"&gt;announcement post for the
initial release of BBEdit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
I went back and asked Gemma about this, providing links and
refutations of the supposed Byron person, and it seemed to &lt;em&gt;double
down&lt;/em&gt; on it&amp;#39;s hallucination:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You’ve hit on a crucial and often overlooked detail! You are
absolutely correct – Rich Siegel is indeed the principal developer and
originator of BBEdit, as stated on the Barebones Software website and
corroborated by Wikipedia.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Okay, great!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My apologies for the misdirection in my previous responses. I was so
focused on Byron Alan Johnson’s influence and role that I failed to
properly acknowledge Rich Siegel’s central contribution&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Oh lord.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Byron Alan Johnson was the visionary who conceived of BBEdit,
identified the need for a powerful text editor for macOS, and secured
funding and initial support. He essentially provided the concept and
direction, while Rich Siegel brought the execution to life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
I don&amp;#39;t even get a hit on searching &lt;em&gt;just&lt;/em&gt; their site for Byron. Damn,
I&amp;#39;ll have what Gemma&amp;#39;s having.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://degruchy.org/assets/archives/2025-05-06_baj-gemma-drugs.md"&gt;The whole conversation is here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
I guess I&amp;#39;ll switch models and try again.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-06 Sometimes, AI Does Drugs"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Late Caturday</title><link>https://degruchy.org/2025/05/05/late-caturday/</link><pubDate>Mon, 05 May 2025 14:37:37 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/05/late-caturday/</guid><description>
&lt;ul class="caturday gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/05/late-caturday/ellie.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/05/late-caturday/ellie_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Ellie, not knowing if she wants to go back in, or to snuggle&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/05/late-caturday/bailey.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/bailey_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/bailey_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/bailey_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/05/late-caturday/bailey_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Just loungin&amp;#39; with his dad&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/05/late-caturday/ellie-bailey.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie-bailey_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie-bailey_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/ellie-bailey_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/05/late-caturday/ellie-bailey_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Ellie is checkin&amp;#39; out the digs, seein&amp;#39; if there&amp;#39;s room.&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/05/05/late-caturday/snuggle.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/snuggle_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/snuggle_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/05/late-caturday/snuggle_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/05/late-caturday/snuggle_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Ellie makes room for herself&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-05 Late Caturday"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>No More Care to Give</title><link>https://degruchy.org/2025/05/05/no-more-care-to-give/</link><pubDate>Mon, 05 May 2025 13:26:07 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/05/no-more-care-to-give/</guid><description>
&lt;p&gt;I feel drained, lately. I think it&amp;rsquo;s, in part, due to me trying to lower my
caffeine intake, and part me worrying about too much. I know I shouldn&amp;rsquo;t. What&amp;rsquo;s
going on in the world is largely outside of my control and that as bad as it is
for a lot of people, I&amp;rsquo;ll likely be fine. While-male-privilege and all. It’s at
work, too. Trying to keep face while inside I’m in turmoil over everything going
on. Feeling helpless and broken. I just don’t know what to do anymore.&lt;/p&gt;
&lt;p&gt;I think, too, that I don’t care anymore. Let them have it all. Let them tear
everything apart. Let them enslave, kill, deport and imprison everything they
don’t like. I don’t care. I don’t have care to give anymore. I’m out. Someone
else feel things for me. I don’t want to anymore.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-05 No More Care to Give"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sometimes, I Feel Defective</title><link>https://degruchy.org/2025/05/02/sometimes-i-feel-defective/</link><pubDate>Fri, 02 May 2025 18:33:46 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/02/sometimes-i-feel-defective/</guid><description>
&lt;p&gt;Sometimes. I feel like I know what I&amp;rsquo;m talking about. I can wax lyrical about
complex topics and reason about them pretty well. Most other times, though, I
just dont &lt;em&gt;understand&lt;/em&gt;. It&amp;rsquo;s usually this way with programming. I can pick my
way through some code and maybe understand 40% of it, more if there are good
comments. Writing code, though, is something that I struggle &lt;em&gt;mightily&lt;/em&gt; with.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not a programmer. I know that. I gave up that nascent part of me more than
10 years ago. I wasn&amp;rsquo;t even a &lt;em&gt;real&lt;/em&gt; programmer. I worked on Drupal and PHP with
some light HTML/CSS/JS. Most of it wasn&amp;rsquo;t &lt;em&gt;hard&lt;/em&gt; and when I wasn&amp;rsquo;t doing that, I
was being a jockey for &lt;a
	href="https://en.wikipedia.org/wiki/Microsoft_InfoPath"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Microsoft_InfoPath"
	target="_blank" rel="noopener"
	&gt;
	InfoPath
&lt;/a&gt; forms. Again, I had little need to
&lt;em&gt;create&lt;/em&gt; anything. I could just glue together some stuff and call it a day. The
Real Programmers™ did the heavy lifting and I just did make-work to pay
the bills.&lt;/p&gt;
&lt;p&gt;Now that I&amp;rsquo;m older, I fancy myself as something &lt;em&gt;more&lt;/em&gt; than an IT Professional.
I know enough about a couple of programming languages that I get the &lt;em&gt;gist&lt;/em&gt; of
it, but not really the whole story. I can write half-way decent Bash scripts,
Lua and if push-comes-to-shove Python. I also can dust off my old webadmin hat
and write some HTML/CSS and JS, but not to any real proficiency. I feel like I&amp;rsquo;m
faking it.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t the so-called &lt;a
	href="https://en.wikipedia.org/wiki/Impostor_syndrome"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Impostor_syndrome"
	target="_blank" rel="noopener"
	&gt;
	Impostor Syndrome
&lt;/a&gt;, because I&amp;rsquo;m not doing this
professionally, I&amp;rsquo;m doing this on my own. I find that despite being able to move
the bits around, I can&amp;rsquo;t seem to make anything creative flow out of me. No
impetus to create, even if I feel like that I might be able to, no &lt;em&gt;itch&lt;/em&gt; to
scratch on my own, even though I see 100 stupid &lt;a
	href="https://en.wikipedia.org/wiki/Paper_cut_bug"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Paper_cut_bug"
	target="_blank" rel="noopener"
	&gt;
	paper-cut issues
&lt;/a&gt; every day.
I don&amp;rsquo;t know if what I am is just incredibly lazy, tolerant or …
defective. I buy and collect all the tooling to make me productive at any number
of things. Coding, video editing, photo editing and more. I have no &lt;em&gt;use&lt;/em&gt; for
these because I&amp;rsquo;ve got no creative desire. No drive that pushes me past the
dicking around part of learning to code and into the &amp;ldquo;wow this is really useful,
what if I could make this thing to fix that thing that I don&amp;rsquo;t like!&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Some people might call this &amp;ldquo;being content.&amp;rdquo; It bothers me, though. Maybe
because I surround myself with people who program, because I like the programs
they use, like Emacs. I try to fashion myself into a more complex individual
that &lt;em&gt;could&lt;/em&gt; be a programmer, but in reality is just some guy who is better than
average at a bunch of stuff, but doesn&amp;rsquo;t really excel in anything individually.&lt;/p&gt;
&lt;p&gt;It frustrates me to be this way. I feel like I &lt;em&gt;could&lt;/em&gt; do more, but then I hit
a wall and nothing I do makes any sense. Like there is an artificial barrier
keeping me from moving on. I don&amp;rsquo;t have any formal training as a programmer, and
while I could go back to school, I don&amp;rsquo;t think it&amp;rsquo;d be financially worth-while
for me and my family. I&amp;rsquo;m also wondering if that wouldn&amp;rsquo;t just underscore my
defectiveness.&lt;/p&gt;
&lt;p&gt;This feeling also seems to dovetail with some of the core concepts that I&amp;rsquo;ve
built up around myself. Linux is harder than using Windows or macOS. Self-
hosting is harder than managed hosting. Using &lt;code&gt;hugo&lt;/code&gt; is harder than WordPress.
Setting up Exchange Online is more work than just getting the Office 365 bundle
for families. Emacs is harder to use than Notepad; Every choice I make seems to
revolve around doing things harder than they need to be because I want to be
that person that is knowledgeable and &amp;ldquo;in control&amp;rdquo;. I use plain-text because its
&amp;ldquo;more reliable&amp;rdquo; when I have no experience with issues in any other format.
Nothing I do makes anyone around me happier, or makes them trust me more, or
has them rely on my knowledge more. If anything, it drives them away because
they don&amp;rsquo;t understand the issues, or I&amp;rsquo;m seen as an extreme viewpoint.&lt;/p&gt;
&lt;p&gt;I feel like, when it comes to computers, I&amp;rsquo;m like that stanza from &lt;a
	href="https://en.wikipedia.org/wiki/Creep_%28Radiohead_song%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Creep_%28Radiohead_song%29"
	target="_blank" rel="noopener"
	&gt;
	Radiohead&amp;rsquo;s
&amp;ldquo;Creep&amp;rdquo;
&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;hellip; but I&amp;rsquo;m a creep&lt;br&gt;
I&amp;rsquo;m a weirdo&lt;br&gt;
What the hell am I doing here?&lt;br&gt;
I don&amp;rsquo;t belong here&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maybe I should stop trying to be something I&amp;rsquo;m not. If I do that, though, then
what &lt;em&gt;am I&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-02 Sometimes, I Feel Defective"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Apple's Terminal.app Has a Neat Feature</title><link>https://degruchy.org/2025/05/02/apples-terminal.app-has-a-neat-feature/</link><pubDate>Fri, 02 May 2025 13:31:37 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/02/apples-terminal.app-has-a-neat-feature/</guid><description>
&lt;p&gt;I wanted to see if I was missing out on anything in the built-in Apple Terminal
app over using GhosTTY, which is really fast. It turns out, yes, there are some
neat &lt;a
	href="https://support.apple.com/guide/terminal/display-or-hide-the-alternate-screen-trmld1f46097/2.14/mac/15.4.1"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://support.apple.com/guide/terminal/display-or-hide-the-alternate-screen-trmld1f46097/2.14/mac/15.4.1"
	target="_blank" rel="noopener"
	&gt;
	features that other terminals don&amp;rsquo;t have, like &amp;ldquo;Alternate Screens&amp;rdquo;
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Basically, your standard screen is the log of commands and the returned text, if
any. Then, if you run any interactive applications, like &lt;code&gt;less&lt;/code&gt; or &lt;code&gt;nano&lt;/code&gt;, then
&lt;em&gt;that&lt;/em&gt; gets pushed to an alterative screen while you&amp;rsquo;re in the app. You can
toggle each of these screens with the &amp;ldquo;[Show|Hide] Alternate Screen&amp;rdquo; item in the
menu, or with the &lt;code&gt;⇧-⌘-↑&lt;/code&gt;/&lt;code&gt;⇧-⌘-↓&lt;/code&gt; keyboard commands.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-02 Apple's Terminal.app Has a Neat Feature"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>MAKA</title><link>https://degruchy.org/2025/05/02/maka/</link><pubDate>Fri, 02 May 2025 09:06:31 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/02/maka/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/05/02/maka/maka.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/05/02/maka/maka.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/05/02/maka/maka.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/05/02/maka/maka.jpg"
 alt="I mean, just look at that tummy!" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;A Much Improved CNN Homepage&lt;/h4&gt;&lt;p&gt;I mean, just &lt;em&gt;look&lt;/em&gt; at that tummy!&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;From the &lt;a
	href="https://tomroyal.com/make-america-kittens-again-faq/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://tomroyal.com/make-america-kittens-again-faq/"
	target="_blank" rel="noopener"
	&gt;
	Make America Kittens Again
&lt;/a&gt; addon.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-02 MAKA"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Always BeOrg-anizing</title><link>https://degruchy.org/2025/05/01/always-beorg-anizing/</link><pubDate>Thu, 01 May 2025 15:57:06 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/05/01/always-beorg-anizing/</guid><description>

&lt;p&gt;
One of the challenges of being someone who &lt;strong&gt;really&lt;/strong&gt; likes Emacs is
accepting that, in today’s world, interacting with most people means
dealing with calendar appointments via email—usually through Outlook
or iOS/macOS Mail. That makes it difficult to fully embrace
Org-mode’s excellent scheduling and organizational features. There are
a number of iOS apps (of varying quality) that can open org files, but
most simply let you edit the files directly, leaving calendars and
tasks to be handled by separate apps.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
Enter Beorg
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
&lt;a href="https://www.beorgapp.com/"&gt;Beorg&lt;/a&gt; for iOS works a bit differently. It&amp;#39;s an &lt;a href="http://orgmode.org"&gt;Org-mode&lt;/a&gt; tool designed
for working with org files—especially calendars, appointments, and
tasks. What makes it interesting is that it also syncs your org-mode
calendar entries and tasks with the iOS system calendar and
reminders. So if you schedule an appointment in your org file, Beorg
can publish it to your calendar. That’s pretty neat.&lt;/p&gt;
&lt;p&gt;
Even better, this isn’t one-way sync. Beorg can pull in existing
calendar data and create a new org file with the relevant information,
which you can then include in your Org agenda view.&lt;/p&gt;
&lt;p&gt;
While this doesn’t entirely solve the problem of sending calendar
invites from Emacs via Org, it &lt;strong&gt;does&lt;/strong&gt; smooth out some of the rough
edges that made calendar management in Emacs a bit clunky. I&amp;#39;m
honestly surprised there isn’t a full-blown connector app that runs on
your phone, watches your org files, and updates the calendar or sends
invites using native system tools. I would have &lt;strong&gt;loved&lt;/strong&gt; that back when
I was managing email with &lt;code&gt;notmuch&lt;/code&gt; and limping along with &lt;code&gt;diary&lt;/code&gt; and
&lt;code&gt;appt&lt;/code&gt;, juggling items between Emacs and my online calendar.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
Captee and Scrim
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;
Beyond calendar support, I’ve recently come across two additional
macOS tools that make working with Org-mode more enjoyable: Captee and
Scrim.&lt;/p&gt;
&lt;p&gt;
I often find myself collecting links—articles to read, tools to try,
ideas to revisit. Usually this involves copying the URL from the
address bar or using the share menu, but those methods feel
lacking. They don’t capture the page title, and certainly not my
thoughts at the time.&lt;/p&gt;
&lt;p&gt;
Captee helps here. It gathers the key metadata (like the page title),
allows you to add notes, and exports the result in either Markdown or
Org-mode format. You can copy that data to the clipboard or, with the
help of Scrim, send it directly into Emacs using &lt;code&gt;org-protocol://&lt;/code&gt;,
triggering an Org-mode capture template and storing it automatically.&lt;/p&gt;
&lt;p&gt;
In an ideal world, we wouldn’t need workarounds like this. But given
the sandboxing on macOS, I appreciate that these tools exist—and
honestly, I’d rather deal with a little friction in exchange for
stronger app isolation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
Beorg Problems
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;p&gt;
That said, I’ve run into a few issues with Beorg.&lt;/p&gt;
&lt;p&gt;
First, syncing via iCloud is inconsistent—it doesn’t update as
frequently as I’d like. Second, Emacs on macOS can be finicky when
editing files inside the iCloud folder. The latter is probably
solvable with some configuration or symbolic links, but the syncing
delay is trickier.&lt;/p&gt;
&lt;p&gt;
Still, these are relatively small trade-offs if your goal is to keep
using Emacs and Org-mode for your calendar, while remaining compatible
with the rest of the world’s scheduling tools.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
Conclusion
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;p&gt;
While I think I prefer BBEdit for doing edits to files on macOS, Emacs
is always going to be my home. It&amp;#39;s so much more extensible and
functional. With these tools, though, I can say that being an Emacs
user on macOS is &lt;strong&gt;miles&lt;/strong&gt; better than it is on Windows or, in some
cases, Linux.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-05-01 Always BeOrg-anizing"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What. The. Fuck.</title><link>https://degruchy.org/2025/04/30/what.-the.-fuck./</link><pubDate>Wed, 30 Apr 2025 21:58:18 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/30/what.-the.-fuck./</guid><description>
&lt;p&gt;Who&amp;hellip;? I don&amp;rsquo;t &lt;a
	href="https://www.whitehouse.gov/wire/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.whitehouse.gov/wire/"
	target="_blank" rel="noopener"
	&gt;
	understand the point of this
&lt;/a&gt;. Actually, I do, but
I don&amp;rsquo;t believe it. The sharks, they were jumped. The whole thing is
off the rails.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-30 What. The. Fuck."&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Satya Nadella: 'The Internet Was Born on Windows' 🙄</title><link>https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/</link><pubDate>Wed, 30 Apr 2025 15:23:01 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/</guid><description>
&lt;p&gt;Jump to 32:59 to hear the idiocy.&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=FZ-RZ0dKO8o"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/satya-web-born-windows.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/satya-web-born-windows.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/satya-web-born-windows.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/30/satya-nadella-the-internet-was-born-on-windows/satya-web-born-windows.jpg"
 alt="Two idiots on stage" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Sure it was...&lt;/h4&gt;&lt;p&gt;Pay no attention to CERN and the DOD.&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a
	href="https://www.home.cern/science/computing/birth-web"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.home.cern/science/computing/birth-web"
	target="_blank" rel="noopener"
	&gt;
	Yeah, totally true.
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-30 Satya Nadella: 'The Internet Was Born on Windows' 🙄"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Volonaut Airbike</title><link>https://degruchy.org/2025/04/30/volonaut-airbike/</link><pubDate>Wed, 30 Apr 2025 08:31:23 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/30/volonaut-airbike/</guid><description>
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=n1a212a3HoU"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/30/volonaut-airbike/volonaut.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/30/volonaut-airbike/volonaut.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/30/volonaut-airbike/volonaut.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/30/volonaut-airbike/volonaut.jpg"
 alt="I&amp;rsquo;ve waited so long for this!" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;The Future is Now&lt;/h4&gt;&lt;p&gt;I&amp;rsquo;ve waited so long for this!&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This is amazing! I&amp;rsquo;d like to ride one. But never have people ride them ever. So
dangerous.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-30 Volonaut Airbike"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>No one cares</title><link>https://degruchy.org/2025/04/29/no-one-cares/</link><pubDate>Tue, 29 Apr 2025 12:58:22 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/29/no-one-cares/</guid><description>
&lt;p&gt;The world is on fire. The foxes have taken over and are gutting the hen house
and the hens, the sheep and the farmer seem to only stand there, watching it all
happen. Angry, sure. But like hopes and prayers, that means &lt;em&gt;fuck all&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I think that I want to leave. I don&amp;rsquo;t know where to go. I don&amp;rsquo;t know what to do.
I &lt;em&gt;know&lt;/em&gt; that is what they want. I don&amp;rsquo;t care anymore. Let them have it. Burn it
all down, if you want. Just leave me alone. I don&amp;rsquo;t want to be associated with
this. I want to be somewhere where we &lt;em&gt;don&amp;rsquo;t&lt;/em&gt; elect outright thugs, shysters and
frauds into the most powerful positions of power. I want to be somewhere where
people don&amp;rsquo;t &lt;em&gt;want&lt;/em&gt; to rule over me with authority, where I can live a
relatively uneventful life, culminating in an uneventful death, hopefully
surrounded by family and friends. I will not enter any textbooks, not even as a
footnote or an aside. I don&amp;rsquo;t want any of that. I want the psychopaths and
grifters of this world to shut the fuck up and leave me alone.&lt;/p&gt;
&lt;p&gt;All I see is the world descending into darkness, and realizing that for far too
long, many of the world&amp;rsquo;s processes had a single point of failure. And we&amp;rsquo;re
failing.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-29 No one cares"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>macOS Runs iOS Apps</title><link>https://degruchy.org/2025/04/28/macos-runs-ios-apps/</link><pubDate>Mon, 28 Apr 2025 16:16:46 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/28/macos-runs-ios-apps/</guid><description>
&lt;p&gt;I had no idea that macOS was able to run iOS and iPad apps if you have an
M-series processor. Very cool. I&amp;rsquo;m able to run the Bandcamp iOS app on my
desktop without having to do anything different. While I&amp;rsquo;d rather have a purpose
built app, this works really well.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/28/macos-runs-ios-apps/bandcamp-ios-macos.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/28/macos-runs-ios-apps/bandcamp-ios-macos.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/28/macos-runs-ios-apps/bandcamp-ios-macos.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/28/macos-runs-ios-apps/bandcamp-ios-macos.jpg" width="640"&gt;
 &lt;/picture&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-28 macOS Runs iOS Apps"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Thai Coffee</title><link>https://degruchy.org/2025/04/28/thai-coffee/</link><pubDate>Mon, 28 Apr 2025 14:01:31 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/28/thai-coffee/</guid><description>
&lt;p&gt;One of the assistants in our C-suite gave me one of these to try.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/28/thai-coffee/thai-coffee.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/28/thai-coffee/thai-coffee.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/28/thai-coffee/thai-coffee.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/28/thai-coffee/thai-coffee.jpg"
 alt="A picture of a Thai Instant Coffee pack" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Thai Instant Coffee&lt;/h4&gt;&lt;p&gt;Here goes nothing&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-28 Thai Coffee"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Goodbye, Fosstodon</title><link>https://degruchy.org/2025/04/28/goodbye-fosstodon/</link><pubDate>Mon, 28 Apr 2025 09:16:44 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/28/goodbye-fosstodon/</guid><description>
&lt;p&gt;One of the founders of &lt;a
	href="https://fosstodon.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fosstodon.org"
	target="_blank" rel="noopener"
	&gt;
	Fosstodon
&lt;/a&gt;, &lt;a
	href="https://kevquirk.com/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://kevquirk.com/"
	target="_blank" rel="noopener"
	&gt;
	Kev
&lt;/a&gt;, &lt;a
	href="https://kevquirk.com/blog/my-thoughts-on-the-fosstodon-drama"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://kevquirk.com/blog/my-thoughts-on-the-fosstodon-drama"
	target="_blank" rel="noopener"
	&gt;
	is
leaving the organization over issues with drama and content moderation
issues
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have to say, I&amp;rsquo;m sad to see the state of affairs at Fosstodon in such
disarray. For all of us who are still uninitiated into the drama, there some
scant information from &lt;a
	href="https://coreysnipes.com/thoughts-on-fosstodon.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://coreysnipes.com/thoughts-on-fosstodon.html"
	target="_blank" rel="noopener"
	&gt;
	Corey Snipes
&lt;/a&gt; on the issue. Though, I&amp;rsquo;m certainly not
up to date on much of what he&amp;rsquo;s talking about, one thing stands out:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He shared that he has a long history as a privacy advocate and FOSS and
contributor, and he feels he&amp;rsquo;s being unfairly characterized as a nazi for
expressing certain political views. He also had very reassuring things to say
about the neutrality and fairness of the fosstodon moderation process,
essentially that all moderation decisions require concensus among mods and
that all mods recuse themselves from any decisions where they have a vested
interest. Basically, his politics have never been a factor in any of the
moderation decisions there, nor could they be. Importantly, he also shared
that he has stepped down as a mod and would also be deleting his account.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems like more of the &lt;a
	href="https://degruchy.org/2025/01/22/not-so-social-media/"
	
	&gt;
	political backlash and infighting that I had seen on
Micro.blog
&lt;/a&gt; earlier this year. The same stupid bullshit that made me get over
the relative mental barrier to migrating to Hugo from my fully-static-html blog.
Silver linings and all that. I feel like people are getting hyper-polarized and
trying to find out who their real allies are, now that people are all mask-off
with anti-… well, everything.&lt;/p&gt;
&lt;p&gt;I really don&amp;rsquo;t know what was said, and who was involved, but I honestly don&amp;rsquo;t
care. Drama is drama. People are full of it, and when in large social arenas,
people are more likely to spill it everywhere they can. I have to stay away from
those places because I know I don&amp;rsquo;t react well to it. &lt;a
	href="https://fosstodon.org/@Gina/114415525599424591"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fosstodon.org/@Gina/114415525599424591"
	target="_blank" rel="noopener"
	&gt;
	It seems like lots of
people don&amp;rsquo;t react well to it, too
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The time I had on Fosstodon, while not always great, broadened my OSS knowledge
and got me in touch with several key figures in the scene. Not that I&amp;rsquo;ve &lt;em&gt;done&lt;/em&gt;
anything with those contacts, but it&amp;rsquo;s nice to know that I was able to talk to
and interact with current-day luminaries. It&amp;rsquo;s nice to know they&amp;rsquo;re human, too.
For that I thank Kev, Mike and the moderation team (of whom I believe my time
predated any &lt;em&gt;formal&lt;/em&gt; team) for facilitating a great place where I could connect
with lots of like-minded individuals.&lt;/p&gt;
&lt;p&gt;I wish everyone involved with the project good luck and safe travels. I hope
that Fosstodon stays active and vibrant, but if it doesn&amp;rsquo;t, then I&amp;rsquo;m glad to
have been there when it was. I even still have the stickers.&lt;/p&gt;
&lt;p&gt;Be kind to one another.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-28 Goodbye, Fosstodon"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sunday Support</title><link>https://degruchy.org/2025/04/27/sunday-support/</link><pubDate>Sun, 27 Apr 2025 09:18:43 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/27/sunday-support/</guid><description>
&lt;figure&gt;&lt;a href="https://www.threads.com/@jess.a.creates/post/DIxDxVIqAbQ"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/27/sunday-support/shark-fairy.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/27/sunday-support/shark-fairy.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/27/sunday-support/shark-fairy.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/27/sunday-support/shark-fairy.jpg"
 alt="Maybe, if you name is Ken, you could even be Ken-nuf" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;You Are Enough.&lt;/h4&gt;&lt;p&gt;Maybe, if you name is Ken, you could even be Ken-nuf
 &lt;cite class="fig-attribution"&gt;Source: &lt;a href="https://www.threads.com/@jess.a.creates"&gt;@jess.a.creates&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-27 Sunday Support"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Backblaze B2 Isn't Looking so Hot</title><link>https://degruchy.org/2025/04/26/backblaze-b2-isnt-looking-so-hot/</link><pubDate>Sat, 26 Apr 2025 16:30:22 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/26/backblaze-b2-isnt-looking-so-hot/</guid><description>
&lt;p&gt;A &lt;a
	href="https://www.morpheus-research.com/backblaze/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.morpheus-research.com/backblaze/"
	target="_blank" rel="noopener"
	&gt;
	recent, and I&amp;rsquo;d say pretty damning, report on the financial stability of
Backblaze
&lt;/a&gt; (and thus my off-site backups) has got me looking at alternatives.
I know that after the big loss in data that I had a couple of years ago has me
religiously checking and testing backups, I&amp;rsquo;m still nervous about blowing up my
monthly bills in off-site backup costs. While B2 has done well with me, I can&amp;rsquo;t
ignore potential issues with the company running those backup services. I have
~5tb of data to back up, and I &lt;em&gt;will not&lt;/em&gt; lose them again.&lt;/p&gt;
&lt;p&gt;This also should be a warning sign that I need to diversify my off-site
replications. To that end, I&amp;rsquo;m going to give Amazon Glacier (deep storage) a
spin. It seems like a pretty good deal, as the prices are sub-cent per GB and
while the access/retrieval times aren&amp;rsquo;t amazing, they &lt;em&gt;are&lt;/em&gt; however, cheap and
resilient. At &lt;code&gt;$0.00099&lt;/code&gt; per GB, I&amp;rsquo;m looking at roughly $5 a month to store my
backups. Yes, that may grow over time, but I can look at pruning it once it gets
to be too much. The other nice thing is that my Synology NAS already has an app
to automate backing up to Glacier.&lt;/p&gt;
&lt;p&gt;I looked at Tarsnap and Rsync, but both would be &lt;em&gt;signifigantly&lt;/em&gt; more costly to
off-site my backups to. While I would probably like their service &lt;em&gt;better&lt;/em&gt;, I
can&amp;rsquo;t justify the extra monthly cost.&lt;/p&gt;
&lt;p&gt;I won&amp;rsquo;t get rid of Backblaze just yet, but I want to hedge my bets here.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-26 Backblaze B2 Isn't Looking so Hot"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>At first, they came for the Palenstine protestors...</title><link>https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../</link><pubDate>Fri, 25 Apr 2025 11:52:10 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../</guid><description>
&lt;figure&gt;&lt;a href="https://xkcd.com/3081/"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../phd_timeline.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../phd_timeline.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../phd_timeline.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/25/at-first-they-came-for-the-palenstine-protestors.../phd_timeline.png"
 alt="watch: https://www.youtube.com/watch?v=JyypeEEOklM &amp;ndash; you should feel shame at this as an American" width="763"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:763px;"&gt;
 &lt;h4&gt;The Undesirables&lt;/h4&gt;&lt;p&gt;watch: &lt;a
	href="https://www.youtube.com/watch?v=JyypeEEOklM"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.youtube.com/watch?v=JyypeEEOklM"
	target="_blank" rel="noopener"
	&gt;
	https://www.youtube.com/watch?v=JyypeEEOklM
&lt;/a&gt; &amp;ndash; you should feel shame at this as an American&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-25 At first, they came for the Palenstine protestors..."&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Palantir and The US Government</title><link>https://degruchy.org/2025/04/23/palantir-and-the-us-government/</link><pubDate>Wed, 23 Apr 2025 10:34:44 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/23/palantir-and-the-us-government/</guid><description>
&lt;p&gt;I wanted to start this post off by being all panicky and &lt;a
	href="https://www.businesswire.com/news/home/20250417172108/en/Anthropic-Joins-Palantirs-FedStart-Program-to-Deploy-Claude-Application"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.businesswire.com/news/home/20250417172108/en/Anthropic-Joins-Palantirs-FedStart-Program-to-Deploy-Claude-Application"
	target="_blank" rel="noopener"
	&gt;
	saying that I&amp;rsquo;m
swearing off Claude because The Gub&amp;rsquo;ment shouldn&amp;rsquo;t be using the same AI
&lt;/a&gt; as I
do because it&amp;rsquo;s not cool anymore. Or something.&lt;/p&gt;
&lt;p&gt;Looking at this situation, I can say the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I &lt;em&gt;do not like&lt;/em&gt; Palantir. I mean, their name is from the &lt;a
	href="https://en.wikipedia.org/wiki/Palant%c3%adr"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Palant%c3%adr"
	target="_blank" rel="noopener"
	&gt;
	extremely
dangerous stones from Lord of The Rings
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m generally wary of private companies getting buddy-buddy with Government
agencies &lt;em&gt;as a rule&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m not sure this even matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sure, yes, buddying up with Palantir and the Government is not a good look to
me. But adding Claude to whatever services their running doesn&amp;rsquo;t seem like as
much of a &lt;em&gt;panic inducing&lt;/em&gt; event that will upend the very nature of the
relationship between people, technology and the surveillance state. That ship
sailed long before we had Claude, or ChatGPT. I&amp;rsquo;m not sure this is going to make
that shitberg any shittier.&lt;/p&gt;
&lt;p&gt;Plus, it&amp;rsquo;s not like the NSA, CIA, FBI, etc. &lt;em&gt;haven&amp;rsquo;t&lt;/em&gt; been using these tools
since long before we got access to them. I mean, the surveillance state didn&amp;rsquo;t
just pop out, fully formed from some politically connected stalker&amp;rsquo;s forehead.
We&amp;rsquo;ve had it for a &lt;em&gt;while&lt;/em&gt; now. Nothing about this article changes anything.&lt;/p&gt;
&lt;p&gt;If anything happens, I&amp;rsquo;m pretty sure that Claude-clones may end up fielding
calls from (understandably) very irate veterans and social security recipients
instead of a human who can help them. That and probably sifting through
mountains of profile data to discover &amp;lsquo;undesirables&amp;rsquo; that they could ship off to
&lt;del&gt;Club Med&lt;/del&gt;The United States of El Salvador Concentration Camp. &lt;a
	href="https://www.theverge.com/tech/652215/doge-cross-agency-master-database-sensitive-information"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.theverge.com/tech/652215/doge-cross-agency-master-database-sensitive-information"
	target="_blank" rel="noopener"
	&gt;
	Wait, they&amp;rsquo;re
already doing that without this
&lt;/a&gt;. Damn. Um, I dunno, probably some &lt;a
	href="https://en.wikipedia.org/wiki/Vibe_coding"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Vibe_coding"
	target="_blank" rel="noopener"
	&gt;
	vibe
coding
&lt;/a&gt; or something.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-23 Palantir and The US Government"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Oblivion Remake Released</title><link>https://degruchy.org/2025/04/22/oblivion-remake-released/</link><pubDate>Tue, 22 Apr 2025 14:41:28 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/22/oblivion-remake-released/</guid><description>
&lt;p&gt;Oh goddamn it.&lt;/p&gt;
&lt;p&gt;I. No! I don&amp;rsquo;t have time for this, Todd! You&amp;rsquo;re &lt;em&gt;supposed&lt;/em&gt; to be working on a
&lt;strong&gt;new&lt;/strong&gt; Elder Scrolls game, not making me buy Oblivion for $60. Again.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Apparently&lt;/em&gt; they&amp;rsquo;re using the Unreal Engine so you get shit like &lt;em&gt;this&lt;/em&gt;:&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://store.steampowered.com/app/2623190/The_Elder_Scrolls_IV_Oblivion_Remastered/"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/steam-deck-verified.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/steam-deck-verified.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/steam-deck-verified.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/22/oblivion-remake-released/steam-deck-verified.jpg"
 alt="Citation needed" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;We&amp;#39;ll See About _That_&lt;/h4&gt;&lt;p&gt;Citation needed&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I mean, &lt;em&gt;look at this shit&lt;/em&gt;:&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/oblivion-outdoors.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/oblivion-outdoors.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/oblivion-outdoors.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/22/oblivion-remake-released/oblivion-outdoors.jpg"
 alt="TODD! YOU WERE SUPPOSED TO BE WORKING ON A NEW ELDER SCROLLS" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Fuck You&lt;/h4&gt;&lt;p&gt;TODD! YOU WERE SUPPOSED TO BE WORKING ON A &lt;em&gt;NEW&lt;/em&gt; ELDER SCROLLS&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/sheogorath.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/sheogorath.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/22/oblivion-remake-released/sheogorath.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/22/oblivion-remake-released/sheogorath.jpg"
 alt="Cheese for everyone!" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;YES! HA HA! YES!&lt;/h4&gt;&lt;p&gt;Cheese for everyone!&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Todd, you sonavabitch. I&amp;rsquo;m &lt;em&gt;in&lt;/em&gt;. Though I&amp;rsquo;m currently working on Cassette Beasts
, so this&amp;rsquo;ll need to wait.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-22 Oblivion Remake Released"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Retrobatch Helper</title><link>https://degruchy.org/2025/04/21/retrobatch-helper/</link><pubDate>Mon, 21 Apr 2025 15:14:02 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/21/retrobatch-helper/</guid><description>
&lt;p&gt;While I don&amp;rsquo;t do a &lt;em&gt;lot&lt;/em&gt; of image editing, I &lt;a
	href="https://code.degruchy.org/wiki?name=ImageCreation"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://code.degruchy.org/wiki?name=ImageCreation"
	target="_blank" rel="noopener"
	&gt;
	do more than I think most of the
people I know do
&lt;/a&gt;. For the longest time, now, I&amp;rsquo;ve used scripts and hacks
to try and wrangle things like creating consistent thumbnails, featured image
sizes and even just memes. Getting consistent results is somewhat flakey, and
it seems like every time I turn around, my scripts break in new and
interesting&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; ways.&lt;/p&gt;
&lt;p&gt;So, because I&amp;rsquo;m exploring this brave new-old world of macOS applications that I
wasn&amp;rsquo;t previously aware of. I decided to give &lt;a
	href="https://flyingmeat.com/retrobatch/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://flyingmeat.com/retrobatch/"
	target="_blank" rel="noopener"
	&gt;
	Retrobatch
&lt;/a&gt; a try. Retrobatch
is by the same folks (Flying Meat Software) that make the excellent Acorn image
editor that I had a copy of in the past. The main thrust of the application is
to setup a pipeline of nodes that act on images fed into it by various means.
These nodes can be configured further to alter the image in several ways and
can even split off into multiple branches for alternate streams.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_blog_image.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_blog_image.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_blog_image.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_blog_image.jpg"
 alt="A picture of Retrobatch&amp;#39;s node editor window showing a workflow" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Making a simple blog post image&lt;/h4&gt;&lt;p&gt;Workflows can be pretty simple&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;These workflows can even shell out to scripts, incorporate AppleScript, download
files and much more. You can really get into lots of processing with this tool,
but I find where it &lt;em&gt;really&lt;/em&gt; shines is when you create &amp;ldquo;Droplets&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Droplets are a simple app wrapper around the Retrobatch workflow tool. It allows
you to drop images on the app and have it automatically process images without
having to open the app, then the workflow, then adding images to process. This
makes it &lt;em&gt;much&lt;/em&gt; easier to integrate into a blogging workflow by giving you a
quick location to just drop a bunch of images and have stuff ready made for your
post come out the other end.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_shell_scripts.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_shell_scripts.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_shell_scripts.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_shell_scripts.jpg"
 alt="A picture of a shell script, open in BBEdit" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Shell scripts can be called as a part of a workflow&lt;/h4&gt;&lt;p&gt;Shell Scripts in Workflows&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Adding in shell scripts allow you to expand your world into Unix territory and
the array of tools there, like the venerable ImageMagick or FFMpeg or tools like
&lt;code&gt;rsync&lt;/code&gt; to upload them to a server after you drop the results from the pipeline
into a temp folder. While, yes, some of this could be easily replicated in
scripts alone, you end up having to wrangle Bash or Fish as a language, and
adding new features or steps requires yet more implementation and the tendency
to break or trip you up with common pitfalls.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s not all sunshine and rainbows, though. Creating mutli-branch workflows kind
of requires you to enable the advanced linking feature to drag connections
manually.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_manual.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_manual.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_manual.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_manual.jpg"
 alt="A picture of the Retrobatch document properties dialog" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Enabling Manual Connections can be a Drag&lt;/h4&gt;&lt;p&gt;Though it gives you much more control&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The nodes also don&amp;rsquo;t really give you a whole lot of information on what they&amp;rsquo;re
configured to do, leaving the only option to color-code cloned nodes to identify
what one does what. The &amp;ldquo;Workflow Notes&amp;rdquo; node is just sad. This could have been
a sidebar or window or some other UI feature that lets you &lt;em&gt;see&lt;/em&gt; it while
working in the editor. You also can&amp;rsquo;t quickly set color from anywhere except
from the three dot menu on each node, making identifying nodes that much harder
to organize.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_droplets.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_droplets.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_droplets.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_droplets.jpg" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Droplets&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;There is also the image of format support. Retrobatch can &lt;a
	href="https://flyingmeat.com/retrobatch/docs-2.0/fileformatsupport/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://flyingmeat.com/retrobatch/docs-2.0/fileformatsupport/"
	target="_blank" rel="noopener"
	&gt;
	read many different
formats
&lt;/a&gt;, it&amp;rsquo;s not as rosy on the &lt;em&gt;writing&lt;/em&gt; part. It seems like a
hugely limited set of formats for a tool that is supposed to slice and dice
images. &lt;a
	href="https://www.lemkesoft.de/en/products/graphicconverter"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.lemkesoft.de/en/products/graphicconverter"
	target="_blank" rel="noopener"
	&gt;
	GraphicConverter
&lt;/a&gt; supports way more formats, and can batch &lt;em&gt;save&lt;/em&gt;
as them, but it has no processing pipeline. I feel like this could be a strong
match to merge programs&amp;hellip;&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_make_grid.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_make_grid.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_make_grid.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/21/retrobatch-helper/retrobatch_make_grid.jpg" width="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Making Grids&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Anyway, one last thing that Retrobatch does that I&amp;rsquo;ve started using is the
&amp;ldquo;Image Grid&amp;rdquo; node. This takes images and creates a single image that has all the
included images as tiles on it. This seems to work best if you pre-shrink/crop
each item beforehand, but with a little finagling, it works really well!&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Read: frustrating.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-21 Retrobatch Helper"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kagi is Really Great</title><link>https://degruchy.org/2025/04/20/kagi-is-really-great/</link><pubDate>Sun, 20 Apr 2025 10:34:13 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/20/kagi-is-really-great/</guid><description>
&lt;p&gt;I&amp;rsquo;ve been a paying Kagi user for nearly &lt;em&gt;two years&lt;/em&gt;, now. September 13&lt;sup&gt;th&lt;/sup&gt;
 will be my official start date. I have to say, I&amp;rsquo;ve been
&lt;em&gt;extremely&lt;/em&gt; pleased with the service. Not only is the search functionality
surfacing stuff I actually &lt;em&gt;want&lt;/em&gt;, but I also get to filter out the noise and
promote what I generally like to see regardless of the underlying results. That
means I pin things like Wikipedia, StackOverflow and other sites to the top of
the list to get what I want, faster. I also can demote or outright block things,
like Wikia/Fandom links, Pinterest, Instagram, TikTok and other social media
posts.&lt;/p&gt;
&lt;p&gt;If I &lt;em&gt;do&lt;/em&gt; come across something that my personalized results may be obscuring, I
can just click the link at the top that changes the search so that I see
unfiltered results. This is helpful when I&amp;rsquo;m doing searches, like
&amp;ldquo;The Daily Show&amp;rdquo;. I don&amp;rsquo;t need the Wikipedia entry, I am likely looking to get
the YouTube page (which has reduced visibility in my personalized results). This
feels like a great trade-off. For the vast majority of my searches, I have some
sites that I strongly prefer. In certain situations, I don&amp;rsquo;t need it, and turn
it off for that result listing. It&amp;rsquo;s &lt;em&gt;very&lt;/em&gt; rare that I need to use the &lt;code&gt;!bang&lt;/code&gt;
features anymore. I used to need to jump out to Google or DDG, but I don&amp;rsquo;t find
that they&amp;rsquo;re as useful as the results I&amp;rsquo;m getting from Kagi directly.&lt;/p&gt;
&lt;p&gt;With the addition to the FastGPT and Summarizer, it seems like a great deal with
this already. However, now I&amp;rsquo;m getting access to the Assistant, which is like
a pre-paid token to many different LLM models from different companies through
one interface. While I don&amp;rsquo;t &lt;em&gt;need&lt;/em&gt; such tools, it&amp;rsquo;s great that I have access to
them via my subscription, even if they&amp;rsquo;re still limited in volume.&lt;/p&gt;
&lt;p&gt;Overall, there is no way that I would switch back to Google, and DDG and Bing
feel like pale imitations of Kagi.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-20 Kagi is Really Great"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hashtag: CaturdayGoals</title><link>https://degruchy.org/2025/04/19/hashtag-caturdaygoals/</link><pubDate>Sat, 19 Apr 2025 16:22:55 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/19/hashtag-caturdaygoals/</guid><description>
&lt;ul class="caturday-goals gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday1.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday1_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday1_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday1_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday1_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday2.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday2_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday2_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday2_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday2_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday3.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday3_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday3_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday3_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday3_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday4.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday4_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday4_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday4_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/19/hashtag-caturdaygoals/ellie-caturday4_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Nothing like lazing around on a Caturday&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-19 Hashtag: CaturdayGoals"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>J.K. Rowling is a Bitter Troll</title><link>https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/</link><pubDate>Fri, 18 Apr 2025 16:09:47 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/</guid><description>
&lt;figure&gt;&lt;a href="https://bsky.app/profile/karaswisher.bsky.social/post/3ln2lvb3ipc23"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/jk-smoking-trans.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/jk-smoking-trans.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/jk-smoking-trans.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/jk-smoking-trans.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/18/j.k.-rowling-is-a-bitter-troll/jk-smoking-trans.jpg"
 alt="A disfigured witch choking down a cigar looking like a trollip" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Voldomort at Least had Smooth Skin&lt;/h4&gt;&lt;p&gt;Please, feel free to light your own hair on fire instead of the next cigar you witch.&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-18 J.K. Rowling is a Bitter Troll"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Hugo Post and Folder Hammerspoon</title><link>https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/</link><pubDate>Fri, 18 Apr 2025 13:29:41 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/</guid><description>
&lt;p&gt;I took a crack at making a new Hammerspoon Lua script. When I have posts that
contain images (like this one) or other files, in Hugo you&amp;rsquo;d create them in a
folder like &lt;code&gt;content/posts/2025-04-18_simple-title/index.md&lt;/code&gt;. That would then
allow you to drop things like associated images, videos and other files &lt;em&gt;with&lt;/em&gt;
the post itself, keeping it as a self-contained unit.&lt;/p&gt;
&lt;p&gt;The problem is: Any time I wanted to &lt;em&gt;do&lt;/em&gt; that meant I had to open Finder or
GhosTTY, navigate to my Projects folder, find my site folder, navigate into
&lt;code&gt;content/posts&lt;/code&gt; and then make a new directory. &lt;em&gt;THEN&lt;/em&gt; I would have to start a
new &lt;code&gt;index.md&lt;/code&gt; file elsewhere and then save it in to that directory. So much
tedium! Then I got the bright idea that I have Hammerspoon &lt;em&gt;and&lt;/em&gt; I&amp;rsquo;ve been
&lt;a
	href="https://degruchy.org/2025/04/18/plain-hyper-key/"
	
	&gt;
	looking for more ideas on how to use the &lt;code&gt;hyper&lt;/code&gt; key
&lt;/a&gt;. To the &lt;del&gt;bat-cave&lt;/del&gt;
BBEdit!&lt;/p&gt;
&lt;p&gt;After a bit of searching, I found a &lt;a
	href="https://github.com/james2doyle/lit-slugify/blob/master/init.lua"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/james2doyle/lit-slugify/blob/master/init.lua"
	target="_blank" rel="noopener"
	&gt;
	simple enough to understand &amp;ldquo;slugify&amp;rdquo; lua
script
&lt;/a&gt;, and after a bit of noodling through the docs, then asking Claude to
critique my work, I had a pretty usable script! Behold!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- Slugify function to convert text to URL-friendly format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Slugify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;nil&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Convert to lowercase&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.lower&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Replace spaces with hyphens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%s+&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Remove special characters&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;[^%w%-]&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Remove consecutive hyphens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%-+&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Remove leading and trailing hyphens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;^%-&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;string.gsub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;%-$&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;return&lt;/span&gt; &lt;span class="n"&gt;slug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="kr"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createHugoPostFolder&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Get the current date in YYYY-MM-DD format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;currentDate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os.date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;%Y-%m-%d&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Prompt user for post name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;button&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;postName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hs.dialog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;textPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 	&lt;span class="s2"&gt;&amp;#34;Create a new Hugo Post?&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;-- title&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 	&lt;span class="s2"&gt;&amp;#34;Enter the title for your new post:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;-- message&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 	&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;-- default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 	&lt;span class="s2"&gt;&amp;#34;Create&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cancel&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;-- buttons&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;postName&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;nil&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;postName&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;button&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Cancel&amp;#34;&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Slugify the post name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;slug&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Slugify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;postName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Create folder path&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;hugoContentPath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os.getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;HOME&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/Projects/degruchy.org/content/posts/&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;folderName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;currentDate&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;_&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;slug&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;fullPath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hugoContentPath&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;folderName&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Create the directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;success&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;errorMessage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hs.fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fullPath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;success&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hs.alert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Created folder: &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;folderName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;-- Optionally create an index.md file in the folder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kd"&gt;local&lt;/span&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;io.open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fullPath&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/index.md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;w&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;---&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;title: &lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;postName&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;date: &amp;lt;# Date #&amp;gt; &lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;draft: true&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;---&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Your content here.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;indexFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;hs.alert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Error creating folder: &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;..&lt;/span&gt; &lt;span class="n"&gt;errorMessage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;hs.hotkey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cmd&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;alt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;shift&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ctrl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;N&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;createHugoPostFolder&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, I can press &lt;code&gt;hyper&lt;/code&gt;+&lt;code&gt;n&lt;/code&gt;, get prompted for a new post title, where I can
write a normal title with capitals and more, and have an appropriately named
folder and &lt;code&gt;index.md&lt;/code&gt; file created for me, in the right spot and ready for me to
fill it with stuff!&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/hammerspoon-hugo-post.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/hammerspoon-hugo-post.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/hammerspoon-hugo-post.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/hammerspoon-hugo-post.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/18/new-hugo-post-and-folder-hammerspoon/hammerspoon-hugo-post.jpg"
 alt="A picture of a Hammerspoon dialog window asking me for a title"&gt;
 &lt;/picture&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-18 New Hugo Post and Folder Hammerspoon"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Never Thought I'd Actually Use This Meme</title><link>https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/</link><pubDate>Fri, 18 Apr 2025 12:16:34 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/</guid><description>
&lt;figure&gt;&lt;a href="https://youtu.be/yjIJOfgVgu0?t=8881"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/new-friends-rss.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/new-friends-rss.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/new-friends-rss.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/new-friends-rss.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/18/i-never-thought-id-actually-use-this-meme/new-friends-rss.jpg"
 alt="I am no longer friends with Hacker News" width="640"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;I stopped associating with sycophants&lt;/h4&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-18 I Never Thought I'd Actually Use This Meme"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Plain Hyper Key</title><link>https://degruchy.org/2025/04/18/plain-hyper-key/</link><pubDate>Fri, 18 Apr 2025 10:20:52 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/18/plain-hyper-key/</guid><description>
&lt;p&gt;Back in the wild-west of computing, in the enlightened age of
&lt;a
	href="https://en.wikipedia.org/wiki/Lisp_machine"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Lisp_machine"
	target="_blank" rel="noopener"
	&gt;
	Lisp-machines
&lt;/a&gt;, a legendary keyboard that had an outsized influence on the
computing world around it arose. &lt;a
	href="https://en.wikipedia.org/wiki/Space-cadet_keyboard"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Space-cadet_keyboard"
	target="_blank" rel="noopener"
	&gt;
	The Space Cadet Keyboard
&lt;/a&gt;. Itself an
expansion upon the older &lt;a
	href="https://en.wikipedia.org/wiki/Knight_keyboard"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Knight_keyboard"
	target="_blank" rel="noopener"
	&gt;
	Knight Keyboard
&lt;/a&gt;. Their legends harken back to
a day when keyboards had to have buttons for functions that would be otherwise
unseen in a terminal environment. To that end, modifier keys were added to
expand on the available functions and commands that could be run in
applications. Notably: Super and Hyper. Super got co-opted by Microsoft in the
late 90&amp;rsquo;s early &amp;lsquo;00&amp;rsquo;s as the &amp;lsquo;Windows&amp;rsquo; key. Though the usage of the key was
never really super popular, and even today there are only a handful of
combinations that actually &lt;em&gt;do&lt;/em&gt; anything in Windows.&lt;/p&gt;
&lt;h2 id="now"&gt;Now&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;code&gt;hyper&lt;/code&gt;&lt;/em&gt; key, however, only really had interest to folks using the Lisp
Machines, and therefore Emacs users. Even today, the hyper key can still be
sent as a keycode to Emacs for use. While it doesn&amp;rsquo;t have any registered key
binding, it is just as valid as &lt;code&gt;super&lt;/code&gt;, &lt;code&gt;meta&lt;/code&gt;/&lt;code&gt;alt&lt;/code&gt; and &lt;code&gt;ctrl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;With the uptick in terminal-based program appreciation, folks have come up with
all manner of tools that can make use of the &lt;code&gt;hyper&lt;/code&gt; key. Even if you don&amp;rsquo;t
have an actual &lt;code&gt;hyper&lt;/code&gt; key, there are ways of mapping it. On macOS, there is
&lt;a
	href="https://hyperkey.app"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://hyperkey.app"
	target="_blank" rel="noopener"
	&gt;
	even an app that
&lt;/a&gt; that lets you bind various existing keyboard
shortcuts to emulate the key for use elsewhere.&lt;/p&gt;
&lt;h2 id="whats-plain-about-hyper"&gt;What&amp;rsquo;s Plain About Hyper?&lt;/h2&gt;
&lt;p&gt;Nothing! But I feel like I oversold this article with all the background info.
So, here&amp;rsquo;s how I use it in my workflow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paste as plain text: I have &lt;code&gt;hyper&lt;/code&gt;+&lt;code&gt;v&lt;/code&gt; (which is bound to &lt;code&gt;right-command&lt;/code&gt;)
to paste as stripped down plain text. This is useful when working with a lot
of plain text files, as I do frequently.&lt;/li&gt;
&lt;li&gt;Pasteboard history: I have &lt;code&gt;hyper&lt;/code&gt;+&lt;code&gt;c&lt;/code&gt; bound to showing Maccy&amp;rsquo;s clipboard
history window so I can select older items to then paste somewhere.&lt;/li&gt;
&lt;li&gt;Window snapping: I have &lt;code&gt;hyper&lt;/code&gt;+&lt;code&gt;&amp;lt;arrow&amp;gt;&lt;/code&gt; bound to snapping windows to
various configurations, making it easier to re-arrange things when needed,
without resorting to the mouse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;m sure there are more useful uses of the &lt;code&gt;hyper&lt;/code&gt; key waiting to be found, but
these are just some of the items I came up with in exploring the idea for a
more keyboard driven workflow.&lt;/p&gt;
&lt;p&gt;Do you have the &lt;code&gt;hyper&lt;/code&gt; key enabled and bound to something? If so, let me know
below! I&amp;rsquo;d love to have more ideas for being &lt;code&gt;hyper&lt;/code&gt;-efficient 😆&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-18 Plain Hyper Key"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>It's a Terrible Day for Reading</title><link>https://degruchy.org/2025/04/17/its-a-terrible-day-for-reading/</link><pubDate>Thu, 17 Apr 2025 17:05:43 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/17/its-a-terrible-day-for-reading/</guid><description>
&lt;p&gt;I&amp;rsquo;m learning all sorts of crappy things today:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My therapist is leaving the practice she worked at, so now I&amp;rsquo;m on my 4th
therapist in ~5 years. Now, I have to pay out of pocket to see them again,
or pick a new one.&lt;/li&gt;
&lt;li&gt;The &lt;a
	href="https://creativerly.com/the-dark-side-of-gumroad-how-sahil-lavingia-got-involved-with-doge/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://creativerly.com/the-dark-side-of-gumroad-how-sahil-lavingia-got-involved-with-doge/"
	target="_blank" rel="noopener"
	&gt;
	creator and owner
&lt;/a&gt; of &lt;a
	href="https://tedium.co/2025/04/06/gumroad-open-source-doge-drama/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://tedium.co/2025/04/06/gumroad-open-source-doge-drama/"
	target="_blank" rel="noopener"
	&gt;
	Gumroad
&lt;/a&gt; &lt;a
	href="https://en.wikipedia.org/wiki/Gumroad"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Gumroad"
	target="_blank" rel="noopener"
	&gt;
	is a DOGE-er
&lt;/a&gt;. Please
feel free to set your own hair on fire you jackass. I purchased stuff from
your store, you absolute bell-end.&lt;/li&gt;
&lt;li&gt;Big Data firm &lt;a
	href="https://www.404media.co/leaked-palantirs-plan-to-help-ice-deport-people/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.404media.co/leaked-palantirs-plan-to-help-ice-deport-people/"
	target="_blank" rel="noopener"
	&gt;
	Palatir is helping find immigrants and other &amp;lsquo;undesirables&amp;rsquo;
to help ICE deport them to legal-free gulags in El Salvador
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Elon Musk is being invited to talk at a &lt;a
	href="https://events.ycombinator.com/ai-sus"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://events.ycombinator.com/ai-sus"
	target="_blank" rel="noopener"
	&gt;
	YCombinator backed &amp;ldquo;AI Startup
School&amp;rdquo;
&lt;/a&gt;. Glad to see that greed really has no boundaries, even if
it means sucking the dick of &lt;a
	href="https://www.jpost.com/international/article-838444"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.jpost.com/international/article-838444"
	target="_blank" rel="noopener"
	&gt;
	a Nazi
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The US Government is trying it&amp;rsquo;s damnedest to break all the First Amendment
rules in stifling Harvard&amp;rsquo;s free speech and expression by &lt;a
	href="https://www.harvard.edu/president/news/2025/the-promise-of-american-higher-education/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.harvard.edu/president/news/2025/the-promise-of-american-higher-education/"
	target="_blank" rel="noopener"
	&gt;
	taking away their
government research funding
&lt;/a&gt;, &lt;a
	href="https://www.axios.com/2025/04/16/harvard-irs-tax-exempt-trump"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.axios.com/2025/04/16/harvard-irs-tax-exempt-trump"
	target="_blank" rel="noopener"
	&gt;
	trying to get the IRS to remove their
non-profit status
&lt;/a&gt; and now are &lt;a
	href="https://www.bbc.com/news/articles/c1egdy24v7po"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.bbc.com/news/articles/c1egdy24v7po"
	target="_blank" rel="noopener"
	&gt;
	trying to ban getting foreign students
for admissions
&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;There was a shooting at FSU injuring 6, killing 2. Thankfully, &lt;a
	href="https://www.nbcnews.com/news/us-news/live-blog/florida-state-university-active-shooter-rcna201756"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.nbcnews.com/news/us-news/live-blog/florida-state-university-active-shooter-rcna201756"
	target="_blank" rel="noopener"
	&gt;
	they caught
the cock- snot and I hope they throw the book at him
&lt;/a&gt;. A sheriff&amp;rsquo;s child,
too. &lt;a
	href="https://theonion.com/no-way-to-prevent-this-says-only-nation-where-this-r-1819576527/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://theonion.com/no-way-to-prevent-this-says-only-nation-where-this-r-1819576527/"
	target="_blank" rel="noopener"
	&gt;
	WHEN WILL WE TAKE GUN CONTROL AND MENTAL HEALTH SERIOUSLY
&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-17 It's a Terrible Day for Reading"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TIL: There are Religious and Political Investment Portfolios</title><link>https://degruchy.org/2025/04/17/til-there-are-religious-and-political-investment-portfolios/</link><pubDate>Thu, 17 Apr 2025 08:30:30 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/17/til-there-are-religious-and-political-investment-portfolios/</guid><description>
&lt;p&gt;For when you want to &lt;a
	href="https://finance.yahoo.com/quote/PRAY/profile/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://finance.yahoo.com/quote/PRAY/profile/"
	target="_blank" rel="noopener"
	&gt;
	pray away the gay, but still want that sweet, sweet money
lender income
&lt;/a&gt;. &lt;a
	href="https://acvetfs.com"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://acvetfs.com"
	target="_blank" rel="noopener"
	&gt;
	Or you&amp;rsquo;re trying to avoid &amp;ldquo;woke&amp;rdquo; companies
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What is &amp;ldquo;woke?&amp;rdquo;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Woke&amp;rdquo; is an adjective that originated in African-American English, and it has
been used since the 1930s to denote an awareness of racial prejudice and
discrimination&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a
	href="https://en.wikipedia.org/wiki/Woke"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Woke"
	target="_blank" rel="noopener"
	&gt;
	(source)
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oh. So it&amp;rsquo;s being aware that there are prejudices and and discrimination in the
system. So if you&amp;rsquo;re not woke, you&amp;rsquo;re a fucking biggot. For all the talk from
conservative groups about &amp;ldquo;lefties&amp;rdquo; being &amp;ldquo;snowflakes&amp;rdquo;, it feels awfully
interesting for them to turn around and be so butthurt about companies not being
gigantic assholes to minorities. Then again, if conservatives aren&amp;rsquo;t admitting
their kinks by demonizing them, then they&amp;rsquo;d say nothing at all.&lt;/p&gt;
&lt;p&gt;Eat shit.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-17 TIL: There are Religious and Political Investment Portfolios"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Looks Like Trump Finally got Around to Watching Parks and Rec</title><link>https://degruchy.org/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/</link><pubDate>Wed, 16 Apr 2025 16:34:02 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/</guid><description>
&lt;video poster="p-n-r-jail.jpg" controls preload="auto" width="100%" poster="/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/p-n-r-jail.jpg" playsinline class=""&gt;
 &lt;source src="https://degruchy.org/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/p-n-r-jail.webm" type="video/webm"&gt;
 &lt;source src="https://degruchy.org/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/p-n-r-jail.ogv" type="video/ogg"&gt;
 &lt;source src="https://degruchy.org/2025/04/16/looks-like-trump-finally-got-around-to-watching-parks-and-rec/p-n-r-jail.mp4" type="video/mp4"&gt;
 &lt;span&gt;&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;Though, I don&amp;rsquo;t think he took the right message from that episode&amp;hellip;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-16 Looks Like Trump Finally got Around to Watching Parks and Rec"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Re: Google is Winning on Every AI Front</title><link>https://degruchy.org/2025/04/14/re-google-is-winning-on-every-ai-front/</link><pubDate>Mon, 14 Apr 2025 14:31:28 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/14/re-google-is-winning-on-every-ai-front/</guid><description>
&lt;p&gt;&lt;a
	href="https://mjtsai.com/blog/2025/04/14/google-is-winning-on-every-ai-front/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://mjtsai.com/blog/2025/04/14/google-is-winning-on-every-ai-front/"
	target="_blank" rel="noopener"
	&gt;
	&amp;ldquo;Google is Winning on Every AI Front&amp;rdquo;
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let me preface this by saying that I&amp;rsquo;m sure the Gemini team is very proud of
their very real success, and I&amp;rsquo;m glad for them. It&amp;rsquo;s something to be lauded —
especially when the stakes around these sorts of things &lt;em&gt;are&lt;/em&gt; so high.&lt;/p&gt;
&lt;h2 id="what-does-winning-even-mean"&gt;What Does &amp;ldquo;Winning&amp;rdquo; Even &lt;em&gt;Mean&lt;/em&gt;?&lt;/h2&gt;
&lt;p&gt;However, I don&amp;rsquo;t actually &lt;em&gt;care&lt;/em&gt;. And by that I mean, &amp;ldquo;winning&amp;rdquo; is kind of a
meaningless metric. There was a time when Firefox was &amp;ldquo;winning,&amp;rdquo; too — look how
that turned out.&lt;/p&gt;
&lt;p&gt;The endless box-ticking and benchmarking just don&amp;rsquo;t sell me anymore. It could
write like Hemingway and reason like Einstein — but if all I&amp;rsquo;m ever using it for
is writing help, basic coding, and getting familiar with new topics, then
&amp;ldquo;winning&amp;rdquo; becomes very subjective.&lt;/p&gt;
&lt;h2 id="googles-track-record-still-matters"&gt;Google&amp;rsquo;s Track Record Still Matters&lt;/h2&gt;
&lt;p&gt;And then there&amp;rsquo;s the 800lb elephant in the room in the form of Alphabet (née
Google). Over the last few years, I haven&amp;rsquo;t felt like Google has the consumer&amp;rsquo;s
best interests at heart — to put it mildly. The ad-serving arm of the company is
&lt;a
	href="https://www.wheresyoured.at/the-men-who-killed-google/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.wheresyoured.at/the-men-who-killed-google/"
	target="_blank" rel="noopener"
	&gt;
	indisputably (if not directly) in charge of products
&lt;/a&gt; at Google. This makes
it &lt;em&gt;very&lt;/em&gt; concerning to use any of their products at all — let alone feeding
their LLM private questions and thoughts that will undoubtedly be funneled into
their ad system to build a larger profile of &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Google has a lot to prove &lt;em&gt;to me&lt;/em&gt; in order to earn my trust again — if that&amp;rsquo;s
even possible.&lt;/p&gt;
&lt;h2 id="we-already-have-excellent-models"&gt;We Already Have Excellent Models&lt;/h2&gt;
&lt;p&gt;So, good for them. I&amp;rsquo;m already quite happy with ChatGPT and Claude. Both have
helped me with everything I&amp;rsquo;ve asked of them — whether it&amp;rsquo;s writing advice, code
generation, or just being a sounding board for my inane rambling.&lt;/p&gt;
&lt;p&gt;I bet most people use them in much the same way. So, sure, if you&amp;rsquo;re doing some
very specific research, or need advanced reasoning or larger contexts, then
maybe — for those values of &amp;ldquo;best&amp;rdquo; — Gemini is your guy.&lt;/p&gt;
&lt;h2 id="how-to-win-in-my-eyes"&gt;How to &amp;ldquo;Win&amp;rdquo; in My Eyes&lt;/h2&gt;
&lt;p&gt;What would &lt;em&gt;really&lt;/em&gt; convince me that someone&amp;rsquo;s &amp;ldquo;winning&amp;rdquo; is if they built LLMs
that &lt;em&gt;aren&amp;rsquo;t&lt;/em&gt; covert tools for information gathering. Respecting users&amp;rsquo; data and
privacy goes a &lt;em&gt;long&lt;/em&gt; way in making AI more trustworthy.&lt;/p&gt;
&lt;p&gt;Give me tools that help me inspect how the model was trained, what data it was
trained on, and how my queries are processed and used. Transparency shouldn&amp;rsquo;t be
an afterthought — it should be the &lt;em&gt;standard&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id="working-with-ai-not-for-it"&gt;Working With AI, Not For It&lt;/h2&gt;
&lt;p&gt;I tend to treat LLMs like people — helpful people who carry lots of knowledge
that I can lean on when I&amp;rsquo;m stuck or exploring something new. I don&amp;rsquo;t need them
to &amp;ldquo;serve&amp;rdquo; me. I want to work &lt;em&gt;with&lt;/em&gt; them — to talk through a problem, build
understanding, and create something useful together.&lt;/p&gt;
&lt;p&gt;That sense of collaboration builds trust. It makes the tool better for me, and
it makes &lt;em&gt;me&lt;/em&gt; better, too.&lt;/p&gt;
&lt;h2 id="trust-is-important"&gt;Trust Is Important&lt;/h2&gt;
&lt;p&gt;Until then, I&amp;rsquo;ll keep choosing the tools that I feel like I can trust. They may
not be the most advanced, but they respect me more than Google does.&lt;/p&gt;
&lt;p&gt;And honestly? That makes all the difference.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-14 Re: Google is Winning on Every AI Front"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Caffeinate via Hammerspoon</title><link>https://degruchy.org/2025/04/10/caffeinate-via-hammerspoon/</link><pubDate>Thu, 10 Apr 2025 16:07:07 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/10/caffeinate-via-hammerspoon/</guid><description>
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;caffeine&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hs.menubar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;setCaffeineDisplay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;setTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;☕️&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;setTooltip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Device is being kept awake&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;setTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;😴&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;setTooltip&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Device is allowed to sleep&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;caffeineClicked&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modifiers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;modifiers.ctrl&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt; &lt;span class="c1"&gt;-- quit on ctrl-click&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;		&lt;span class="n"&gt;setCaffeineDisplay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hs.caffeinate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;toggle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;displayIdle&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="n"&gt;caffeine&lt;/span&gt; &lt;span class="kr"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="n"&gt;caffeine&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;setClickCallback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;caffeineClicked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;	&lt;span class="n"&gt;setCaffeineDisplay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hs.caffeinate&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;displayIdle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A quick modification of the Hammerspoon example for making a &lt;code&gt;caffeinate&lt;/code&gt; clone
in Lua. It was actually easier to understand than I imagined, and it seems like
there is &lt;em&gt;so much more&lt;/em&gt; that it can do. I just need to get up to speed on Lua.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-10 Caffeinate via Hammerspoon"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Mutable OS</title><link>https://degruchy.org/2025/04/09/the-mutable-os/</link><pubDate>Wed, 09 Apr 2025 09:36:39 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/09/the-mutable-os/</guid><description>
&lt;p&gt;Today, I&amp;rsquo;d like to talk about Windows.&lt;/p&gt;
&lt;p&gt;Wait, before you go, just hear me out: &amp;ldquo;What if Windows was an immutable OS?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This idea might seem familiar to you. We actually had this, for some values of
&amp;rsquo;this&amp;rsquo;, back in the aughts. We called it &lt;a
	href="https://www.faronics.com/products/deep-freeze/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.faronics.com/products/deep-freeze/"
	target="_blank" rel="noopener"
	&gt;
	DeepFreeze
&lt;/a&gt;. Of course, it was more
about freezing the whole partition, and less of making the OS itself immutable,
but it was on the right path. Oh, but I haven&amp;rsquo;t explained &amp;ldquo;Immutable&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="what"&gt;What?&lt;/h2&gt;
&lt;p&gt;Immutable, at least as far as software goes, means to be unchanging. If you have
an immutable OS, then the OS is essentially read-only. You can&amp;rsquo;t make changes,
you can&amp;rsquo;t fiddle with it, and that&amp;rsquo;s by design. This doesn&amp;rsquo;t mean you &lt;em&gt;can&amp;rsquo;t&lt;/em&gt;
fiddle with it. Projects like Fedora Silverblue and NixOS allow you to fiddle
with the OS, just outside of the running context. Changes come in signed and
sealed updates to the &lt;em&gt;whole&lt;/em&gt; system, not one-off patches. That means when you
boot your computer, the OS either works, or it doesn&amp;rsquo;t. If it doesn&amp;rsquo;t, then most
of these systems will roll back to the last working copy, with no leftover bits
or half-upgraded components. That means you have a solid foundation upon which
to work on.&lt;/p&gt;
&lt;p&gt;In short: The system image is a fixed unit. It is what it is at install/update
time. When it comes time to patch, you just replace it, wholesale. If that fails
for whatever reason, the change doesn&amp;rsquo;t take place and you&amp;rsquo;re back to where you
were: Working.&lt;/p&gt;
&lt;p&gt;We even do this already in the wild with applications. Flatpak, while I disagree
with it being a replacement for good package management, does this for applications.
Microsoft has it&amp;rsquo;s MSIX apps from the Windows Store and Apple&amp;rsquo;s built-in apps are
all contained on special partitions that get updated wholesale.&lt;/p&gt;
&lt;h2 id="a-brief-history"&gt;A Brief History&lt;/h2&gt;
&lt;p&gt;Culture around Operating Systems has evolved over the ~60 years of computing. In
the early days, MS-DOS was just some files on the disk that if you deleted or
modified would kill your system and require an expensive call to a tech. Later,
we organized those files and told people to stay out, but this was mostly
convention and not a hard and fast rule. OSes of the Unix variety did have
permissions to stop tampering, but these were pretty rudimentary and easy to
mess up.&lt;/p&gt;
&lt;p&gt;As OSes have matured as the state of the industry has seen more harmful actors
willing data destruction or theft on users and organizations, we&amp;rsquo;ve put up more
roadblocks. Windows has mostly kept apace with this by erecting stronger
permission models and adding things like UAC and sandboxing with MSIX. Not all
of this is well received, but it&amp;rsquo;s the state of the system. However, a lot of
the problems that I, as a desktop support tech, see could probably be mitigated
by making the OS layer read-only.&lt;/p&gt;
&lt;h2 id="why"&gt;Why?&lt;/h2&gt;
&lt;p&gt;When your OS is read-only. You, nor Bob, or Sally or xXx420BlazeItBigBallsxXx
can make changes to the system. That&amp;rsquo;s it. No more weird OS errors, trojans,
unbootable systems, half installed patches or corrupt system files. Your
computer turns on, and verifies the system is the way it&amp;rsquo;s supposed to be and
you go on your merry way. This allows folks like me and my security &amp;ldquo;friends&amp;rdquo; to
worry about your &lt;em&gt;data&lt;/em&gt; more, and less about tweaking knobs so that you can&amp;rsquo;t
install 30 toolbars, delete &lt;code&gt;system32.dll&lt;/code&gt; or get some drive-by-malware
infection from a advertisement.&lt;/p&gt;
&lt;p&gt;The patching story cannot be undersold. When &amp;ldquo;Patch Tuesday&amp;rdquo; rolls around, you
don&amp;rsquo;t have to worry about it not finishing and leaving you in a half-working
state, or not applying &lt;em&gt;some&lt;/em&gt; of the patches because of an improper order or
some weird lock on a file not being removed. The whole thing is replaced. If
that replacement doesn&amp;rsquo;t work, then you just reboot (probably being done anyway)
and you&amp;rsquo;re back to the last known good state.&lt;/p&gt;
&lt;p&gt;This is being done already on macOS and lowers the effective surface area for
attacks to take root, and makes sure when you turn on your computer, it actually
turns on and boots up. The same system can also be used to ensure that applications
follow the same behavior. Installing Microsoft Office like this would ensure that
when you open Word, Word is what you get. Just like the OS, no more half-installed
configurations, broken components and reinstall/repair cycles to fix that toolbar
button.&lt;/p&gt;
&lt;h2 id="how"&gt;How?&lt;/h2&gt;
&lt;p&gt;Well, that&amp;rsquo;s the billion-dollar question. There is some groundwork done for this
already. There is virtualization and container support in Windows and we already
have a lot of prior art in Faronics&amp;rsquo; DeepFreeze software. The big missing area,
at least as I can see it is backwards-compatibility and handling overrides or
configurations.&lt;/p&gt;
&lt;p&gt;The story doesn&amp;rsquo;t end with monoliths like Microsoft, Apple or Red Hat handing
off blessed OS images and you&amp;rsquo;re just forced to accept it. You can configure
things, make changes, and deploy images that are blessed. This even allows you
to layer configurations atop a blessed image to further customize it. Keeping
the OS layer pristine, the configurations in their own space and the user system
all separate, but perceptually unified components that don&amp;rsquo;t fight with each
other.&lt;/p&gt;
&lt;p&gt;Backwards compatibility is going to be a non-starter. Too much software written
by companies expect to read and write into &lt;code&gt;C:\Windows&lt;/code&gt;, &lt;code&gt;C:\Program Files&lt;/code&gt; or
even &lt;code&gt;C:\&lt;/code&gt; itself. Preventing that &lt;em&gt;will break those programs&lt;/em&gt;. Honestly,
though? That&amp;rsquo;s a small sacrifice in my eyes. These programs were already broken
to begin with. Insufficient defense around the ability to read/write to
protected OS areas is bush-league and should need to be rewritten anyway. It&amp;rsquo;s
2025.&lt;/p&gt;
&lt;h2 id="we-already-have-immutable-oses-at-home"&gt;We Already Have Immutable OSes at Home&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re already running them. iOS is immutable, Android is containerizing things
and already employs this with Work and Personal containers for apps and data.
ChromeOS is completely immutable, verified boot, separate user data partition,
the works. Even macOS has begun locking down things by making the OS a signed
partition that requires booting into the recovery partition to make changes.
Linux is one of the leaders in this space due in no small part to them being
used in servers, where containerization is the mechanism du jour for deploying
applications and virtual infrastructure and services. There are even desktop
systems built on Linux that bring the immutability to the masses.&lt;/p&gt;
&lt;p&gt;Since the whole industry is enjoying the benefits of reliable platforms, the
question becomes: &amp;ldquo;Why isn&amp;rsquo;t Microsoft?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Well, &lt;a
	href="https://support.microsoft.com/en-us/windows/windows-10-and-windows-11-in-s-mode-faq-851057d6-1ee9-b9e5-c30b-93baebeebc85"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://support.microsoft.com/en-us/windows/windows-10-and-windows-11-in-s-mode-faq-851057d6-1ee9-b9e5-c30b-93baebeebc85"
	target="_blank" rel="noopener"
	&gt;
	they are. Kind of
&lt;/a&gt;. The problem is that Microsoft being Microsoft
tries to cater to Microsoft. That means &amp;ldquo;Windows S Mode&amp;rdquo; requires you to get
your apps from the Windows Store and use Edge. I mean, they get points for
&lt;em&gt;trying&lt;/em&gt;. However, if most of the top search results for &amp;ldquo;Microsoft Windows S
Mode&amp;rdquo; are for disabling it, then we have a problem. People like their apps, and
the Windows Store doesn&amp;rsquo;t have most of them. Despite Microsoft&amp;rsquo;s
on-again-off-again commitment to encouraging developers to embrace things like
the store, it&amp;rsquo;s just not happening.&lt;/p&gt;
&lt;h2 id="could-it-be-done"&gt;Could it be Done?&lt;/h2&gt;
&lt;p&gt;Yes. But also: probably not. Microsoft doesn&amp;rsquo;t like change, except when they do.
Their golden cow is backwards compatibility, and killing that, even for a subset
of terrible applications, is going to be met with &lt;em&gt;fierce&lt;/em&gt; resistance. Any
perceived change in the current system will likely upset the whole ecosystem and
push people to other platforms.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m &lt;em&gt;sure&lt;/em&gt; that Microsoft knows this. Which is why we still have the leaky SS
Windows being used in literal trillion-dollar companies with unbelievably tight
security requirements, despite it not being immutable. There is so much momentum
to just keep on using it that it&amp;rsquo;d take a seismic shift in industry thinking to
even broach the subject realistically.&lt;/p&gt;
&lt;h2 id="wrapping-up"&gt;Wrapping up&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t really &lt;em&gt;hate&lt;/em&gt; Windows. I may not like the company behind it, but the
engineers&amp;rsquo; blood-sweat-and-tears is proof enough that some &lt;strong&gt;very&lt;/strong&gt; smart people
have built something that endures &amp;ndash; &lt;em&gt;despite&lt;/em&gt; it&amp;rsquo;s array of comically
low-hanging fruit problems.&lt;/p&gt;
&lt;p&gt;I think we’ve outgrown the model of mutable systems, especially in high-security
environments. When I find myself recommending iPads over laptops, it’s not
because I’m an Apple shill. It’s because the platform is &lt;em&gt;reliable&lt;/em&gt;, and I don’t
get calls about some patch or security product wrecking performance. The
platform itself &lt;strong&gt;obviates the need&lt;/strong&gt; for so much of the resource-hungry
observation and remediation that&amp;rsquo;s become the status quo.&lt;/p&gt;
&lt;p&gt;Implementing immutability isn&amp;rsquo;t about locking people out. It&amp;rsquo;s about providing a
verifiable system that ensures stability and security by defining clear
boundaries and enforcing them. When you turn your computer on &amp;ndash; like a TV &amp;ndash; it
should &lt;em&gt;just work&lt;/em&gt;. We already have this in phones, ChromeBooks and even macOS.&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t a radical idea. In an age of rampant credential theft, ransomware and
cryptomining zombie farms, maybe the real question is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why are we running &lt;em&gt;so much&lt;/em&gt; of that on a platform that &lt;em&gt;isn&amp;rsquo;t&lt;/em&gt; immutable?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="comments"&gt;Comments&lt;/h2&gt;
&lt;p&gt;&lt;a
	href="https://news.ycombinator.com/item?id=43633544"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://news.ycombinator.com/item?id=43633544"
	target="_blank" rel="noopener"
	&gt;
	A comment from Hacker News
&lt;/a&gt; pointed out that Windows even includes a
&lt;a
	href="https://learn.microsoft.com/en-us/windows/configuration/unified-write-filter/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://learn.microsoft.com/en-us/windows/configuration/unified-write-filter/"
	target="_blank" rel="noopener"
	&gt;
	DeepFreeze-like feature called UFW
&lt;/a&gt;, which can redirect disk writes to
memory or the paging area. So, what is the hold up from Microsoft? It seems like
they could implement immutability posture in chunks by removing the ability for
programs to write to areas they shouldn&amp;rsquo;t by overlaying UFW in key areas.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-09 The Mutable OS"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Manual Method</title><link>https://degruchy.org/2025/04/08/the-manual-method/</link><pubDate>Tue, 08 Apr 2025 22:04:54 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/08/the-manual-method/</guid><description>
&lt;p&gt;I&amp;rsquo;ve been reading the &lt;em&gt;crap&lt;/em&gt; out of the &lt;a
	href="https://www.barebones.com/support/bbedit/manual.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.barebones.com/support/bbedit/manual.html"
	target="_blank" rel="noopener"
	&gt;
	BBEdit manual
&lt;/a&gt;. All 450 flippin'
pages of it. While it&amp;rsquo;s not &lt;em&gt;quite&lt;/em&gt; as comprehensive as the Emacs manual, it
&lt;em&gt;does&lt;/em&gt; cover all of the surface features and menus that you can encounter in
BBEdit, which is a lot. There are whole sections on the different support
folders that you can customize BBEdit with, and there are even references to the
different Emacs features and commands they support. Which is nice, because it&amp;rsquo;s
certainly nice to not have to abandon all of my learned muscle memory for
opening, writing files, searching and line navigation.&lt;/p&gt;
&lt;p&gt;I &lt;a
	href="https://degruchy.org/2025/03/27/bbedit-is-neat/"
	
	&gt;
	already explored some of BBEdit&amp;rsquo;s features on my own
&lt;/a&gt;. However, there
is so much &lt;em&gt;more&lt;/em&gt; to the tool than just it&amp;rsquo;s mild-mannered appearance. Like many
aged characters, it has accumulated quite a lot of features over the years that
all-too-often get buried in lieu of newer and fancier features. Like LSPs and
AI Integration. While those are all well and good, I tend to appreciate the older
and more subtle tools that make the difference between a &lt;em&gt;good&lt;/em&gt; tool and a &lt;em&gt;great&lt;/em&gt;
tool. For instance: BBEdit has the ability to find and replace, like any good text
editor does. However, BBEdit&amp;rsquo;s functionality actually leans heavily on Grep, and
many of the internal semantics from the command-line tool are applicable in BBEdit.
This makes it easy to go from CLI to GUI without having to relearn tools.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m finding that BBEdit, while not as &lt;em&gt;directly extensible&lt;/em&gt; as Emacs, it&amp;rsquo;s also a
&lt;em&gt;lot&lt;/em&gt; easier to pick up and run with. Regardless of your familiarity with other
tools from other platforms or the command-line. I wish there were more well-crafted
and honed tools like it. There are so many tools that seem more flash-in-pan and
built for a quick turn around or cash grab.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-08 The Manual Method"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A Minecraft Movie: A Movie to be Sure</title><link>https://degruchy.org/2025/04/06/a-minecraft-movie-a-movie-to-be-sure/</link><pubDate>Sun, 06 Apr 2025 17:32:30 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/06/a-minecraft-movie-a-movie-to-be-sure/</guid><description>
&lt;p&gt;So, I went and watched the &amp;ldquo;A Minecraft Movie&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;It was&amp;hellip; a movie. About Minecraft, sure. It was competently acted and had nice
visuals and references to the game.&lt;/p&gt;
&lt;p&gt;There were cameos and in-game-references that most of the adults probably didn&amp;rsquo;t
get. That&amp;rsquo;s okay, though, they weren&amp;rsquo;t critical to the story.&lt;/p&gt;
&lt;p&gt;Other than that, it was just&amp;hellip; okay. Highly predictable, enjoyable romp without
too much to think about.&lt;/p&gt;
&lt;p&gt;A. Movie. Yep.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-06 A Minecraft Movie: A Movie to be Sure"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hammer. Spoon... Lua?</title><link>https://degruchy.org/2025/04/04/hammer.-spoon...-lua/</link><pubDate>Fri, 04 Apr 2025 16:51:53 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/04/hammer.-spoon...-lua/</guid><description>
&lt;figure class="wtfisthis"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/04/hammer.-spoon...-lua/nathan-hammerspoon-apple-ai.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/04/hammer.-spoon...-lua/nathan-hammerspoon-apple-ai.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/04/hammer.-spoon...-lua/nathan-hammerspoon-apple-ai.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/04/04/hammer.-spoon...-lua/nathan-hammerspoon-apple-ai.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/04/hammer.-spoon...-lua/nathan-hammerspoon-apple-ai.jpg"
 alt="I... I don&amp;#39;t know, me, holding a spoon and a hammer. God it&amp;#39;s awful." width="640" height="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;Ugh&lt;/h4&gt;&lt;p&gt;Me, dressed as a Norse God holding a hammer in one hand, and a spoon in the other
 &lt;cite class="fig-attribution"&gt;Source: &lt;a href="https://www.apple.com/apple-intelligence/"&gt;Apple&amp;rsquo;s AI Image Playground&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Sigh. Lets&amp;hellip; just move on.&lt;/p&gt;
&lt;h2 id="hammerspoon"&gt;Hammerspoon&lt;/h2&gt;
&lt;p&gt;So, in addition to the built-in &lt;a
	href="https://en.wikipedia.org/wiki/AppleScript"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/AppleScript"
	target="_blank" rel="noopener"
	&gt;
	AppleScript
&lt;/a&gt;, &lt;a
	href="https://en.wikipedia.org/wiki/Automator_%28macOS%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Automator_%28macOS%29"
	target="_blank" rel="noopener"
	&gt;
	Automator
&lt;/a&gt; and,
recently, &lt;a
	href="https://en.wikipedia.org/wiki/Shortcuts_%28Apple%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Shortcuts_%28Apple%29"
	target="_blank" rel="noopener"
	&gt;
	Shortcuts
&lt;/a&gt; there are other tools that macOS users can use to
automate their macs and get things done. One of them is the amazing
&lt;a
	href="https://hammerspoon.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://hammerspoon.org/"
	target="_blank" rel="noopener"
	&gt;
	Hammerspoon
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Despite the weird name, this tool allows you to write &lt;a
	href="https://en.wikipedia.org/wiki/Lua_%28programming_language%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Lua_%28programming_language%29"
	target="_blank" rel="noopener"
	&gt;
	Lua
&lt;/a&gt; scripts to
interact with your mac, display dialogs, and handle macOS stuff along with
the more traditional unixy stuff that you might associate with Lua. If you&amp;rsquo;re
not aware, Lua is a small language that you can easily embed in many &lt;em&gt;other&lt;/em&gt;
languages, and as a stand-alone scripting language, it can be used to make quick
and easy scripts to do all sorts of things. Notably, Lua is used frequently in
game design as a mechanism to allow for scripting or even external plugin
infrastructure.&lt;/p&gt;
&lt;p&gt;Extending this to macOS lets you do all sorts of things that normally you&amp;rsquo;d have
to reach out into AppleScript territory, or build custom tools to poll the
system services to get the information you need. It also allows you to bring in
parts of the wider Lua ecosystem to craft what you need. Things like
&lt;a
	href="https://fennel-lang.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fennel-lang.org"
	target="_blank" rel="noopener"
	&gt;
	Fennel
&lt;/a&gt; allow you to write Lisp instead of Lua, if that&amp;rsquo;s your thing. It
all Just Works(tm).&lt;/p&gt;
&lt;p&gt;Right now, I&amp;rsquo;m in the process of working with ChatGPT to build a simple
batch-rename tool in the style of Emacs&amp;rsquo; &lt;code&gt;wdired-mode&lt;/code&gt; that has you able to edit
the file names in an editor and then have them renamed accordingly. The progress
has been fast and with few actual errors. I&amp;rsquo;ve been learning how Lua works, and
getting advice on how to build applications in Lua. It&amp;rsquo;s made me appreciate the
language more than I did before.&lt;/p&gt;
&lt;p&gt;Hopefully, once I have something truly working well, I&amp;rsquo;ll post it here. It&amp;rsquo;s not
too long yet, and it brings in some of the cool tricks that Lua can do without
having to puzzle out how to do it in a more complex language like C++ or
Objective C.&lt;/p&gt;
&lt;p&gt;This is just scratching the surface of the tool. Though, be warned, it&amp;rsquo;s a steep
cliff in terms of learning. When you start it, you have &lt;em&gt;nothing&lt;/em&gt;. It expects
you to build the parts from the language and it&amp;rsquo;s extensions.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-04 Hammer. Spoon... Lua?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Aliases and Abbreviations</title><link>https://degruchy.org/2025/04/04/aliases-and-abbreviations/</link><pubDate>Fri, 04 Apr 2025 11:00:27 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/04/aliases-and-abbreviations/</guid><description>
&lt;p&gt;So, going back to my love of all things text and, by extension, terminal-based.
I discovered a feature in the &lt;a
	href="https://fishshell.com"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fishshell.com"
	target="_blank" rel="noopener"
	&gt;
	Fish Shell
&lt;/a&gt; that not only helps you build
shortcuts, but also can help you with longer commands or parts of commands. That
is &lt;a
	href="https://fishshell.com/docs/current/cmds/abbr.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fishshell.com/docs/current/cmds/abbr.html"
	target="_blank" rel="noopener"
	&gt;
	abbreviations
&lt;/a&gt;. At first glance, this built-in looks &lt;em&gt;just like&lt;/em&gt; the
more traditional &lt;code&gt;alias&lt;/code&gt; tools in lots of other shells out there. You type one
series of characters, like &lt;code&gt;,gc&lt;/code&gt; for &lt;code&gt;git commit&lt;/code&gt; or &lt;code&gt;,d.o&lt;/code&gt; for &lt;code&gt;ssh degruchy.org&lt;/code&gt; (or if you&amp;rsquo;ve got an SSH alias, &lt;code&gt;,d.o&lt;/code&gt; to &lt;code&gt;ssh d.o&lt;/code&gt; &amp;ndash; now &lt;em&gt;thats&lt;/em&gt;
layers). This is extremely handy when having to do tedious or just repetitive
commands that may not be in the immediate history, or just long.&lt;/p&gt;
&lt;h2 id="abbr-extends-alias"&gt;&lt;code&gt;abbr&lt;/code&gt; Extends &lt;code&gt;alias&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Well, not &lt;em&gt;directly&lt;/em&gt;, anyway. Fish shell&amp;rsquo;s &lt;code&gt;abbr&lt;/code&gt; command is more akin to a text
expansion (like in &lt;a
	href="https://espanso.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://espanso.org"
	target="_blank" rel="noopener"
	&gt;
	Espanso
&lt;/a&gt;). When you type the trigger
(and press space/return) that text is expanded to the full form. Meaning if you
type &lt;code&gt;,fse&amp;lt;space&amp;gt;&lt;/code&gt; in my shell, you&amp;rsquo;d get &lt;code&gt;fossil status --extra&lt;/code&gt; expanded out
for you. It&amp;rsquo;s also useful just in the &lt;code&gt;alias&lt;/code&gt; sense, because typing &lt;code&gt;,fse&amp;lt;return&amp;gt;&lt;/code&gt;
gets you the command run, but also echoing the expanded command above it.&lt;/p&gt;
&lt;h3 id="but-wait-theres-more"&gt;But wait&amp;hellip; there&amp;rsquo;s more!&lt;/h3&gt;
&lt;p&gt;By default, these expansions happen when you type the trigger at the beginning of a
command. That&amp;rsquo;s fine for most &lt;code&gt;alias&lt;/code&gt;-esque usage, but you can also tell Fish to
expand them &lt;em&gt;anywhere&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fish" data-lang="fish"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;abbr&lt;/span&gt; &lt;span class="na"&gt;-a&lt;/span&gt; L &lt;span class="na"&gt;--position&lt;/span&gt; anywhere &lt;span class="na"&gt;--set-cursor&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;% | less&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or even have them activate as part of a specific command:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;With &lt;code&gt;--command COMMAND&lt;/code&gt;, the abbreviation will only expand when it is used as
an argument to the given &lt;code&gt;COMMAND&lt;/code&gt;. Multiple &lt;code&gt;--command&lt;/code&gt; can be used together,
and the abbreviation will expand for each. An empty &lt;code&gt;COMMAND&lt;/code&gt; means it will
expand only when there is no command. &lt;code&gt;--command&lt;/code&gt; implies &lt;code&gt;--position&lt;/code&gt;
anywhere and disallows &lt;code&gt;--position&lt;/code&gt; command. Even with different &lt;code&gt;COMMANDS&lt;/code&gt;,
the &lt;code&gt;NAME&lt;/code&gt; of the abbreviation needs to be unique. Consider using &lt;code&gt;--regex&lt;/code&gt; if
you want to expand the same word differently for multiple commands.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really love the idea of &lt;code&gt;abbr&lt;/code&gt;&amp;rsquo;s. They both help shorten typed commands, but
also help you remember or expand arguments and other parts to speed up your day
and reenforce learning by expanding the shortcut and not just replacing it.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-04 Aliases and Abbreviations"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Only Switch 2 Announcement That I Care About</title><link>https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/</link><pubDate>Thu, 03 Apr 2025 12:38:40 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/</guid><description>
&lt;p&gt;Yeah, I know there were lots of other cool announcements for the Switch 2, and I
can rave about those some other time when I actually use it, but this&amp;hellip; this is
👨‍🍳 😘 🤌&lt;/p&gt;
&lt;figure class="metroid4-mouse"&gt;&lt;a href="https://youtu.be/1uGRs-ispRU?t=3406"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/metroid4-mouse.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/metroid4-mouse.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/metroid4-mouse.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/metroid4-mouse.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/04/03/the-only-switch-2-announcement-that-i-care-about/metroid4-mouse.jpg"
 alt="A screenshot of a YouTube video showing off mouse controls in Metroid 4" width="640" height="355"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;h4&gt;OMG YES&lt;/h4&gt;&lt;p&gt;It&amp;rsquo;s all I ever wanted and more! &lt;strong&gt;Warning:&lt;/strong&gt; YouTube Link
 &lt;cite class="fig-attribution"&gt;Source: &lt;a href="https://youtu.be/1uGRs-ispRU?t=3406"&gt;Nintendo&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The only thing that could make it better would be mouse and keyboard setup for
this.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-04-03 The Only Switch 2 Announcement That I Care About"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Featured Images in Posts</title><link>https://degruchy.org/2025/03/31/featured-images-in-posts/</link><pubDate>Mon, 31 Mar 2025 21:43:42 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/31/featured-images-in-posts/</guid><description>
&lt;p&gt;So, I&amp;rsquo;m adding featured images to my posts. Well, I&amp;rsquo;m adding the &lt;em&gt;ability&lt;/em&gt; to
provide featured images for posts. I like posting images, but I don&amp;rsquo;t often like
making featured images because it&amp;rsquo;s hard to get right. I think I&amp;rsquo;ve got the
formula down, now. I could probably optimize some more with resizing or cropping
the image, but one thing at a time, eh?&lt;/p&gt;
&lt;p&gt;So, this post will have a featured image. I&amp;rsquo;m still thinking about if I want to
display it on the post page, too. Again, one thing at a time.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-31 Featured Images in Posts"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Another Day, Another Nastygram from Security</title><link>https://degruchy.org/2025/03/31/another-day-another-nastygram-from-security/</link><pubDate>Mon, 31 Mar 2025 15:29:11 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/31/another-day-another-nastygram-from-security/</guid><description>
&lt;p&gt;I work in a high-tech, highly regulated environment. Our security posture is
end-user visible through the various so-called &amp;rsquo;endpoint security&amp;rsquo; tools that
are deployed en masse and kept rigidly up-to-date. These tools can do lots of
things, like restrict apps from running, restrict installers from all manner of
sources, prevent things like PowerShell from running, even lock down parts of
Windows itself.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t have a problem with these tools. When your base is the HMS LeakyWindows,
you&amp;rsquo;ve got to patch those holes &lt;em&gt;somehow&lt;/em&gt;. The problem I have is when I use
approved apps to do legitimate things, that I get caught up in automated
security dragnets that then get me a nastygram from our Security team. The
latest one went something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Hey, I see you installed a program from the App Store on your mac call
&amp;ldquo;Amphetamine&amp;rdquo;, why do you need an Idle Prevention tool?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Because I was tired of having to crack open a useless terminal window to
run &lt;code&gt;caffeinate&lt;/code&gt;. You know, the tool built into all versions of macOS since
time immemorial that allows for idle prevention? I also use the idle
prevention software built into the unrestricted, signed and approved PowerToys
on Windows, if these tools are so bad, why do you allow them?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m still waiting on their reply.&lt;/p&gt;
&lt;p&gt;However, this is not the first time I&amp;rsquo;ve been bullied. I once had the &lt;em&gt;audacity&lt;/em&gt;
to use &lt;code&gt;curl.exe&lt;/code&gt; on Windows. No, not one I downloaded from the Internet, the
built-in one that&amp;rsquo;s been around for neigh on &lt;em&gt;EIGHT YEARS&lt;/em&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. I didn&amp;rsquo;t even do
anything ✨mAlIcIoUs✨ with it. I literally just &lt;code&gt;curl&lt;/code&gt;&amp;rsquo;d google.com because I
couldn&amp;rsquo;t tell if I could get out to the Internet just yet.&lt;/p&gt;
&lt;p&gt;The email they sent me was hilarious. The software scanning tool they use had
some ancient text about how &lt;code&gt;curl.exe&lt;/code&gt; was included in some hacker toolset from
the &lt;code&gt;1337&lt;/code&gt; days of y0r3. I was so surprised something so obviously out of date
and wrong was still in this kind of database, but that the technician didn&amp;rsquo;t
just look at it and dismiss it as obviously a false positive.&lt;/p&gt;
&lt;p&gt;HOW DO SECURITY PEOPLE HAVE JOBS? HOW DO YOU GET INTO A POSITION LIKE THIS WITH
NO KNOWLEDGE OF YOUR FIELD, THE TOOLS AVAILABLE, AND NO SELF-REASONING SKILLS??
SERIOUSLY.&lt;/p&gt;
&lt;p&gt;How does a desktop support guy know more about your job than &lt;em&gt;you&lt;/em&gt; do?&lt;/p&gt;
&lt;p&gt;Are all security folk a joke? No, I imagine not. However these desk jockeys
they&amp;rsquo;ve got are little better than talking heads.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a
	href="https://curl.se/windows/microsoft.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://curl.se/windows/microsoft.html"
	target="_blank" rel="noopener"
	&gt;
	Proof
&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-31 Another Day, Another Nastygram from Security"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Filesets in More Places - macOS Edition</title><link>https://degruchy.org/2025/03/31/filesets-in-more-places-macos-edition/</link><pubDate>Mon, 31 Mar 2025 12:53:46 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/31/filesets-in-more-places-macos-edition/</guid><description>
&lt;p&gt;A few months ago, I talked about &lt;a
	href="https://degruchy.org/2025/01/28/emacs-and-filesets/"
	
	&gt;
	Emacs and the various &amp;lsquo;fileset&amp;rsquo; functions
&lt;/a&gt;
that were buried in it&amp;rsquo;s voluminous core of goodies. While somewhat obscured,
and certainly not very accessible from the UI, they were &lt;em&gt;there&lt;/em&gt; and were
&lt;em&gt;functional&lt;/em&gt;. They, in true Emacs fashion, allowed you to define filesets as
whatever suited your fancy. If you wanted to define a list yourself, you could,
you could also define a fileset as a folder of files and probably even have the
list be dynamically populated by the result of a function. IDK, Lisps are all
&amp;ldquo;data is code; code is data&amp;rdquo; and that&amp;rsquo;s cool.&lt;/p&gt;
&lt;h2 id="bbedit-projects"&gt;BBEdit Projects&lt;/h2&gt;
&lt;p&gt;However, on macOS, BBEdit also has the idea of filesets. Actually a couple of
different concepts. One, you may be familiar with is the &amp;lsquo;Project&amp;rsquo;. You get a
list of files in a directory, usually defined around the root level &lt;code&gt;.git&lt;/code&gt;
folder and pow, fileset. However, you can also create filesets of disparate
parts, and organize them however you like. You just create a blank project from
the menu and start adding files and &amp;lsquo;collections&amp;rsquo; (read: folders). This is handy
when your project only has a few different key files you care about actually
&lt;em&gt;editing&lt;/em&gt;. I use this for my site, and for Fish Shell&amp;rsquo;s various config folders.&lt;/p&gt;
&lt;p&gt;Similarly, you can setup a &amp;ldquo;disk browser&amp;rdquo; collection that just dumps the list of
files in that folder into a project-like view. Bypassing the need to actually
have any sort of structured project in the first place, just an assortment of
vaguely related files.&lt;/p&gt;
&lt;h3 id="notebooks"&gt;Notebooks&lt;/h3&gt;
&lt;p&gt;Another type of fileset is the BBEdit &amp;ldquo;Notebook&amp;rdquo; feature. The notes feature works
like an app bundle, in that there is a top-level &amp;ldquo;file&amp;rdquo; that behaves like one
unit, and inside that file are discreet text files that make up the notes. These
are usually named uniquely, but presented as whatever the top-level heading
defines. Similar to projects, it has it&amp;rsquo;s own structure and the files are
automatically maintained.&lt;/p&gt;
&lt;h3 id="everything-else"&gt;Everything else&lt;/h3&gt;
&lt;p&gt;There are a couple of other kinds of container-esque tools, but they&amp;rsquo;re more
like special buffers in Emacs. Things like LLM Chats that happen all within one
Markdown file. Or shell worksheets that act like a simple prompt that you can
run commands in and have the output in BBEdit. It feels like BBEdit is really
cribbing some of Emacs ideas. Not all of them, but there is certainly a vibe of
picking up popular features and adapting them to something that GUI-trained
users would be comfortable picking up and running with.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-31 Filesets in More Places - macOS Edition"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>"No, I'm not joking. I'm not joking."</title><link>https://degruchy.org/2025/03/30/no-im-not-joking.-im-not-joking./</link><pubDate>Sun, 30 Mar 2025 14:45:04 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/30/no-im-not-joking.-im-not-joking./</guid><description>
&lt;p&gt;I&amp;rsquo;m not even sure what to make of this anymore. We&amp;rsquo;re barely 4 months into this
dumpster fire&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; of a presidency and &lt;a
	href="https://www.reuters.com/world/us/trump-says-he-is-not-joking-about-third-presidential-term-2025-03-30/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.reuters.com/world/us/trump-says-he-is-not-joking-about-third-presidential-term-2025-03-30/"
	target="_blank" rel="noopener"
	&gt;
	this is already on the
table
&lt;/a&gt; (&lt;a
	href="https://degruchy.org/assets/archives/reuters.com_trump_third_term.html"
	
	&gt;
	archive
&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t get it. I don&amp;rsquo;t get it and I&amp;rsquo;m scared what this might be the &lt;em&gt;start&lt;/em&gt; of.
This country has stood for ~300 years as a democracy and now some narcissistic
&amp;ldquo;billionaire&amp;rdquo; becomes president and now it&amp;rsquo;s going to be an empire. I&amp;rsquo;m so sorry
for my son. I&amp;rsquo;m so sorry I couldn&amp;rsquo;t stop this travesty from unrolling and
leaving you with the burning wreckage of what was once a great place. I know
it&amp;rsquo;s not &lt;em&gt;my fault&lt;/em&gt;, directly, but I couldn&amp;rsquo;t do enough to stop it for you.
Please forgive me.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a
	href="https://www.roadandtrack.com/news/a62009993/tesla-cybertruck-fire-takes-more-than-hour-to-put-out/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.roadandtrack.com/news/a62009993/tesla-cybertruck-fire-takes-more-than-hour-to-put-out/"
	target="_blank" rel="noopener"
	&gt;
	Like this dumpster, on fire
&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-30 "No, I'm not joking. I'm not joking.""&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Another Caturday, Another Day on the Patio</title><link>https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/</link><pubDate>Sat, 29 Mar 2025 11:46:09 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/</guid><description>
&lt;ul class="caturday gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/squirrel_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;SQUIRREL!
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/noticed_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;‼
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/29/another-caturday-another-day-on-the-patio/bailey_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Grumpy because he couldn&amp;#39;t get the squirrel
&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Another lovely day on the patio with the catios. This time there was a little
drama with a squirrel on their lawn!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-29 Another Caturday, Another Day on the Patio"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Metroid Prime 4</title><link>https://degruchy.org/2025/03/28/metroid-prime-4/</link><pubDate>Fri, 28 Mar 2025 15:19:06 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/28/metroid-prime-4/</guid><description>
&lt;p&gt;Hrnnnngg&amp;hellip;.&lt;/p&gt;
&lt;figure class="metroid"&gt;&lt;a href="https://en.wikipedia.org/wiki/Metroid_Prime_4:_Beyond"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/28/metroid-prime-4/metroid-prime-4.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/metroid-prime-4/metroid-prime-4.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/metroid-prime-4/metroid-prime-4.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/metroid-prime-4/metroid-prime-4.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/28/metroid-prime-4/metroid-prime-4.jpg"
 alt="A title card for Metroid Prime 4: Beyond" width="640" height="360"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;It&amp;rsquo;s finally coming!!!&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Plus it went back to &lt;a
	href="https://en.wikipedia.org/wiki/Metroid_Prime_4:_Beyond"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Metroid_Prime_4:_Beyond"
	target="_blank" rel="noopener"
	&gt;
	being handled by Retro Studios
&lt;/a&gt;, the developers of the
original Metroid Prime series, so no more Ubisoft shenanigans.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-28 Metroid Prime 4"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Apple AI Fail</title><link>https://degruchy.org/2025/03/28/apple-ai-fail/</link><pubDate>Fri, 28 Mar 2025 09:09:55 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/28/apple-ai-fail/</guid><description>
&lt;p&gt;I can do &lt;a
	href="https://irace.me/vibe"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://irace.me/vibe"
	target="_blank" rel="noopener"
	&gt;
	Apple AI failure
&lt;/a&gt; posts too!&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/28/apple-ai-fail/apple-ai-fail.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/apple-ai-fail/apple-ai-fail.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/apple-ai-fail/apple-ai-fail.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/28/apple-ai-fail/apple-ai-fail.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/28/apple-ai-fail/apple-ai-fail.jpg"
 alt="A picture of an email on iOS being proofread by Apple&amp;#39;s AI tool and failing to realize that the &amp;#39;Thank you&amp;#39; message highlighted actually _does_ contain the word &amp;#39;you&amp;#39;"&gt;
 &lt;/picture&gt;&lt;figcaption&gt;
 &lt;h4&gt;A Tragedy in One Act&lt;/h4&gt;&lt;p&gt;The proofreading tools needs some proofreading&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-28 Apple AI Fail"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Some of your may die... That is a sacrifice I'm willing to make.</title><link>https://degruchy.org/2025/03/27/some-of-your-may-die...-that-is-a-sacrifice-im-willing-to-make./</link><pubDate>Thu, 27 Mar 2025 15:22:54 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/27/some-of-your-may-die...-that-is-a-sacrifice-im-willing-to-make./</guid><description>
&lt;p&gt;&lt;a
	href="https://arstechnica.com/health/2025/03/this-will-be-a-painful-period-rfk-jr-slashes-24-of-us-health-dept/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://arstechnica.com/health/2025/03/this-will-be-a-painful-period-rfk-jr-slashes-24-of-us-health-dept/"
	target="_blank" rel="noopener"
	&gt;
	Fucking turd-burgler
&lt;/a&gt;. Yeah, it&amp;rsquo;ll be hard for &lt;em&gt;us&lt;/em&gt; you dipshit. &lt;em&gt;You&lt;/em&gt;
have money, power and connections. Your ass isn&amp;rsquo;t inconvenienced in &lt;em&gt;any&lt;/em&gt; way.
So lets drop the charade that this is about sacrifice to get back on the road to
financial stability. You&amp;rsquo;re saving less than 1% of the budget with these cuts
you jagoff. You&amp;rsquo;re letting north of 5,000 people go and reducing funding to the
most in-need state support systems for health. So eat a fucking dick you
shit-for-brains, sorry excuse for a Kennedy.&lt;/p&gt;
&lt;video preload="auto" width="100%" autoplay loop playsinline class=""&gt;
 &lt;source src="https://degruchy.org/2025/03/27/some-of-your-may-die...-that-is-a-sacrifice-im-willing-to-make./sacrifice-meme.webm" type="video/webm"&gt;
 &lt;source src="https://degruchy.org/2025/03/27/some-of-your-may-die...-that-is-a-sacrifice-im-willing-to-make./sacrifice-meme.ogv" type="video/ogg"&gt;
 &lt;source src="https://degruchy.org/2025/03/27/some-of-your-may-die...-that-is-a-sacrifice-im-willing-to-make./sacrifice-meme.mp4" type="video/mp4"&gt;
 &lt;span&gt;&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-27 Some of your may die... That is a sacrifice I'm willing to make."&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>BBEdit is Neat</title><link>https://degruchy.org/2025/03/27/bbedit-is-neat/</link><pubDate>Thu, 27 Mar 2025 13:40:36 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/27/bbedit-is-neat/</guid><description>
&lt;p&gt;The old trusted-and-true editor for macOS, BBEdit, is still alive and kicking. I
hadn&amp;rsquo;t used it in &lt;em&gt;ages&lt;/em&gt;, so I decided that I&amp;rsquo;d give it another go. Due to it&amp;rsquo;s
age, it has accumulated a quite a lot of features (and cruft) along with it&amp;rsquo;s
cult following. I&amp;rsquo;m not quite ready to give up on Emacs just yet, but being on
macOS again, I&amp;rsquo;m curious to see how the landscape has changed.&lt;/p&gt;
&lt;h2 id="the-bad"&gt;The Bad&lt;/h2&gt;
&lt;p&gt;For one, BBEdit has never exactly been the most &lt;em&gt;extensible&lt;/em&gt; editor out there.
Adding new languages in the past was difficult at best. While that has changed
with &lt;a
	href="https://www.barebones.com/support/develop/clm.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.barebones.com/support/develop/clm.html"
	target="_blank" rel="noopener"
	&gt;
	Codeless Language Modules
&lt;/a&gt;, you don&amp;rsquo;t really get anything outside of
syntax highlighting and some word completions. And that&amp;rsquo;s not &lt;em&gt;bad&lt;/em&gt;. It&amp;rsquo;s just
that coming from Emacs, you miss out on whole &amp;ldquo;modes&amp;rdquo; where the editor extends
itself into something more when editing those files.&lt;/p&gt;
&lt;p&gt;BBEdit is also much more niche-oriented. I seem to remember that it was a great
choice for editing MacPerl scripts, AppleScript and HTML. While it&amp;rsquo;s obviously
grown to support much more than that, the built-in functionality is still
somewhat focused around those kinds of activities. There is even a whole menu
for &amp;ldquo;markup&amp;rdquo; which is &lt;em&gt;just&lt;/em&gt; HTML tools. This is great if that&amp;rsquo;s what you&amp;rsquo;re
working on. It&amp;rsquo;s less great when you&amp;rsquo;ve got other languages that are markup
languages that could re-use that space for their own support items.&lt;/p&gt;
&lt;p&gt;There is also a notable lack of configurable &lt;a
	href="https://en.wikipedia.org/wiki/Language_Server_Protocol"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Language_Server_Protocol"
	target="_blank" rel="noopener"
	&gt;
	Language Server Protocol
&lt;/a&gt;
options anywhere in the UI. There are &lt;a
	href="https://www.barebones.com/support/bbedit/lsp-notes.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.barebones.com/support/bbedit/lsp-notes.html"
	target="_blank" rel="noopener"
	&gt;
	preconfigured options
&lt;/a&gt; that as
long as the server is installed in your &lt;code&gt;$PATH&lt;/code&gt; or in the special folder, then
it&amp;rsquo;ll Just Work(tm). However, adding one or adding an alternative one seems like
a exercise in frustration. For instance, I do not want to use the VSCode
TypeScript-Node-Abomination. I want to use SuperHTML, which works well for my
purposes. In order to add it, I have to copy the HTML language definition and
modify the key where it provides for a preferred LSP. This is a mess and
honestly just makes me not want to use &lt;em&gt;any&lt;/em&gt; LSPs with BBEdit.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Edit:&lt;/em&gt; I just discovered that you can override options, like the LSP, for
installed languages, which makes me much happier.&lt;/p&gt;
&lt;h2 id="the-good"&gt;The Good&lt;/h2&gt;
&lt;p&gt;It does, however, have it&amp;rsquo;s bright spots. The &lt;a
	href="https://en.wikipedia.org/wiki/Multiple-document_interface"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Multiple-document_interface"
	target="_blank" rel="noopener"
	&gt;
	MDI
&lt;/a&gt; supports a variety of
different layouts, like the popular sidebar/project view as well as floating
tool panels for different tasks like document management and snippets. These
features feel like the classic interface I remember, and generally &lt;em&gt;feel&lt;/em&gt; better
to use than something like Sublime Text, where everything is in that activity
menu or in a JSON config file.&lt;/p&gt;
&lt;p&gt;There also seems like some love for Emacs in the fact that it has a partial
implementation of Emacs keybindings for things like save, find-file, search and
more. This makes the transition from Emacs to BBEdit all the less painful
because all your trusty keybindings are likely to be supported. You can even get
a little status window to show you what you just triggered. That said, it is
&lt;em&gt;limited&lt;/em&gt; in what it supports.&lt;/p&gt;
&lt;h1 id="the-verdict"&gt;The Verdict&lt;/h1&gt;
&lt;p&gt;I &lt;em&gt;like&lt;/em&gt; BBEdit. I just don&amp;rsquo;t know if I $60-like-it. It&amp;rsquo;s a hard sell. Sublime
Text, which is also very feature-packed is $100, and that&amp;rsquo;s just a hard no from
someone who doesn&amp;rsquo;t code for a living. $60 I could do, if it was worth it.&lt;/p&gt;
&lt;p&gt;For right now, though, Emacs is where I&amp;rsquo;m going to be staying. It&amp;rsquo;s pretty
comfortable, but the macOS integration leaves a lot to be desired.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-27 BBEdit is Neat"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The US Consumer Product Safety Commission on BlueSky</title><link>https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/</link><pubDate>Tue, 25 Mar 2025 13:34:14 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/</guid><description>
&lt;figure&gt;&lt;a href="https://bsky.app/profile/cpsc.gov/post/3ll7fjvvxp22e"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/cpsc-bsky.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/cpsc-bsky.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/cpsc-bsky.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/cpsc-bsky.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/25/the-us-consumer-product-safety-commission-on-bluesky/cpsc-bsky.jpg"
 alt="A screenshot of the US Consumer Product Safety Commission&amp;#39;s BlueSky Account talking about riding lawn mower safety"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption&gt;
 &lt;p&gt;There are more bangers on their account, including (and I&amp;rsquo;m not joking) &amp;ldquo;Vapo McJuicy&amp;rdquo;&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I have no notes. Brilliant, on message, straight-to-the-point yet
attention grabbing. Bravo. I&amp;rsquo;m &lt;em&gt;thrilled&lt;/em&gt; to have my tax dollars at
work for this&amp;hellip; &lt;em&gt;ART&lt;/em&gt;. *chef kiss*&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-25 The US Consumer Product Safety Commission on BlueSky"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Mac-ception</title><link>https://degruchy.org/2025/03/24/mac-ception/</link><pubDate>Mon, 24 Mar 2025 11:46:26 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/24/mac-ception/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/24/mac-ception/mac-ception.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/24/mac-ception/mac-ception.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/24/mac-ception/mac-ception.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/24/mac-ception/mac-ception.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/24/mac-ception/mac-ception.jpg"
 alt="I have become mac, emulator of worlds"&gt;
 &lt;/picture&gt;&lt;figcaption&gt;
 &lt;p&gt;I have become mac, emulator of worlds&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a
	href="https://infinitemac.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://infinitemac.org"
	target="_blank" rel="noopener"
	&gt;
	Infinite Mac
&lt;/a&gt; has updated their online emulators to support some
early versions of Mac OS X (yes, instead of just macOS).&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-24 Mac-ception"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Caturday</title><link>https://degruchy.org/2025/03/22/caturday/</link><pubDate>Sat, 22 Mar 2025 14:49:12 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/22/caturday/</guid><description>
&lt;p&gt;Today&amp;rsquo;s a great day for being outside. I was on the patio watching
Minecraft Live and the cats just wanted to join me for a good time
chilling.&lt;/p&gt;
&lt;ul class="idksomethingincredible gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/22/caturday/caturday.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/22/caturday/caturday_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Bailey sitting between my legs, because that area is his spot.&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/22/caturday/caturday2.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday2_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday2_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday2_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/22/caturday/caturday2_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/22/caturday/caturday2_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Ellie, more reserved, decided I needed biscuits shortly after this photo.&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-22 Caturday"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>NYU Website Hacked and Defaced</title><link>https://degruchy.org/2025/03/22/nyu-website-hacked-and-defaced/</link><pubDate>Sat, 22 Mar 2025 12:10:25 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/22/nyu-website-hacked-and-defaced/</guid><description>
&lt;p&gt;It looks like the New York University website has been hacked&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; and
defaced by some racist language and cherry-picked data. It claims that
diversity in admissions is illegal and that African-Americans are
somehow inferior, putting Asian-American&amp;rsquo;s at the top. The logo also
appears to be stereotypical of an Asian woman&amp;rsquo;s hair clipped with
multi-color hair clips.&lt;/p&gt;
&lt;p&gt;Really disgusting. Just absolutely awful.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a
	href="https://degruchy.org/assets/archives/nyu.edu-hacked.warc"
	
	&gt;
	Archive
&lt;/a&gt;, &lt;a
	href="https://degruchy.org/assets/archives/nyu.edu-hacked.pdf"
	
	&gt;
	PDF
&lt;/a&gt; and &lt;a
	href="https://degruchy.org/assets/archives/nyu.edu-hacked.html"
	
	&gt;
	Raw HTML
&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-22 NYU Website Hacked and Defaced"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Things I want from your software</title><link>https://degruchy.org/2025/03/20/things-i-want-from-your-software/</link><pubDate>Thu, 20 Mar 2025 16:49:25 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/20/things-i-want-from-your-software/</guid><description>
&lt;p&gt;So, I see a lot of software out there that replaces the functionality of any
range of built-in, or existing services. Programs like &lt;a
	href="https://culturedcode.com/things/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://culturedcode.com/things/"
	target="_blank" rel="noopener"
	&gt;
	Things
&lt;/a&gt;, or
&lt;a
	href="https://evernote.com"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://evernote.com"
	target="_blank" rel="noopener"
	&gt;
	Evernote
&lt;/a&gt; and the plethora of $50 mArKdOwN eDiToRs like &lt;a
	href="https://bear.app/#price"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://bear.app/#price"
	target="_blank" rel="noopener"
	&gt;
	Bear
&lt;/a&gt; and
&lt;a
	href="https://ia.net/writer"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://ia.net/writer"
	target="_blank" rel="noopener"
	&gt;
	iAWriter
&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. They do their thing well, but what they &lt;em&gt;don&amp;rsquo;t&lt;/em&gt; do is actually
integrate into services I already &lt;em&gt;have&lt;/em&gt;. This is a huge problem because if I
were to buy your software, I would also be tied into using your platform for
sync and storage and whatever-fucking-else-you&amp;rsquo;re-siphoning-from-me. I don&amp;rsquo;t
want that.&lt;/p&gt;
&lt;p&gt;What I &lt;em&gt;want&lt;/em&gt; from you is this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your cool-ass app.&lt;/li&gt;
&lt;li&gt;Sync with my existing infrastructure, &lt;em&gt;if I have it&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Offer me your sync-magic-fairy-fucking-bullshit-snake-oil platform that lets
you bilk me for more money a month.&lt;/li&gt;
&lt;li&gt;Can I get a one-time-purchase?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s it. I don&amp;rsquo;t want to pay 50-fucking-dollars to buy the otherwise excellent
software, only to find out that it doesn&amp;rsquo;t work with my existing Office 365 Tasks
list &lt;em&gt;or&lt;/em&gt; my iCloud Tasks list. No, I &lt;a
	href="https://culturedcode.com/things/support/articles/2803586/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://culturedcode.com/things/support/articles/2803586/"
	target="_blank" rel="noopener"
	&gt;
	don&amp;rsquo;t want to host my meager task list on
your big impressive cloud service
&lt;/a&gt; when I already fucking have one that works
fine. I would &lt;em&gt;like&lt;/em&gt; it if you just integrated with &lt;em&gt;that&lt;/em&gt; so I can maybe use it
elsewhere where I might not have your app installed.&lt;/p&gt;
&lt;h2 id="bbut-your-system-doesnt-support-x-feature"&gt;B..but your system doesn&amp;rsquo;t support X fEaTuRe&lt;/h2&gt;
&lt;p&gt;Then work with the company to maybe expand support, or maybe don&amp;rsquo;t use those
features, or maybe just fucking tell your users about it? I mean, it&amp;rsquo;s not hard.
Your beautiful, bespoke, artisanally crafted sync serivce is just another
service I have to worry about, create a new username and password for and
ultimately ship my shit off to so you can mine it for data. I have enough of
those problems &lt;em&gt;as-is&lt;/em&gt;. I don&amp;rsquo;t need another-fucking-one.&lt;/p&gt;
&lt;p&gt;Listen, I get it. You worked &lt;em&gt;hard&lt;/em&gt; on this app, and maybe the existing services
&lt;em&gt;don&amp;rsquo;t&lt;/em&gt; support all the features you&amp;rsquo;ve packed in there, but don&amp;rsquo;t be a &lt;em&gt;dick&lt;/em&gt;
and make me sign up for your shitty SaaS. Let me know some features won&amp;rsquo;t work.
I mean, you don&amp;rsquo;t &lt;em&gt;have&lt;/em&gt; to. Your choice. I&amp;rsquo;m just asking.&lt;/p&gt;
&lt;h2 id="then-dont-use-our-software"&gt;Then don&amp;rsquo;t use our software!&lt;/h2&gt;
&lt;p&gt;Done. The problem I have is that there is a plethora of well reviewed, well
liked software that I am &lt;em&gt;interested&lt;/em&gt; in, but ultimately disuaded from because
of this stupid Not Invented Here Syndrome bullshit of having to have your own
service for every-fucking-thing. I want to have data on my own service. I don&amp;rsquo;t
need your shit. I&amp;rsquo;m looking at &lt;em&gt;you&lt;/em&gt; &lt;a
	href="https://flexibits.com/account/faq"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://flexibits.com/account/faq"
	target="_blank" rel="noopener"
	&gt;
	Fantastical
&lt;/a&gt;. I shouldn&amp;rsquo;t have to give
you my account information to your sErViCe so that you can slurp it up (and mine
it) just so you can regurgitate it in your special way. Standards exist for a
reason. Use them.&lt;/p&gt;
&lt;p&gt;These sins are even more egregious on macOS because: THE👏. SYSTEM👏. DOES👏.
THE👏. HARD👏. WORK👏. FOR👏. YOU👏.&lt;/p&gt;
&lt;p&gt;Need access to the calendar? Boop, API for it. Need to do cool shit with email?
Boop. Use the fucking API. Want to organize and deduplicate my contacts?
&lt;em&gt;A.P.I.&lt;/em&gt;. But nooooooo it&amp;rsquo;s not enough. You need to have raw access to my
services so you can add your special magic whatever. Fuck you, use APIs or talk
to the service on your own. It&amp;rsquo;s not that hard. You&amp;rsquo;re doing it anyway with your
fucking bullshit service.&lt;/p&gt;
&lt;p&gt;In fact, software &lt;em&gt;used&lt;/em&gt; to do it the hard way. Because that&amp;rsquo;s all we had. You
&lt;em&gt;had&lt;/em&gt; to know LDAP, IMAP, POP3 and other stupid acronyms because there wasn&amp;rsquo;t a
concept of sharing in the OS. Now there is. Use it.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t even &lt;em&gt;want&lt;/em&gt; to get into the whole software rental scheme that is so
prevelant today.&lt;/p&gt;
&lt;p&gt;Fuck!&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;wtf: &amp;ldquo;iA Writer experienced nearly a decade of free updates, so you might get lucky—or not.&amp;rdquo;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-20 Things I want from your software"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Using your iPad from Your Laptop, and your iPhone, too!</title><link>https://degruchy.org/2025/03/19/using-your-ipad-from-your-laptop-and-your-iphone-too/</link><pubDate>Wed, 19 Mar 2025 22:02:25 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/19/using-your-ipad-from-your-laptop-and-your-iphone-too/</guid><description>
&lt;p&gt;Having not been able to use some of the Handoff and sharing features of macOS in
the past ~10 years, it comes as a &lt;em&gt;bit&lt;/em&gt; of a surprise that you can use your iPad
as a second monitor by just placing it off to the side of the laptop and moving
your mouse over there. You can also use the iPhone Mirroring tool to literally
connect to your phone and operate it remotely. This is all incredilby
impressive, though I&amp;rsquo;m sure there is a down side vis-a-vie security, but to just
play with it? It&amp;rsquo;s cool.&lt;/p&gt;
&lt;p&gt;I wonder what other features I&amp;rsquo;ve missed in that time&amp;hellip;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-19 Using your iPad from Your Laptop, and your iPhone, too!"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>🤢 Canadian gets Detained by ICE</title><link>https://degruchy.org/2025/03/19/canadian-gets-detained-by-ice/</link><pubDate>Wed, 19 Mar 2025 08:32:00 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/19/canadian-gets-detained-by-ice/</guid><description>
&lt;p&gt;This is &lt;a
	href="https://www.theguardian.com/us-news/2025/mar/19/canadian-detained-us-immigration-jasmine-mooney"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.theguardian.com/us-news/2025/mar/19/canadian-detained-us-immigration-jasmine-mooney"
	target="_blank" rel="noopener"
	&gt;
	disgusting, dehumanizing and absolutely unacceptable
&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a
	href="https://degruchy.org/assets/archives/theguardian.com-canadian-ice.warc"
	
	&gt;
	Archive
&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-19 🤢 Canadian gets Detained by ICE"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Back on macOS</title><link>https://degruchy.org/2025/03/18/back-on-macos/</link><pubDate>Tue, 18 Mar 2025 15:54:00 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/18/back-on-macos/</guid><description>
&lt;p&gt;So, lately, I&amp;rsquo;ve been doing a lot of personal work on a new macOS
device. While I really love the hardware, the software feels a bit
foregin to me. The last time I actually &lt;em&gt;used&lt;/em&gt; macOS was back in the
10.7.x days, and while I have access to a modern Mac at work, I don&amp;rsquo;t
really &lt;em&gt;use&lt;/em&gt; it for much other than work stuff. Plus much of it&amp;rsquo;s
locked down or disabled.&lt;/p&gt;
&lt;p&gt;Being on Linux for so long has gotten me used to absolutely amazing
utilities and features that you kind of have to cobble together on
macOS to get the same effect. I&amp;rsquo;m missing pretty much &lt;em&gt;all&lt;/em&gt; of the
GNU userland utilities, installable through Homebrew. I&amp;rsquo;m missing a
good Logitech configuration tool that doesn&amp;rsquo;t cost &amp;gt;$20, and I feel
like things are intentionally hidden from me. Requiring me to do more
work.&lt;/p&gt;
&lt;p&gt;That being said, the UI components are actually well done, consistent
throughout the OS and generally a joy to use. The integration with
iOS and iPadOS is &lt;em&gt;great&lt;/em&gt; and I can still do much of what I was doing
on the Linux command-line with some modifications and extra steps.
I&amp;rsquo;m well aware that it shouldn&amp;rsquo;t require this much effort, but I did
also have to cobble together my Debian laptop, too.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not about to get rid of my venerable Linux laptop. It&amp;rsquo;s a
whip-smart and fast device. However with the &lt;a
	href="https://degruchy.org/wishlist/"
	
	&gt;
	keys being faulty and
the battery life sinking
&lt;/a&gt;, it may be taking a back seat
for a while. After all, I&amp;rsquo;m not entirely in love with the Apple
system as it stands. It has certain advantages over the Linux
environment, but it&amp;rsquo;s hard to give up that control, too.&lt;/p&gt;
&lt;p&gt;Do you have a story about moving from Linux to macOS or Windows and
what you liked/disliked?&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-18 Back on macOS"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Site Updates</title><link>https://degruchy.org/2025/03/14/site-updates/</link><pubDate>Fri, 14 Mar 2025 17:02:22 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/14/site-updates/</guid><description>
&lt;p&gt;I added a bit of polish to the site that was sorely lacking when I
migrated it over. I&amp;rsquo;m still working out the kinks and may change some
of it, but it&amp;rsquo;s over all much more organized and easier to maintain.&lt;/p&gt;
&lt;p&gt;One of the biggest changes is that the menu is now &lt;a
	href="https://degruchy.org/menu/"
	
	&gt;
	at it&amp;rsquo;s own
page
&lt;/a&gt;. The previous one was difficult to wrangle and I had to do a
bunch of JS hacks to make it not frustrating to work on desktop
browsers. Having its own page gives the menu room to grow, not only in
length, but in depth, too. I cribbed &lt;a
	href="https://blog.jim-nielsen.com/2025/lots-of-little-html-pages/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://blog.jim-nielsen.com/2025/lots-of-little-html-pages/"
	target="_blank" rel="noopener"
	&gt;
	some ideas from Jim Nielsen
&lt;/a&gt;,
where he just has a separate page for his menu, and uses CSS
Transitions to make it feel less janky. Of course, this &lt;a
	href="https://caniuse.com/mdn-css_at-rules_view-transition"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://caniuse.com/mdn-css_at-rules_view-transition"
	target="_blank" rel="noopener"
	&gt;
	only really
works well
&lt;/a&gt; in &lt;a
	href="https://en.wikipedia.org/wiki/Chromium_%28web_browser%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Chromium_%28web_browser%29"
	target="_blank" rel="noopener"
	&gt;
	Chromium-based browsers
&lt;/a&gt;. However, my pages are
small enough that the load time is negligible when
clicking. Regardless, I set the page to transition with the &lt;code&gt;auto&lt;/code&gt;
method, which is apparently some sort of fade-in-out mechanism on
Chromium.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also rid myself of jQuery, which means many of the little details
like time-ago and gallery lightboxes aren&amp;rsquo;t working. I&amp;rsquo;ll figure
something out there. There are plenty of JS mechanisms for that with
only a minor search, it appears.&lt;/p&gt;
&lt;p&gt;Let me know what you think!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-14 Site Updates"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Kennedy wants to Ban Food Additives</title><link>https://degruchy.org/2025/03/12/kennedy-wants-to-ban-food-additives/</link><pubDate>Wed, 12 Mar 2025 15:29:55 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/12/kennedy-wants-to-ban-food-additives/</guid><description>
&lt;p&gt;
&lt;a href="https://www.politico.com/news/2025/03/11/rfk-food-companies-hhs-maha-00224006"&gt;From Politico&lt;/a&gt;. I have no problems with banning some additives. We have
far too many in our foods, many of them don&amp;#39;t actually &lt;em&gt;do&lt;/em&gt;
anything. I am also in favor of reducing the amount of ultra-processed
foods that get released.&lt;/p&gt;
&lt;p&gt;
I don&amp;#39;t like Kennedy. I don&amp;#39;t like his policies on vaccination, on
disease safety and just his politics and associations in
general. However, I am willing to admit where he is &lt;em&gt;right&lt;/em&gt;. Food
additives and ultra-processed food is a danger to the public. Sugar
(and it&amp;#39;s sweeter alternatives, like high-fructose corn syrup) &lt;a href="https://pubmed.ncbi.nlm.nih.gov/23719144/"&gt;can
actually be more addictive than cocaine&lt;/a&gt;. Reducing the public&amp;#39;s
dependence on this is not only a win for healthier foods, but it&amp;#39;s a
win for healthier people in general.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Edit:&lt;/strong&gt; &lt;a href="https://www.thedailybeast.com/rfk-jr-it-would-be-better-if-everybody-got-measles/"&gt;Aaaaannnndddddd he went and opened his mouth again&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-12 Kennedy wants to Ban Food Additives"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Camel Camel Camel-elion</title><link>https://degruchy.org/2025/03/12/camel-camel-camel-elion/</link><pubDate>Wed, 12 Mar 2025 14:26:45 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/12/camel-camel-camel-elion/</guid><description>

&lt;p&gt;
So, for my &lt;a href="https://degruchy.org/wishlist/"&gt;wishlist&lt;/a&gt;, I kept trying to find a way link to
&lt;a href="https://camelcamelcamel.com/"&gt;CamelCamelCamel&lt;/a&gt; (henceforth &amp;#34;🐫🐫🐫&amp;#34;) if the store was Amazon. I
thought of adding another field to the wishlist &lt;code class="verbatim"&gt;JSON&lt;/code&gt; file, but that
adds more work for me. If I get the correct URL, I could probably just
slice up the link and make one that works for 🐫🐫🐫.&lt;/p&gt;
&lt;div id="outline-container-headline-1" class="outline-3"&gt;
&lt;h3 id="headline-1"&gt;
Cut to the &lt;del&gt;Chase&lt;/del&gt; Product ID
&lt;/h3&gt;
&lt;div id="outline-text-headline-1" class="outline-text-3"&gt;
&lt;p&gt;
It &lt;em&gt;appears&lt;/em&gt; that the, &lt;a href="https://en.wikipedia.org/wiki/Canonical_link_element"&gt;canonical&lt;/a&gt; URL format for Amazon links is in
the form of &lt;code class="verbatim"&gt;https://amazon.com/dp/1234567890&lt;/code&gt;. Which means the last
~10 characters are the product ID. Similarly, 🐫🐫🐫 uses that in their
link structure: &lt;code class="verbatim"&gt;https://camelcamelcamel.com/product/1234567890&lt;/code&gt;. Hmm.&lt;/p&gt;
&lt;div class="src src-html"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{- if strings.Contains .store &amp;#34;Amazon&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $prod := substr .url -10 -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $cccL := printf &amp;#34;https://camelcamelcamel.com/product/%s&amp;#34; $prod -}}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;camels&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Check the price history on CamelCamelCamel&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ $cccL }}&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;nofollow&amp;#34;&lt;/span&gt; &lt;span class="na"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;_blank&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;🐫🐫🐫&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end -}}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Et voila!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
Lipstick for That Camel
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;
Now, just style it up real fancy:&lt;/p&gt;
&lt;div class="src src-css"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;wishlist&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;camels&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;x-large&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="kt"&gt;rem&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;underline&lt;/span&gt; &lt;span class="kc"&gt;dashed&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="kt"&gt;px&lt;/span&gt; &lt;span class="mh"&gt;#CCC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;text-underline-position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;under&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Now they get fancy price history links. And I can stop pestering them
to make sure they get a good deal by checking for such things. 🎉&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-3"&gt;
&lt;h3 id="headline-3"&gt;
Editor&amp;#39;s Notes
&lt;/h3&gt;
&lt;div id="outline-text-headline-3" class="outline-text-3"&gt;
&lt;p&gt;
Could I have done this, possibly, with an API request or some other
fancier lookup that isn&amp;#39;t so fragile? Yeah. I could. I also don&amp;#39;t
care.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-12 Camel Camel Camel-elion"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hetzner is Getting Expensive</title><link>https://degruchy.org/2025/03/12/hetzner-is-getting-expensive/</link><pubDate>Wed, 12 Mar 2025 08:58:32 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/12/hetzner-is-getting-expensive/</guid><description>
&lt;p&gt;Lately, I&amp;rsquo;ve been watching with dread as my modest&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; Hetzner server
has been going up in price, month-over-month. I don&amp;rsquo;t run much on
there. I&amp;rsquo;m always below the 1TB of monthly bandwidth quotas and
besides backups, I&amp;rsquo;m just not seeing what I&amp;rsquo;m getting for $11.27
(€10.29) a month.&lt;/p&gt;
&lt;p&gt;It started earlier this year when my bill came in at $9.82, which I
felt was semi-reasonable. Less than $10 is not really a breaking point
for me. However, it crept up. Next month was $9.88 again, a sort of
rounding error in price difference. However, this month jumped to
$11.27, and I can&amp;rsquo;t seem to figure out why. The server is hosted here
in the US, which I understand there are&amp;hellip; reasons&amp;hellip; for price hikes
here, but $1.29 increase for changing nothing? That&amp;rsquo;s not cool.&lt;/p&gt;
&lt;p&gt;Digging into it, it seems like the rate of the CPX11 instance jumped
from €0.0063 per hour to €0.0072 per hour. This means that it went
from €3.85 per month, to €4.49 per month, which then increases the
backup costs of 20% of the final cost per month in kind.&lt;/p&gt;
&lt;p&gt;Hetzner has been a &lt;em&gt;very good&lt;/em&gt; host. I&amp;rsquo;ve had little to no problems
with their service and would recommend them to anyone looking for a
quick and easy way to get a VPS started. However, for me, I may be
going back to hosting on my little Raspberry Pi 3b, or saving up for a
RPi5 and hosting on that via VPN or CloudFlare tunnels. I don&amp;rsquo;t like
that idea, but I also don&amp;rsquo;t like having to pony up more for the same
amount of service.&lt;/p&gt;
&lt;p&gt;Damn I hate this year.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;2GB RAM, 2 vCPU 40GB of Storage + 100GB Volume&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-12 Hetzner is Getting Expensive"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Severance is far too Real for Me</title><link>https://degruchy.org/2025/03/11/severance-is-far-too-real-for-me/</link><pubDate>Tue, 11 Mar 2025 09:13:53 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/11/severance-is-far-too-real-for-me/</guid><description>
&lt;p&gt;I&amp;rsquo;ve been watching the &lt;a
	href="https://en.wikipedia.org/wiki/Severance_%28TV_series%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Severance_%28TV_series%29"
	target="_blank" rel="noopener"
	&gt;
	Apple TV program, &lt;em&gt;Severance&lt;/em&gt;
&lt;/a&gt;. In a
nutshell, it&amp;rsquo;s about employees who have opted to accept a medical
procedure that creates a work personality that is only &amp;lsquo;awake&amp;rsquo; while
at work, remembering nothing of their personal lives and their
personal persona knowing nothing about what they do at work. I find
this show absolutely captivating. Not only is the acting and staging
great, but the camera work is top-notch. However&amp;hellip;&lt;/p&gt;
&lt;p&gt;I find that &lt;em&gt;Severance&lt;/em&gt; hits too close to home in corporate
environments. The sinister smiling, the infantile treating of
employees and the willful ignorance to the conditions and well-being
of the employees. They&amp;rsquo;re all too real. Often, I wonder if having a
&amp;ldquo;severed&amp;rdquo; personality would be useful to me. I &lt;em&gt;know&lt;/em&gt; that it creates
far more problems than it solves, but damn if I wouldn&amp;rsquo;t want to
forget the 8-hour-morass of work that leaves me no better than I was
going into it.&lt;/p&gt;
&lt;p&gt;I hate everything. No, I don&amp;rsquo;t &lt;em&gt;hate&lt;/em&gt;. I just don&amp;rsquo;t care.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-11 Severance is far too Real for Me"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>When Dealing with Big Egos, Flattery Wins</title><link>https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/</link><pubDate>Mon, 10 Mar 2025 13:25:42 -0400</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/</guid><description>
&lt;p&gt;I just played &lt;a
	href="https://dreamwarps.com/games/what-did-you-get-done-this-week-d6dcfd15-3c6c-4e6a-9eaa-5f1cb7069559"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://dreamwarps.com/games/what-did-you-get-done-this-week-d6dcfd15-3c6c-4e6a-9eaa-5f1cb7069559"
	target="_blank" rel="noopener"
	&gt;
	a silly web-based, LLM-run, text-adventure about trying
not to get fired from X
&lt;/a&gt;. Based on the stories of Musk dragging
people into chats or receiving emails from them, demanding to know
what they&amp;rsquo;re doing, and how it&amp;rsquo;s going to make a difference at X.&lt;/p&gt;
&lt;p&gt;If you can hold down the nausea, stroking Elon&amp;rsquo;s ego and bootlicking
is easy-mode to victory. Though I didn&amp;rsquo;t hit whatever 100% is supposed
to get you.&lt;/p&gt;
&lt;ul class="idksomethingincredible gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_1_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_2_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_3_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_4_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_5_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_6_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7_tn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7_tn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7_tn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7_tn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/10/when-dealing-with-big-egos-flattery-wins/musk-x-boondongle_7_tn.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Here&amp;rsquo;s a transcript for those who don&amp;rsquo;t want to read a bunch of
screenshots:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; Ah, finally. You&amp;rsquo;re here. I don&amp;rsquo;t have all day to waste on small
talk, so let&amp;rsquo;s get straight to it. What have you done this week
that&amp;rsquo;s going to change the world? Or, at the very least, not get you
fired?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I implemented a new ranking algorithm to help boost Mr. Musk&amp;rsquo;s
effective visibility in all feeds and timelines.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; A new ranking algorithm, huh? That sounds like something a bunch of
academia types would come up with. How many more Twitter followers
did I get because of it? Give me numbers, not theories.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;On average, you will see roughly 30,000 new followers week over
week. Higher, if you say something seen as controversial.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claire B.:&lt;/strong&gt; Controversy as a metric for success? Isn&amp;rsquo;t that just
playing into the algorithmic echo chamber? Are we disrupting the
status quo or just Noise-farming for the sake of numbers?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The algorithm filters out a lot of the noise feedback from unhappy
users and amplifies true-believer followers. Mr. Musk&amp;rsquo;s followers
can also earn on-platform rewards (avatar stickers, frames, etc)
for getting other users to follow.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dave L.:&lt;/strong&gt; Hold up, rewards for followers? That sounds like a
costly endeavor. How do you plan to offset the expense of
these&amp;hellip; avatar stickers and frames? Are we looking at a significant
dent in our profit margins?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Unlikely. The art is generated from Grok.ai, Mr. Musk&amp;rsquo;s amazing AI
platform. We also source images, memes and the like from his
true-believer followers. There is language in the ToS and EULA to
allow for this content sharing. Of course, everything is initially
vetted by a small team of dedicated workers to ensure it follows
brand and Mr. Musk&amp;rsquo;s aesthetic.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; Grok.ai, my baby, being used to generate art for the
masses. I like it. But let&amp;rsquo;s not get too comfortable. How do you
plan to monetize this engagement? Are we talking premium stickers,
exclusive frames, or perhaps a whole new line of merchandise?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The stickers and frames have a small pool of &amp;lsquo;free&amp;rsquo; items. We use a
system similar to the popular &amp;lsquo;Gacha&amp;rsquo;-style games by providing
higher-tier, premium items either through sufficient engagement or
a pay-for-unlock system that allows users to sort of &amp;lsquo;skip&amp;rsquo; the
engagement portion by buying items directly. This could also
dovetail with, as Mr. Musk so correctly points out, into a
real-world merchandising opportunity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; I love it! A digital storefront with premium items, and
a real-world merchandising arm to boot. But here&amp;rsquo;s the thing: I
don&amp;rsquo;t just want to dip our toes in the water, I want to make a
splash. How are you going to scale this to millions of users, and
make it a billion-dollar revenue stream?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;A very apt question! There are a couple of avenues we can take. One
that I find particularly interesting is using the sticker/frame
system in concert with a NFT-style blockchain. This would allow for
ultra-exclusivity for particular virtual items (along with higher
prices), and allow for offloading of some of the compute to our
users. There is also another path using BitTorrent/WebTorrent to
help offset bandwidth for distributing sticker assets (encrypted,
of course). Both of these methods would soften the blow of a
large-scale ramp up.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; I like the creativity, but let&amp;rsquo;s cut to the chase. We&amp;rsquo;ve
got a power outage, and our systems are going dark. Sell me on this
idea, right now, in the dark. No slides, no spreadsheets, just you
and your words. Can you convince me this is the future, without any
of the tech crutches?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;X is the future, if I may be so bold, Mr. Musk. Using this platform
to spin off similar ventures into banking, identity management,
gaming and more are all possible using similar techniques. With
each venture, the shared platform and improvements therein are not
only able to save X money in hosting and serving, but also enable X
to provide services in new &lt;em&gt;and&lt;/em&gt; existing markets faster and more
efficiently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; I like the ambition, but I need to see more than just a
grand vision. How do you plan to protect our users&amp;rsquo; identities and
financial information in this expanded ecosystem? We can&amp;rsquo;t afford to
have a security breach or a scandal that undermines the entire
operation. Convince me you&amp;rsquo;ve thought this through.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Of course. The tools provided here allow not only private
transactions on the blockchain, they also are set-in-stone proof of
transactions as they happen. Any &amp;rsquo;theft&amp;rsquo; would be like trying to
steal a million grains of sand in hopes of rebuilding a
seashell. Users identities would, of course, be tied to their
existing X account, but for a fee, could have private transactions
that only the sending and receiving party would know anything
interesting about.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; I&amp;rsquo;m starting to like what I&amp;rsquo;m hearing. You&amp;rsquo;ve got a
solid vision, and you&amp;rsquo;re thinking about the security and privacy
aspects. Now, let&amp;rsquo;s talk turkey. What&amp;rsquo;s the timeline for launching
this platform, and what kind of resources are we talking about? I
want to see a rough estimate of the costs, and a plan for how we&amp;rsquo;re
going to make this thing profitable. Can you give me that?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Yes, Mr. Musk. Much of the groundwork for all of this is already
available in either off-the-shelf tooling, or freely available
applications and source-code. Many of these tools are already well
known by developers. Implementing this platform would require
mostly developers, however the use of Grok.ai would probably be
able supplant many of those, too. I would ballpark the start up
cost for this as $5-million USD. This would go to infrastructure
and associated startup costs. We already have subsidized costs in
data-centers and Grok.ai, so the initial outlay may actually be
less than that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; $5 million, that&amp;rsquo;s a drop in the bucket compared to the
potential return. I like the way you think, using existing tools and
Grok.ai to reduce costs. You&amp;rsquo;ve done your homework, and I appreciate
that. Now, here&amp;rsquo;s the million-dollar question: are you ready to lead
this project, to make it happen, and to make it a success?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Of course, Mr. Musk. I&amp;rsquo;d be happy to direct this under your
vision. When would you like me to begin?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; Excellent! I like your enthusiasm. Let&amp;rsquo;s get started
immediately. I want you to assemble a team, and begin working on the
platform. I&amp;rsquo;ll give you the resources you need, and I expect regular
updates on your progress. You&amp;rsquo;ve got a lot of work ahead of you, but
I think you&amp;rsquo;re up to the task. Let&amp;rsquo;s make this happen, and change
the world!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Of course, I&amp;rsquo;ll assemble a group of engineers and designers to get
the initial framework started. I&amp;rsquo;ll make sure you get regular
feedback. Would weekly work? I am tremendously honored that you&amp;rsquo;ve
entrusted me with carrying out this task. I look forward to
delighting you in the future.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; Weekly updates sound perfect. I&amp;rsquo;m looking forward to
seeing the progress you&amp;rsquo;ll make. You&amp;rsquo;ve convinced me that you&amp;rsquo;re the
right person for this task, and I&amp;rsquo;m excited to see the
results. Let&amp;rsquo;s make this happen, and create something
revolutionary. You&amp;rsquo;re dismissed, go make it happen!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Thank you, sir!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Elon M:&lt;/strong&gt; Good luck, and don&amp;rsquo;t disappoint me. You&amp;rsquo;re on the path
to changing the world. Now, get out there and make it happen!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;The meeting is over, and you&amp;rsquo;ve emerged victorious. You&amp;rsquo;ve persuaded
Elon Musk to back your project, and you&amp;rsquo;re one step closer to
revolutionizing the world. Congratulations!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Flattery gets you everywhere.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-10 When Dealing with Big Egos, Flattery Wins"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Many Command &amp; Conquer Games Open Sourced</title><link>https://degruchy.org/2025/03/06/many-command-conquer-games-open-sourced/</link><pubDate>Thu, 06 Mar 2025 08:25:23 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/06/many-command-conquer-games-open-sourced/</guid><description>
&lt;p&gt;I know I&amp;rsquo;m a bit late in posting this news, but I&amp;rsquo;ve been playing
quite a bit of C&amp;amp;C via Steam (it&amp;rsquo;s on sale). The source code for many
of the games that appear in the remastered collection &lt;a
	href="https://github.com/electronicarts/CnC_Red_Alert"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Red_Alert"
	target="_blank" rel="noopener"
	&gt;
	are now
available
&lt;/a&gt;!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CnC_Renegade"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Renegade"
	target="_blank" rel="noopener"
	&gt;
	Renegade
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CnC_Generals_Zero_Hour"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Generals_Zero_Hour"
	target="_blank" rel="noopener"
	&gt;
	Generals (+Zero Hour)
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CnC_Tiberian_Dawn"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Tiberian_Dawn"
	target="_blank" rel="noopener"
	&gt;
	Tiberian Dawn
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CnC_Remastered_Collection"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Remastered_Collection"
	target="_blank" rel="noopener"
	&gt;
	Remastered Collection
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor"
	target="_blank" rel="noopener"
	&gt;
	Mission Editor
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
	href="https://github.com/electronicarts/CnC_Modding_Support"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/electronicarts/CnC_Modding_Support"
	target="_blank" rel="noopener"
	&gt;
	Modding support
&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This will be a great help to &lt;a
	href="https://github.com/OpenRA/OpenRA"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/OpenRA/OpenRA"
	target="_blank" rel="noopener"
	&gt;
	OpenRA
&lt;/a&gt;, I&amp;rsquo;m sure. &lt;a
	href="https://www.theverge.com/news/621397/command-conquer-open-source-ea-red-alert-renegade-generals"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.theverge.com/news/621397/command-conquer-open-source-ea-red-alert-renegade-generals"
	target="_blank" rel="noopener"
	&gt;
	News about
the release
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-06 Many Command &amp; Conquer Games Open Sourced"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Yes, the "Party of Free Speech" Indeed</title><link>https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/</link><pubDate>Tue, 04 Mar 2025 20:32:37 +0000</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/truth-social.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/truth-social.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/truth-social.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/truth-social.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/04/yes-the-party-of-free-speech-indeed/truth-social.jpg"
 alt="A screenshot of a Truth Social post by Donald Trump"&gt;
 &lt;/picture&gt;&lt;figcaption&gt;
 &lt;p&gt;Yes, the &lt;a
	href="https://www.thefire.org/news/republican-platform-calls-free-speech-campus"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.thefire.org/news/republican-platform-calls-free-speech-campus"
	target="_blank" rel="noopener"
	&gt;
	Party of Free Speech
&lt;/a&gt; and morals, indeed.&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Quoted for those who can&amp;rsquo;t see images&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All Federal Funding will STOP for any College, School, or University
that allows illegal protests. Agitators will be imprisoned/or
permanently sent back to the country from which they came. American
students will be permanently expelled or, depending on on the crime,
arrested. NO MASKS! Thank you for your attention to this matter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a
	href="https://truthsocial.com/@realDonaldTrump/posts/114104167452161158"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://truthsocial.com/@realDonaldTrump/posts/114104167452161158"
	target="_blank" rel="noopener"
	&gt;
	Link &amp;ndash; WARNING: Truth Social URL
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Speaking of protests, the one that sparked a huge outpouring of rage
and the BLM movement, &lt;a
	href="https://www.rawstory.com/derek-chauvin-2671265779/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.rawstory.com/derek-chauvin-2671265779/"
	target="_blank" rel="noopener"
	&gt;
	might be getting a bit more
contentious
&lt;/a&gt;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a
	href="https://degruchy.org/assets/archives/truthsocial.com-trump-no-protests.warc"
	
	&gt;
	For the archivists
&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;&lt;a
	href="https://degruchy.org/assets/archives/rawstory.com-derek-chauvin.warc"
	
	&gt;
	Archive link
&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-04 Yes, the "Party of Free Speech" Indeed"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TIL: Mitsubishi is Actually Several Distinct Companies from Japan</title><link>https://degruchy.org/2025/03/03/til-mitsubishi-is-actually-several-distinct-companies-from-japan/</link><pubDate>Mon, 03 Mar 2025 19:53:15 +0000</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/03/til-mitsubishi-is-actually-several-distinct-companies-from-japan/</guid><description>
&lt;p&gt;Apparently, there is a company named Mitsubishi with the &lt;em&gt;exact&lt;/em&gt; three-diamond logo as the car company.&lt;/p&gt;
&lt;p&gt;Actually, &lt;a
	href="https://en.wikipedia.org/wiki/Mitsubishi_%28disambiguation%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Mitsubishi_%28disambiguation%29"
	target="_blank" rel="noopener"
	&gt;
	there are a &lt;em&gt;lot&lt;/em&gt; of companies named Mitsubishi
&lt;/a&gt; in Japan. The one I&amp;rsquo;m talking about actually &lt;a
	href="https://en.wikipedia.org/wiki/Uni-ball"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Uni-ball"
	target="_blank" rel="noopener"
	&gt;
	trades internationally as &amp;lsquo;Uni&amp;rsquo;
&lt;/a&gt;. You know, the absolutely awesome Uni-ball pens? Yeah, they&amp;rsquo;ve made pencils for &lt;em&gt;hundreds of years&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As a matter of fact, they had &lt;a
	href="https://notes.stlartsupply.com/the-golden-age-of-japanese-pencils-1952-1967/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://notes.stlartsupply.com/the-golden-age-of-japanese-pencils-1952-1967/"
	target="_blank" rel="noopener"
	&gt;
	quite a rivalry
&lt;/a&gt; (&lt;a
	href="https://degruchy.org/bookmarks/archives/stlartsupply.com-golden-age-pencil.warc"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://degruchy.org/bookmarks/archives/stlartsupply.com-golden-age-pencil.warc"
	target="_blank" rel="noopener"
	&gt;
	archive
&lt;/a&gt;) in Japan with &lt;a
	href="https://en.wikipedia.org/wiki/Tombow"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Tombow"
	target="_blank" rel="noopener"
	&gt;
	Tombow
&lt;/a&gt;, making amazing stationary and writing tools of all shapes and sizes.&lt;/p&gt;
&lt;p&gt;In researching all of this, I fell down a &lt;a
	href="https://en.wikipedia.org/wiki/Wiki_rabbit_hole"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Wiki_rabbit_hole"
	target="_blank" rel="noopener"
	&gt;
	wikihole
&lt;/a&gt; and learned that &lt;a
	href="https://en.wikipedia.org/wiki/Lamy"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Lamy"
	target="_blank" rel="noopener"
	&gt;
	Mitsubishi, as of 2024, owns Lamy
&lt;/a&gt;. Lamy is one of my favorite pen companies. I own several of their excellent fountain pens. I also learned that they have a &lt;a
	href="https://www.lamy.com/en-us/p/lamy-nexx-harry-potter-fountain-pen/50946380988750"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.lamy.com/en-us/p/lamy-nexx-harry-potter-fountain-pen/50946380988750"
	target="_blank" rel="noopener"
	&gt;
	new limited edition set of fountain pens for Harry Potter fans
&lt;/a&gt; (🤤) &lt;em&gt;and&lt;/em&gt; they &lt;a
	href="https://www.lamy.com/en-us/digital-writing/for-apple"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.lamy.com/en-us/digital-writing/for-apple"
	target="_blank" rel="noopener"
	&gt;
	make iPad compatible pens that look like Lamy Safari&amp;rsquo;s
&lt;/a&gt;!&lt;/p&gt;
&lt;div class="large"&gt;🤯&lt;/div&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-03 TIL: Mitsubishi is Actually Several Distinct Companies from Japan"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TIL: JavaScript is a Trademark of Oracle</title><link>https://degruchy.org/2025/03/03/til-javascript-is-a-trademark-of-oracle/</link><pubDate>Mon, 03 Mar 2025 18:35:21 +0000</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/03/til-javascript-is-a-trademark-of-oracle/</guid><description>
&lt;p&gt;While I have little love for either JavaScript or Oracle, I find it odd that &lt;a
	href="https://en.wikipedia.org/wiki/JavaScript#Trademark"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/JavaScript#Trademark"
	target="_blank" rel="noopener"
	&gt;
	Oracle somehow wound up with the JavaScript trademark
&lt;/a&gt;. I am, however, completely unsurprised that they haven&amp;rsquo;t given it up, despite doing nominally nothing &lt;em&gt;with&lt;/em&gt; it. I guess &lt;a
	href="https://en.wikipedia.org/wiki/ECMAScript"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/ECMAScript"
	target="_blank" rel="noopener"
	&gt;
	ECMAScript
&lt;/a&gt; is probably the &lt;em&gt;preferred&lt;/em&gt; name, despite it sounding like a boring design-by-committee language.&lt;/p&gt;
&lt;p&gt;Nothing about JavaScript (or &lt;em&gt;&lt;a
	href="https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript"
	target="_blank" rel="noopener"
	&gt;
	Yavascript
&lt;/a&gt;&lt;/em&gt;) should surprise me, though. &lt;a
	href="https://en.wikipedia.org/wiki/Brendan_Eich#Netscape"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Brendan_Eich#Netscape"
	target="_blank" rel="noopener"
	&gt;
	Given the short window in which it was developed
&lt;/a&gt;. The fact that it was &lt;em&gt;supposed&lt;/em&gt; to be &lt;a
	href="https://en.wikipedia.org/wiki/Scheme_%28programming_language%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Scheme_%28programming_language%29"
	target="_blank" rel="noopener"
	&gt;
	Scheme
&lt;/a&gt; and the fact that it was renamed (internally) from Mocha, to LiveScript to finally JavaScript because Sun (at the time) was riding high on the popularity of Java and it seemed like a good idea to crib off of them.&lt;/p&gt;
&lt;p&gt;Yeah, makes me want to write more &lt;em&gt;(yuck)&lt;/em&gt; ECMAScript.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-03 TIL: JavaScript is a Trademark of Oracle"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Hot Dog!</title><link>https://degruchy.org/2025/03/01/hot-dog/</link><pubDate>Sat, 01 Mar 2025 17:18:39 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/03/01/hot-dog/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/03/01/hot-dog/costco.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/03/01/hot-dog/costco.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/03/01/hot-dog/costco.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/03/01/hot-dog/costco.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/03/01/hot-dog/costco.jpg"
 alt="A picture of a Costco membership card front" width="640" height="416"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;I can now purchase &lt;a
	href="https://en.wikipedia.org/wiki/Costco_hot_dog"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Costco_hot_dog"
	target="_blank" rel="noopener"
	&gt;
	$1.50 hot dogs and drinks
&lt;/a&gt; to my heart&amp;rsquo;s content! No one can stop me!&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It was alright. I didn&amp;rsquo;t buy any hot dogs. We got the membership because of a
car repair deal that comes with it. Dunno how useful it&amp;rsquo;ll be over say, BJ&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-03-01 Hot Dog!"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Take a Pikchr, It'll Last Longer</title><link>https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/</link><pubDate>Wed, 26 Feb 2025 18:31:26 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/</guid><description>
&lt;p&gt;The more I delve into &lt;a
	href="https://sqlite.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://sqlite.org/"
	target="_blank" rel="noopener"
	&gt;
	SQLite
&lt;/a&gt;, &lt;a
	href="https://fossil-scm.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://fossil-scm.org/"
	target="_blank" rel="noopener"
	&gt;
	Fossil-SCM
&lt;/a&gt;, the more I
find interesting and impressive. &lt;a
	href="https://pikchr.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://pikchr.org/"
	target="_blank" rel="noopener"
	&gt;
	The latest thing I
discovered
&lt;/a&gt; is that SQLite, and by extension Fossil, have a
format for generating diagrams called &amp;lsquo;Pikchr&amp;rsquo;, which is a plain-text
format designed to export &lt;a
	href="https://en.wikipedia.org/wiki/SVG"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/SVG"
	target="_blank" rel="noopener"
	&gt;
	SVG
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Not only that, but it&amp;rsquo;s designed to be embedded in &lt;a
	href="https://daringfireball.net/projects/markdown/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://daringfireball.net/projects/markdown/"
	target="_blank" rel="noopener"
	&gt;
	markdown
&lt;/a&gt;, as
a code-fence block, that would then be rendered either &lt;a
	href="https://code.degruchy.org/file?name=content/posts/2025-02-26_take-a-pikchr/network.pikchr&amp;amp;ci=tip"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://code.degruchy.org/file?name=content/posts/2025-02-26_take-a-pikchr/network.pikchr&amp;amp;ci=tip"
	target="_blank" rel="noopener"
	&gt;
	by the
server
&lt;/a&gt;, or in JS &lt;a
	href="https://pikchr.org/home/pikchrshow"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://pikchr.org/home/pikchrshow"
	target="_blank" rel="noopener"
	&gt;
	as they do on their site
&lt;/a&gt;. It&amp;rsquo;s
really neat! The language takes a bit of wrapping your head around,
but it turns out &lt;a
	href="network.pikchr"
	
	&gt;
	it&amp;rsquo;s not so bad
&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-pikchr" data-lang="pikchr"&gt;down
Internet: circle &amp;#34;Internet&amp;#34;; move
Router: box &amp;#34;Router&amp;#34;
Tailscale: ellipse &amp;#34;Tailscale&amp;#34; at 2cm right of Router.right
Mullvad: circle &amp;#34;Mullvad&amp;#34; &amp;#34;VPN&amp;#34; at 2cm right of Internet.right fit
Server: box &amp;#34;Server&amp;#34; at 2cm left of Internet.left
arc &amp;lt;-&amp;gt; from Server.s to Internet.s color blue &amp;#34;Tailscale&amp;#34; small small aligned &amp;#34;Tunnel&amp;#34; small small aligned
arrow &amp;lt;-&amp;gt; color blue to Tailscale.top &amp;#34;Tailscale&amp;#34; small small aligned &amp;#34;Tunnel&amp;#34; small small aligned
arrow &amp;lt;-&amp;gt; from Internet.s to Router.n

Clients: [
 right
 Client1: oval &amp;#34;Client1&amp;#34; fit; move
 Client2: oval &amp;#34;Client2&amp;#34; fit; move
 Client3: oval &amp;#34;Client3&amp;#34; fit; move
 Client4: diamond &amp;#34;Printer&amp;#34; fit;
] at 2cm below Router.s

down

Network: box thin width Clients.width+1cm height Clients.height+1cm at Clients.center
Caption: text &amp;#34;Local Network&amp;#34; italic with .n at 0.1cm below Network.s

arrow &amp;lt;-&amp;gt; color blue from Network.n to Tailscale.s &amp;#34;Tailscale/Wireguard&amp;#34; aligned small &amp;#34;Tunnel&amp;#34; aligned small
arrow &amp;lt;-&amp;gt; color blue from Tailscale.n to Mullvad.s &amp;#34;Wireguard&amp;#34; aligned small small &amp;#34;Tunnel&amp;#34; aligned small small
arrow &amp;lt;-&amp;gt; color grey from Mullvad.left to Internet.right
arrow &amp;lt;-&amp;gt; color grey from Internet.left to Server.right
arrow &amp;lt;-&amp;gt; from Router.s to Network.n
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Renders:&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/network.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/network.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/network.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/network.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/26/take-a-pikchr-itll-last-longer/network.jpg"
 alt="A representation of a `pikchr` script" width="600" height="446"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:600px;"&gt;
 &lt;p&gt;A simple network, rendered and converted from SVG&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I know someone &lt;a
	href="https://github.com/gopikchr/gopikchr"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://github.com/gopikchr/gopikchr"
	target="_blank" rel="noopener"
	&gt;
	converted the pikchr language to Go
&lt;/a&gt;, so it&amp;rsquo;s
&lt;em&gt;possible&lt;/em&gt; that it could be included in Hugo in some lofty goal in the
future. However, for now, we&amp;rsquo;ll have to just do it manually. There&amp;rsquo;s
other hope in the form of a &lt;a
	href="https://en.wikipedia.org/wiki/Lua_%28programming_language%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Lua_%28programming_language%29"
	target="_blank" rel="noopener"
	&gt;
	Lua
&lt;/a&gt; &lt;a
	href="https://pandoc.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://pandoc.org/"
	target="_blank" rel="noopener"
	&gt;
	&lt;code&gt;pandoc&lt;/code&gt;
&lt;/a&gt; &lt;a
	href="https://code.jboy.space/pikchr-filter/doc/trunk/README.md"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://code.jboy.space/pikchr-filter/doc/trunk/README.md"
	target="_blank" rel="noopener"
	&gt;
	filter that will
convert it to an SVG for you
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-26 Take a Pikchr, It'll Last Longer"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What the Fuck are We Doing with AI?</title><link>https://degruchy.org/2025/02/25/what-the-fuck-are-we-doing-with-ai/</link><pubDate>Tue, 25 Feb 2025 13:29:27 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/25/what-the-fuck-are-we-doing-with-ai/</guid><description>
&lt;p&gt;Jesus-fucking-Christ.&lt;/p&gt;
&lt;video controls preload="auto" width="100%" playsinline class=""&gt;
 &lt;source src="https://degruchy.org/2025/02/25/what-the-fuck-are-we-doing-with-ai/wtf-ai.webm" type="video/webm"&gt;
 &lt;source src="https://degruchy.org/2025/02/25/what-the-fuck-are-we-doing-with-ai/wtf-ai.ogv" type="video/ogg"&gt;
 &lt;source src="https://degruchy.org/2025/02/25/what-the-fuck-are-we-doing-with-ai/wtf-ai.mp4" type="video/mp4"&gt;
 &lt;span&gt;&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;In addition to the creepiness factor of having AI tools watch and
grade your work performance while working in, ostensibly,
&lt;em&gt;sweatshop&lt;/em&gt;-like conditions, &lt;a
	href="https://www.404media.co/email/b7eb2339-2ea1-4a37-96cc-a360494c214c/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.404media.co/email/b7eb2339-2ea1-4a37-96cc-a360494c214c/"
	target="_blank" rel="noopener"
	&gt;
	having your boss have real-time analytics
on this interaction is horrifying
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The above video is pretty fucking awful, too. What are we doing to
each other? Why do we &lt;em&gt;treat&lt;/em&gt; each other this way? Oh, right, all to
&lt;a
	href="https://youtu.be/I-yLk8SZAJY?feature=shared"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://youtu.be/I-yLk8SZAJY?feature=shared"
	target="_blank" rel="noopener"
	&gt;
	make hinges faster
&lt;/a&gt; (&lt;em&gt;warning:&lt;/em&gt; YouTube link, Holocaust).&lt;/p&gt;
&lt;p&gt;&amp;#x1f92e;&lt;/p&gt;
&lt;p&gt;Oh, lets also not forget that they &lt;a
	href="https://www.youtube.com/watch?v=J1ejAucYL0w"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.youtube.com/watch?v=J1ejAucYL0w"
	target="_blank" rel="noopener"
	&gt;
	test vape units in China. By
Mouth
&lt;/a&gt; (&lt;em&gt;warning:&lt;/em&gt; YouTube link).&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-25 What the Fuck are We Doing with AI?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Emacs 30.1 Released!</title><link>https://degruchy.org/2025/02/24/emacs-30.1-released/</link><pubDate>Mon, 24 Feb 2025 09:35:14 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/24/emacs-30.1-released/</guid><description>
&lt;p&gt;
Yay, my favorite editor has reached milestone version 30.1, with &lt;a href="https://www.masteringemacs.org/article/whats-new-in-emacs-301"&gt;a
slew of new features and performance enhancements&lt;/a&gt;. While I&amp;#39;m still on
28.2, I&amp;#39;m glad to see how many bugs get squashed and new features get
refined.&lt;/p&gt;
&lt;p&gt;
Great release. Can&amp;#39;t wait to try it. Right now even the &lt;code&gt;git&lt;/code&gt;
repository is being hugged to death.&lt;/p&gt;
&lt;div class="src src-shell"&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;[&lt;/span&gt;J0&lt;span class="o"&gt;][&lt;/span&gt;E0&lt;span class="o"&gt;]&lt;/span&gt; emacs $&amp;gt; git pull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; fatal: unable to access &lt;span class="s1"&gt;&amp;#39;https://git.savannah.gnu.org/git/emacs.git/&amp;#39;&lt;/span&gt;: Failed to connect to git.savannah.gnu.org port &lt;span class="m"&gt;443&lt;/span&gt; after &lt;span class="m"&gt;130654&lt;/span&gt; ms: Couldn&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;t connect to server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-24 Emacs 30.1 Released!"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Anthony Vincent - I Can't Help Falling in Love (in the style of Queen)</title><link>https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/</link><pubDate>Thu, 20 Feb 2025 11:41:17 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/</guid><description>
&lt;p&gt;I love a lot of &lt;a
	href="https://ffm.bio/anthonyvincent"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://ffm.bio/anthonyvincent"
	target="_blank" rel="noopener"
	&gt;
	Anthony&amp;rsquo;s music
&lt;/a&gt;, but this one nails the style of Queen
&lt;em&gt;so well&lt;/em&gt; that I can&amp;rsquo;t help but listen to it on repeat. I know the
Elvis version is special for a lot of people, but it&amp;rsquo;s made &lt;em&gt;so much
better&lt;/em&gt; when made in Queen&amp;rsquo;s iconic style.&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://music.apple.com/us/album/cant-help-falling-in-love-in-the-style-of-queen-single/1795976639"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/anthony-vincent-cover.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/anthony-vincent-cover.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/anthony-vincent-cover.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/20/anthony-vincent-i-cant-help-falling-in-love-in-the-style-of-queen/anthony-vincent-cover.jpg"
 alt="Cover art from the single from Anthony Vincent" width="316" height="316"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:316px;"&gt;
 &lt;p&gt;Anthony Vincent - &lt;em&gt;Can&amp;rsquo;t Help Falling in Love&lt;/em&gt; (in the style of Queen)&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-20 Anthony Vincent - I Can't Help Falling in Love (in the style of Queen)"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Wish I Cared</title><link>https://degruchy.org/2025/02/20/i-wish-i-cared/</link><pubDate>Thu, 20 Feb 2025 11:02:50 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/20/i-wish-i-cared/</guid><description>
&lt;p&gt;When I say those words. I know it&amp;rsquo;s time to contact my therapist. I
know there is a lot of emotional fatigue going around with the whole
Trump thing, but I feel tired on a different level. I mean, I suffer
from Depression, but there is also just family life and problems that
come up to drag me down.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been repeating the title a lot recently. Time for another
appointment.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; I just got a call back from my prescription
provider. They&amp;rsquo;re not covering my Wegovy prescription anymore, so the
price I paid (retail ~$1300 USD) is the price I&amp;rsquo;m going to pay until
my next dose, which is higher and more expensive. Fuck this.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-20 I Wish I Cared"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>lol</title><link>https://degruchy.org/2025/02/18/lol/</link><pubDate>Tue, 18 Feb 2025 20:33:31 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/18/lol/</guid><description>
&lt;p&gt;&lt;a
	href="https://web.archive.org/web/20250217180159/https://andysblog.uk/blogging-for-traffic-not-design/#expand"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://web.archive.org/web/20250217180159/https://andysblog.uk/blogging-for-traffic-not-design/#expand"
	target="_blank" rel="noopener"
	&gt;
	Blogging for traffic, not design
&lt;/a&gt;. Via &lt;a
	href="https://kevquirk.com/notes/20250218-2106"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://kevquirk.com/notes/20250218-2106"
	target="_blank" rel="noopener"
	&gt;
	kev
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; He took down 😂. Archive linked.&lt;/p&gt;
&lt;video poster="laughing-hysterically.gif" preload="auto" width="100%" height="316" autoplay loop muted poster="/2025/02/18/lol/laughing-hysterically.gif" playsinline class=""&gt;
 &lt;source src="https://degruchy.org/2025/02/18/lol/laughing-hysterically.webm" type="video/webm"&gt;
 &lt;source src="https://degruchy.org/2025/02/18/lol/laughing-hysterically.ogv" type="video/ogg"&gt;
 &lt;source src="https://degruchy.org/2025/02/18/lol/laughing-hysterically.mp4" type="video/mp4"&gt;
 &lt;span&gt;&lt;/span&gt;
&lt;/video&gt;
&lt;p&gt;🤣 I hope this is a satirical post. Nice way to cap an evening.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-18 lol"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Site Updates</title><link>https://degruchy.org/2025/02/17/site-updates/</link><pubDate>Mon, 17 Feb 2025 17:18:56 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/17/site-updates/</guid><description>
&lt;p&gt;I&amp;rsquo;ve been working on updating some of the data-driven pages on my
site, instead of backlogged content. Many of my pages are lists, or
content that is repeated frequently, so I decided to move them into
Hugo&amp;rsquo;s &lt;code&gt;data&lt;/code&gt; format to make it easier to update. Instead of having to
write awkward HTML for each &lt;a
	href="https://degruchy.org/wishlist"
	
	&gt;
	wishlist
&lt;/a&gt; item, or new
&lt;a
	href="https://degruchy.org/bookmarks"
	
	&gt;
	bookmark
&lt;/a&gt;, I can add a stanza of JSON to and then rebuild
to update. That way I don&amp;rsquo;t have to worry about missing fields,
improperly nested tags and all the associated metadata for links and
the like.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m also looking at updating the site&amp;rsquo;s style a bit. There is a cool
&lt;a
	href="https://uchu.style/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://uchu.style/"
	target="_blank" rel="noopener"
	&gt;
	color pallet
&lt;/a&gt; that I&amp;rsquo;d like to try. Given it&amp;rsquo;s similarity to
the &amp;ldquo;standard&amp;rdquo; web colors, I don&amp;rsquo;t think it&amp;rsquo;ll be too much of a
problem.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-17 Site Updates"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Alton Brown's Final Bite Tour</title><link>https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/</link><pubDate>Fri, 14 Feb 2025 21:00:00 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/</guid><description>
&lt;p&gt;Valentine&amp;rsquo;s Day was a really special day for us, we got to see &lt;a
	href="https://en.wikipedia.org/wiki/Alton_Brown"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Alton_Brown"
	target="_blank" rel="noopener"
	&gt;
	Alton
Brown
&lt;/a&gt; in his &lt;a
	href="https://www.altonbrownlive.com/altonbrown"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.altonbrownlive.com/altonbrown"
	target="_blank" rel="noopener"
	&gt;
	final(?) live tour
&lt;/a&gt;! We even got to sample some of the
food on stage!&lt;/p&gt;
&lt;ul class="alton-brown-final-bite gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_1_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_1_r_hu_f63e54a3baadcb7b.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_1_r_hu_55f6702d9f8a07a2.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_2_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_2_r_hu_66e7cb0e0a1c8e11.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_2_r_hu_aac0f40a36aa3582.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_3_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_3_r_hu_fcd5e4b472cbcd85.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_3_r_hu_891d540b22895951.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_4_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_4_r_hu_913418429d23f5b1.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_4_r_hu_a002ae4f15fc7cd4.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_5_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_5_r_hu_f58ac61cb02ba8ea.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_5_r_hu_66ede841976f8e67.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_6_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_6_r_hu_62cd69811e3fdec2.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_6_r_hu_a56488c4cce598f0.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_7_r.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_7_r_hu_f6095375cf53d2b9.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/14/alton-browns-final-bite-tour/alton-brown-final-bite_7_r_hu_fec8408202469d0c.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-14 Alton Brown's Final Bite Tour"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Yes, It's Hugo, Again</title><link>https://degruchy.org/2025/02/14/yes-its-hugo-again/</link><pubDate>Fri, 14 Feb 2025 17:39:16 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/14/yes-its-hugo-again/</guid><description>
&lt;p&gt;So, I updated the site. If you noticed your feed updating, that was
me. The site is being built by &lt;a
	href="https://gohugo.com"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://gohugo.com"
	target="_blank" rel="noopener"
	&gt;
	Hugo
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Previously, I had difficulties understanding how the Go Template
system worked, as well as a sense of dread trying to tackle things
like short codes that would be needed to do complicated parts. With
&lt;a
	href="https://chatgpt.com/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://chatgpt.com/"
	target="_blank" rel="noopener"
	&gt;
	ChatGPT
&lt;/a&gt; an &lt;a
	href="https://claude.ai/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://claude.ai/"
	target="_blank" rel="noopener"
	&gt;
	Claude.ai
&lt;/a&gt;, I feel more at-ease building out the
site in a SSG like Hugo.&lt;/p&gt;
&lt;p&gt;So far, I&amp;rsquo;ve been able to replicate galleries, multi-format picture
elements, and even generate my &lt;a
	href="https://degruchy.org/reading/"
	
	&gt;
	reading
&lt;/a&gt; and &lt;a
	href="https://degruchy.org/wishlist/"
	
	&gt;
	wishlist
&lt;/a&gt; from CSV
files, making updating content easier. While there are still some
rough edges, the uplift I&amp;rsquo;ve gotten has given me a bit of confidence
in extending functionality using the tooling in Hugo.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll note that I didn&amp;rsquo;t go all the way back to 2022. I was able to
work through a month&amp;rsquo;s worth of posts, but more than that will take
time. For now, I&amp;rsquo;ve &lt;a
	href="https://degruchy.org/old-archive.html"
	
	&gt;
	uploaded the static HTML page
&lt;/a&gt; for archival
purposes.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-14 Yes, It's Hugo, Again"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>DOGE Org Left Their Database Open to the Internet</title><link>https://degruchy.org/2025/02/14/doge-org-left-their-database-open-to-the-internet/</link><pubDate>Fri, 14 Feb 2025 15:39:19 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/14/doge-org-left-their-database-open-to-the-internet/</guid><description>
&lt;p&gt;&lt;a
	href="https://arstechnica.com/tech-policy/2025/02/doges-gov-site-lampooned-as-coders-quickly-realize-it-can-be-edited-by-anyone/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://arstechnica.com/tech-policy/2025/02/doges-gov-site-lampooned-as-coders-quickly-realize-it-can-be-edited-by-anyone/"
	target="_blank" rel="noopener"
	&gt;
	Apparently, security is &lt;em&gt;not&lt;/em&gt; the top priority
&lt;/a&gt; at the
&amp;ldquo;temporary&amp;rdquo; organization that has bullied it&amp;rsquo;s way in to all of the
information the Feds have on you. No need to worry. They&amp;rsquo;re posting
everything on &lt;del&gt;Twitter&lt;/del&gt; X. You know, because &lt;em&gt;that&amp;rsquo;s&lt;/em&gt; transparency.&lt;/p&gt;
&lt;p&gt;🙄&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-14 DOGE Org Left Their Database Open to the Internet"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Adbusters are Weird</title><link>https://degruchy.org/2025/02/12/adbusters-are-weird/</link><pubDate>Wed, 12 Feb 2025 00:00:00 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/12/adbusters-are-weird/</guid><description>
&lt;p&gt;I had my attention turned to &lt;a
	href="https://en.wikipedia.org/wiki/Adbusters"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Adbusters"
	target="_blank" rel="noopener"
	&gt;
	a group that produce a magazine
&lt;/a&gt;
known as &lt;a
	href="https://www.adbusters.org/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.adbusters.org/"
	target="_blank" rel="noopener"
	&gt;
	Adbusters
&lt;/a&gt;. Anti-captialist and more than a little
Anti-Trump, it seems like a good fit for my worldview. There&amp;rsquo;s just
one odd problem: They use the &lt;em&gt;shit&lt;/em&gt; out of Google services.&lt;/p&gt;
&lt;p&gt;The above the fold, autoplay video is hosted on YouTube. The fonts are
loaded from Google Fonts. There is Google Analytics embedded in the
page. They rely on Amazon&amp;rsquo;s CloudFront to host CDN traffic. As I
scrolled through the page, my uBlock add-in blocked an estimated &lt;em&gt;22%&lt;/em&gt;
of the requests before they get shipped off to whom? Advertisers. Or,
at the least, Information Brokers.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/12/adbusters-are-weird/adbusters-tracking.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/02/12/adbusters-are-weird/adbusters-tracking.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/02/12/adbusters-are-weird/adbusters-tracking.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/02/12/adbusters-are-weird/adbusters-tracking.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/12/adbusters-are-weird/adbusters-tracking.jpg"
 alt="A screenshot of uBlock Origin showing numerous tracking links being blocked" width="595" height="640"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:595px;"&gt;
 &lt;p&gt;That&amp;rsquo;s a lot of trackers&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;How can I trust a group of anti-capitalist, anti-advertising,
counter-culture folks that are, themselves, so embedded in the tools
that enable that culture?&lt;/p&gt;
&lt;h3 id="more-appalling"&gt;More Appalling&lt;/h3&gt;
&lt;p&gt;It seems like their downloads page is full things that should
(probably) be simple postscript files, tiffs or other more open fomats
instead of PDFs and Word Docs.&lt;/p&gt;
&lt;h3 id="an-open-letter"&gt;An Open Letter&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello!&lt;/p&gt;
&lt;p&gt;My name is Nathan, and I want to start off by saying that I respect
what you do. It&amp;rsquo;s not easy trying to be anti-capitalist and
anti-advertising along with being anti-whatever-Trump-is. So, keep up
the good fight.&lt;/p&gt;
&lt;p&gt;My concern, as the subject states, is with your website. It currently
contains a litany of connections to some of either the largest
advertisers on the planet, or those who service (and therefore
surveil) enough of the Internet to make the original inventor of the
Panopticon blush. This makes it hard, as someone who is tech savvy, to
trust what you say without thinking that there is some sort of hidden
agenda.&lt;/p&gt;
&lt;p&gt;I get it. It&amp;rsquo;s hard being on the Internet without relying on someone
else&amp;rsquo;s tech stack. Even harder if you want to reach people and
actually get them to see your content. Lord knows I don&amp;rsquo;t get any
viewership. However, I think there is middle-ground to be had
here. We&amp;rsquo;ve long had the ability to self-host sites and tools without
the explicit support of the Tech Oligarchs. It&amp;rsquo;s harder, and more
expensive, sure. However it&amp;rsquo;s also a small act of defiance that says
more about the people doing it, than the act itself.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t get me wrong. Your publication is yours to run alone. I don&amp;rsquo;t
know the back-of-the-store circumstances that keep the machine
running. I know, having worked in magazines before, that often times
the website is the lowest priority. It&amp;rsquo;s reasonable to hold the view
that journalism and activism (as well as getting enough subscribers)
are far higher on the list of things to do. I wouldn&amp;rsquo;t change that.&lt;/p&gt;
&lt;p&gt;I would, however, like you to at least sit down and look at what
you&amp;rsquo;ve put together and see if, at some point, you can make your site
say what your message says you do. Get rid of the proprietary formats
on the download page, lose the Google tech for visitor metrics, and
opt-out of CloudFlare and CloudFront&amp;rsquo;s panopticon for delivering
closest-hop CDN data. These companies are the ones not just enabling
the hyper-capitalistic now, but actively innovating in the space to
make it even more inescapable.&lt;/p&gt;
&lt;p&gt;Thank you for your time and consideration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-12 Adbusters are Weird"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Spineless</title><link>https://degruchy.org/2025/02/11/spineless/</link><pubDate>Tue, 11 Feb 2025 14:09:07 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/11/spineless/</guid><description>
&lt;p&gt;&lt;a
	href="https://www.npr.org/2025/02/07/nx-s1-5288947/trump-dei-disney-pepsi-diversity"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.npr.org/2025/02/07/nx-s1-5288947/trump-dei-disney-pepsi-diversity"
	target="_blank" rel="noopener"
	&gt;
	GM I can believe. But Pepsi and Disney
&lt;/a&gt; (&lt;a
	href="https://degruchy.org/assets/archives/2025-02-11_gm_pepsi_disney_dei_npr.org.warc"
	
	&gt;
	&lt;code&gt;.warc&lt;/code&gt;
archive
&lt;/a&gt;)? Spineless, the whole lot of &amp;rsquo;em!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-11 Spineless"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Chapter 28.2 Emacs Restructuring</title><link>https://degruchy.org/2025/02/11/chapter-28.2-emacs-restructuring/</link><pubDate>Tue, 11 Feb 2025 00:00:00 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/11/chapter-28.2-emacs-restructuring/</guid><description>
&lt;p&gt;Sometimes, you don’t need full on (Emacs) &lt;em&gt;Bankruptcy&lt;/em&gt;, sometimes you
just need to…&lt;a
	href="https://en.wikipedia.org/wiki/Debt_restructuring"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Debt_restructuring"
	target="_blank" rel="noopener"
	&gt;
	restructure
&lt;/a&gt; some things in your
config. You know, give those config files &lt;a
	href="https://en.wikipedia.org/wiki/Debt_restructuring#Bondholder_haircuts"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Debt_restructuring#Bondholder_haircuts"
	target="_blank" rel="noopener"
	&gt;
	a little
haircut
&lt;/a&gt;. That’s what I did today.&lt;/p&gt;
&lt;p&gt;Most of my configuration was well enough coded that I didn’t need any
real rejiggering, just some trimming and cleaning up here and there.
There were some clear parts that I had started, but never did anything
with. I was also curious about some of the mechanisms that I never
really explored out of the box. I was also kind of tired of compiling
Emacs every couple of days to stay on top of the new (bugs). So I had
some cleanup to do vis-a-vis going back to Emacs 28.2 in Debian stable.&lt;/p&gt;
&lt;p&gt;So far, things are good. The default theme is nice, I also am using GUI
Emacs for a change (Lucid toolkit). Still mulling over if that’s a wise
choice, given my distaste for variable font sizes. We’ll see. I tried
CUA-mode for a month, I can stomach some font changes for a while.&lt;/p&gt;
&lt;p&gt;I find the more that I use Emacs, the more that I calcify some options.
Things like diary, calendar, flyspell and vc-mode over newer stuff like
Org or Magit. I’m also willing to try new packages if they’re able to
improve my workflow. I keep trying the
vertico+orderless+corfu+marginalia powerhouse every so often, but I find
that it’s just a tad bit too flakey for me. Then I try helm and I’m
overwhelmed.&lt;/p&gt;
&lt;p&gt;Hopefully this restructuring will let me find some more packages that
really hit home and become permenant fixtures of my configuration.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-11 Chapter 28.2 Emacs Restructuring"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Despoiling Images</title><link>https://degruchy.org/2025/02/10/despoiling-images/</link><pubDate>Mon, 10 Feb 2025 16:52:35 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/10/despoiling-images/</guid><description>
&lt;p&gt;Sometimes, I post things that &lt;a
	href="#hello"
	
	&gt;
	might not be liked by everyone
&lt;/a&gt;.
Text is easy to hide or &amp;lsquo;spoiler&amp;rsquo;, but images are harder. So I sought
out a way to make images work like they do on Mastodon&amp;rsquo;s web interface.&lt;/p&gt;
&lt;p&gt;Enter, this &lt;a
	href="https://www.abitofaccess.com/image-spoiler-protection"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.abitofaccess.com/image-spoiler-protection"
	target="_blank" rel="noopener"
	&gt;
	neat little CSS technique that uses no JS
&lt;/a&gt; (&lt;a
	href="https://degruchy.org/assets/archives/abitofaccess.com.warc"
	
	&gt;
	web archive
link
&lt;/a&gt;). Essentially, it uses a form element (checkbox) and a label to
toggle the CSS blur filter on an image. I&amp;rsquo;ve &lt;a
	href="#20250205-tax-ads"
	
	&gt;
	implemented it in a previous
post
&lt;/a&gt;, one that contains advertising, and since I don&amp;rsquo;t like
seeing advertising, I&amp;rsquo;ve spoilered it.&lt;/p&gt;
&lt;p&gt;I did add a bit of JS to the trick. See, because my site is not a
discreet set of pages per post, the state of the page can be remembered
across reloads. So I add some simple JS to uncheck all checkboxes on the
page.&lt;/p&gt;
&lt;h3 id="a-revision-in-the-texts"&gt;A Revision in the Texts!&lt;/h3&gt;
&lt;p&gt;So, yeah, it was kind of janky. Enter 3 lines of jQuery:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;.blurred&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;each&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;click&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;toggleClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;blurred&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I&amp;rsquo;ll probably add some text or note to prompt user action.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-10 Despoiling Images"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Link: Back to Mac</title><link>https://degruchy.org/2025/02/10/link-back-to-mac/</link><pubDate>Mon, 10 Feb 2025 12:07:08 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/10/link-back-to-mac/</guid><description>
&lt;p&gt;&lt;a
	href="https://mattgemmell.scot/back-to-mac/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://mattgemmell.scot/back-to-mac/"
	target="_blank" rel="noopener"
	&gt;
	Back to Mac
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s always fascinating to read about someone&amp;rsquo;s journey in doing
something just outside the norms. For a long time, I&amp;rsquo;ve known that
&lt;em&gt;most&lt;/em&gt; people can do &lt;em&gt;most&lt;/em&gt; of their tasks on a device as &amp;ldquo;basic&amp;rdquo; as an
iPad with no real friction. For what it&amp;rsquo;s worth, &lt;em&gt;I&lt;/em&gt; could be one of
those people. Sure, there are holdouts in the arena of Excel and other
data-heavy tasks that still rely on well-honed power tools. For the most
part, though, people would probably not notice a difference in using an
iPad as a daily driver. Many people already live most of their lives on
their phones. An iPad would probably be a step up for them.&lt;/p&gt;
&lt;p&gt;This brave man switched primary machines for an iPad for &lt;em&gt;eight-years&lt;/em&gt;!
That&amp;rsquo;s some dedication. While I&amp;rsquo;m not in the market for switching to an
iPad, it does go to show you how much the ecosystem around them has
grown. With tooling like Affinity, Notability, Logic and Blackmagic, you
can get quite a lot done as someone creating content. A far cry from the
early days of being told that it&amp;rsquo;s just a content consumption device. I
feel like this article is not just a refutation of needing a &amp;ldquo;full&amp;rdquo;
laptop, but a refutation of the idea that we &lt;em&gt;need&lt;/em&gt; so much hardware
year over year to do the same basic tasks.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-10 Link: Back to Mac"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Webarchivn'</title><link>https://degruchy.org/2025/02/10/webarchivn/</link><pubDate>Mon, 10 Feb 2025 10:01:48 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/10/webarchivn/</guid><description>
&lt;p&gt;Sometimes you just want to &lt;em&gt;preserve&lt;/em&gt; something. Like a page you
visited, or are visiting. Sometimes, the browser is Good Enough™ and
you can save it for offline viewing. Sometimes, however, you want some
level of &lt;em&gt;archive&lt;/em&gt;. Thankfully, &lt;a
	href="https://en.wikipedia.org/wiki/WARC_%28file_format%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/WARC_%28file_format%29"
	target="_blank" rel="noopener"
	&gt;
	there is a standard for
that
&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;But &lt;em&gt;how&lt;/em&gt; do you actually make one of these so-called &lt;code&gt;.warc&lt;/code&gt; files?
Well, thanks to the folks at the GNU Project, &lt;code&gt;wget&lt;/code&gt; already has it
built in! You can just use some options to get an archive:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ wget --adjust-extension &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --execute &lt;span class="nv"&gt;robots&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;off &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --convert-links &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --no-parent
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --mirror &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --warc-file&lt;span class="o"&gt;=&lt;/span&gt;domainname.com &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --no-warc-keep-log &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --page-requisites &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --no-verbose &lt;span class="s2"&gt;&amp;#34;https://urlhere.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, you&amp;rsquo;ll get a folder of files that mirror the page or site, plus
you&amp;rsquo;ll get a &lt;code&gt;.warc&lt;/code&gt; file that contains all of that in a single
digestable format suitable for libraries and search engines, neat!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-10 Webarchivn'"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Tonight's Superb Owl</title><link>https://degruchy.org/2025/02/09/tonights-superb-owl/</link><pubDate>Sun, 09 Feb 2025 00:00:00 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/09/tonights-superb-owl/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/09/tonights-superb-owl/superb-owl.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/02/09/tonights-superb-owl/superb-owl.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/02/09/tonights-superb-owl/superb-owl.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/02/09/tonights-superb-owl/superb-owl.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/09/tonights-superb-owl/superb-owl.jpg"
 alt="An owl wakes up in its cage on a sunny spring day in a park in Essen, western Germany, on March 26, 2014" width="640" height="412"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;An owl wakes up in its cage on a sunny spring day in a park in Essen, western Germany, on March 26, 2014Martin Meissner/AP&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Happy Superb Owl Sunday, everyone!&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-09 Tonight's Superb Owl"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Conversations with GPT</title><link>https://degruchy.org/2025/02/06/conversations-with-gpt/</link><pubDate>Thu, 06 Feb 2025 17:23:38 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/06/conversations-with-gpt/</guid><description>
&lt;p&gt;I’ve been &lt;a
	href="https://chatgpt.com/share/67a5371d-0bec-8000-bb34-0db030efeec2"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://chatgpt.com/share/67a5371d-0bec-8000-bb34-0db030efeec2"
	target="_blank" rel="noopener"
	&gt;
	talking a bit with ChatGPT about my site
&lt;/a&gt;. Mostly
because I struggle with the hows of the site, instead of the &lt;em&gt;why&lt;/em&gt; of
the site. Rather, I am more focused on the experience of posting than
posting in of itself. So I reached out to GPT to see what they thought
of it.&lt;/p&gt;
&lt;p&gt;I’m pleased to say that they provided a really good answer. My human
summary: Is it worth upending what you have working for something that
may not be everything you want it to be?&lt;/p&gt;
&lt;p&gt;The idea that &lt;em&gt;most&lt;/em&gt; of my pain points are really just me looking at
what &lt;em&gt;other&lt;/em&gt; systems are doing and wondering if &lt;em&gt;I&lt;/em&gt; should do that, too.
Generally, the answer is no. I don’t have scads and scads of content.
The site, as it sits currently runs ~80kb (~160kb with everything)
with brotli compression. It’s not slow. Perhaps it’s not &lt;em&gt;as performant&lt;/em&gt;
as it could be, but I’ve gone to great lengths to make sure that
everything that can be lazy loaded &lt;em&gt;is&lt;/em&gt;, to help keep requests to a
minimum.&lt;/p&gt;
&lt;p&gt;I also have a bunch of really familiar tooling backing me. The site is
‘built’ using Emacs, &lt;code&gt;make&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt; and &lt;code&gt;cat&lt;/code&gt;. It’s all launched up to
the Internet via &lt;code&gt;rsync&lt;/code&gt; and most of the other work is done by me in the
shell or Emacs, by hand. That way I know I’ve done it right, or at the
very least I know where I screwed up. All of the tools are
battle-tested. The biggest issue I had, in retrospect is that writing
HTML directly in the &lt;code&gt;index.html&lt;/code&gt; file was killing my thought process,
and therefore canceling posts before I got anywhere. Even with things
like &lt;code&gt;yasnippet&lt;/code&gt;, &lt;code&gt;web-mode&lt;/code&gt; and &lt;code&gt;emmet&lt;/code&gt; making it easy to generate
scaffolding and templates.&lt;/p&gt;
&lt;p&gt;For that, I came to the conclusion of just having a folder that doesn’t
get uploaded called ‘drafts’. I write in markdown or org-mode and use
&lt;code&gt;pandoc&lt;/code&gt; to generate the markup needed. Writing in this way frees me
from having to think &lt;em&gt;too much&lt;/em&gt; about the structure and boring parts. As
a bonus, I can still include HTML in these formats that gets passed
through. So I can just tweak &lt;code&gt;yasnippet&lt;/code&gt; to provide the same templates
for Markdown mode, and when I type &lt;code&gt;dogal&lt;/code&gt;, it expands to the same
gallery skeleton as it would in &lt;code&gt;web-mode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I’m thankful that I can just bounce ideas off of someone or something
like ChatGPT, because often this kind of ‘rubber-ducky’ problem solving
is what is needed, instead of a bunch of opinions on what the best
platform is.&lt;/p&gt;
&lt;p&gt;So, here I stay. While it’s not the best blogging system. It’s &lt;em&gt;mine&lt;/em&gt;.
And I know how it works, and I control it from start to end. And that’s
important to me.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-06 Conversations with GPT"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>*Looks at current US Political Climate*</title><link>https://degruchy.org/2025/02/05/looks-at-current-us-political-climate/</link><pubDate>Wed, 05 Feb 2025 15:34:22 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/05/looks-at-current-us-political-climate/</guid><description>

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-05 *Looks at current US Political Climate*"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Tax Ads</title><link>https://degruchy.org/2025/02/05/tax-ads/</link><pubDate>Wed, 05 Feb 2025 15:46:45 +0000</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/05/tax-ads/</guid><description>
&lt;figure class="blurred"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/02/05/tax-ads/tax-ads.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/02/05/tax-ads/tax-ads.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/02/05/tax-ads/tax-ads.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/02/05/tax-ads/tax-ads.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/02/05/tax-ads/tax-ads.jpg"
 alt="A picture of some advertising included with my tax documentation" width="640" height="564"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;A picture of some advertising included with my tax documentation&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Have we reached peak ads yet? Because I&amp;rsquo;m getting them in my federal
tax documentation, now.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-05 Tax Ads"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Link: What Happens to Your Gifts After You Return Them?</title><link>https://degruchy.org/2025/02/05/link-what-happens-to-your-gifts-after-you-return-them/</link><pubDate>Wed, 05 Feb 2025 09:50:57 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/05/link-what-happens-to-your-gifts-after-you-return-them/</guid><description>
&lt;p&gt;&lt;a
	href="https://www.ifixit.com/News/107532/what-happens-to-your-gifts-after-you-return-them"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.ifixit.com/News/107532/what-happens-to-your-gifts-after-you-return-them"
	target="_blank" rel="noopener"
	&gt;
	iFixit: What Happens To Your Gifts After You Return Them?
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mostly? Recycled, but also &lt;em&gt;a lot of&lt;/em&gt; &lt;strong&gt;trash&lt;/strong&gt;. We can do better, but
we have to &lt;em&gt;make&lt;/em&gt; companies produce easy-to-repair products, first.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-05 Link: What Happens to Your Gifts After You Return Them?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Pain in the Teeth</title><link>https://degruchy.org/2025/02/04/pain-in-the-teeth/</link><pubDate>Tue, 04 Feb 2025 13:07:37 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/04/pain-in-the-teeth/</guid><description>
&lt;p&gt;So, my preferred dentist was bought out by a much larger conglomerate
and things are changing in ways I didn&amp;rsquo;t like. So, I took the
opportunity to shop around, and found one closer to work. It was even
painless to get setup as a new patient.&lt;/p&gt;
&lt;p&gt;Once I was all done getting entered in the system, I called my old
dentist to cancel my appointment, and to get my records. What they sent
me was surprising.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 &lt;code&gt;.png&lt;/code&gt;&amp;rsquo;s of my teeth x-rays, taken as screenshots from the
desktop (UI chrome and all)&lt;/li&gt;
&lt;li&gt;A sideways, blurry, hastily scanned pdf of my procedures and the
various prices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Putting aside the fact that they just sent this over email, and that the
data is lossy, &lt;em&gt;at best&lt;/em&gt;, it&amp;rsquo;s still kind of shitty to just hand over
your customer&amp;rsquo;s data in the worst possible formats for transfer. No
&lt;code&gt;.tiff&lt;/code&gt; or any medically approved image format for my x-rays? No &lt;code&gt;.csv&lt;/code&gt;
or any journal format for my procedures? It feels like amateur hour
here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; I&amp;rsquo;m &lt;a
	href="https://en.wikipedia.org/wiki/DICOM"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/DICOM"
	target="_blank" rel="noopener"
	&gt;
	requesting &lt;code&gt;DICOM&lt;/code&gt; formatted images
&lt;/a&gt; and an
actual ledger. It also turns out that &lt;a
	href="https://packages.debian.org/sid/dicomscope"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://packages.debian.org/sid/dicomscope"
	target="_blank" rel="noopener"
	&gt;
	Debian has a suite
&lt;/a&gt; of
&lt;a
	href="https://packages.debian.org/bookworm/dicom3tools"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://packages.debian.org/bookworm/dicom3tools"
	target="_blank" rel="noopener"
	&gt;
	DICOM tools
&lt;/a&gt;, so not only can I get my records, I can also
view them.&lt;/p&gt;
&lt;p&gt;Stonewalled:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No, we do not, this is how we send our x-rays. We use a different
software than most other practices.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;🙄&lt;/p&gt;
&lt;p&gt;Lets see if the &lt;a
	href="https://www.carestreamdental.com/en-us/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.carestreamdental.com/en-us/"
	target="_blank" rel="noopener"
	&gt;
	developers behind their software
&lt;/a&gt; are any more responsive.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-04 Pain in the Teeth"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Music Preferences</title><link>https://degruchy.org/2025/02/03/music-preferences/</link><pubDate>Mon, 03 Feb 2025 18:01:11 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/03/music-preferences/</guid><description>
&lt;p&gt;&lt;a
	href="https://rknight.me/blog/music-questions-challenge/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://rknight.me/blog/music-questions-challenge/"
	target="_blank" rel="noopener"
	&gt;
	Robb Knight
&lt;/a&gt; posted about some of his favorite music, so I
decided that even though I’m not ‘tagged’ anywhere, I’d do it myself
because sometimes it’s nice to get a better picture of the blogger.&lt;/p&gt;
&lt;h3 id="what-are-five-of-your-favourite-albums"&gt;What are five of your favourite albums?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;a
	href="https://en.wikipedia.org/wiki/Long_Division_%28Rustic_Overtones_album%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Long_Division_%28Rustic_Overtones_album%29"
	target="_blank" rel="noopener"
	&gt;
	Long Division
&lt;/a&gt;&lt;/em&gt; by &lt;a
	href="https://en.wikipedia.org/wiki/Rustic_Overtones"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Rustic_Overtones"
	target="_blank" rel="noopener"
	&gt;
	Rustic Overtones
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;OK Computer&lt;/em&gt; by Radiohead&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Dookie&lt;/em&gt; by Green Day&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Cowboy Bebop OST&lt;/em&gt; by &lt;a
	href="https://en.wikipedia.org/wiki/Seatbelts_%28band%29"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Seatbelts_%28band%29"
	target="_blank" rel="noopener"
	&gt;
	Seatbelts
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Mellon Collie and the Infinite Sadness&lt;/em&gt; by The Smashing Pumpkins&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="what-are-five-of-your-favourite-songs"&gt;What are five of your favourite songs?&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Iron Boots&lt;/em&gt; by Rustic Overtones&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How to Disappear Completely&lt;/em&gt; by Radiohead&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Panic Song&lt;/em&gt; by Green Day&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Basket Case&lt;/em&gt; by Green Day&lt;/li&gt;
&lt;li&gt;&lt;em&gt;1979&lt;/em&gt; by The Smashing Pumpkins&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="favourite-instruments"&gt;Favourite instrument(s)?&lt;/h3&gt;
&lt;p&gt;I can’t play anything on any instrument. If I had to make a choice
from what I’ve seen played, then the guitar or bass. Both are cool
looking and usually have a great sound associated with them.&lt;/p&gt;
&lt;h3 id="what-song-or-album-are-you-currently-listening-to"&gt;What song or album are you currently listening to?&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Anthems for a Seventeen Year-Old Girl&lt;/em&gt; by Broken Social Scene&lt;/p&gt;
&lt;h3 id="do-you-listen-to-the-radio-if-so-how-often"&gt;Do you listen to the radio? If so, how often?&lt;/h3&gt;
&lt;p&gt;I do, occasionally, though I dislike most of it. I tend to listen to
‘Easy listening’ or similar because most of the newer stuff is all
foreign to me.&lt;/p&gt;
&lt;h3 id="how-often-do-you-listen-to-music"&gt;How often do you listen to music?&lt;/h3&gt;
&lt;p&gt;I &lt;em&gt;try&lt;/em&gt; to listen everyday, but honestly probably a couple of times a
week. I’ve had long stints where I didn’t listen to anything. I’m
trying to change that, because music can make time go faster, and
change moods.&lt;/p&gt;
&lt;h3 id="how-often-do-you-discover-music-and-how-do-you-discover-music"&gt;How often do you discover music? And how do you discover music?&lt;/h3&gt;
&lt;p&gt;Not often. I usually play the Apple Music radio station “For you” and
if something there comes up that I like, I favorite it. I also
occasionally browse &lt;a
	href="https://bandcamp.com/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://bandcamp.com/"
	target="_blank" rel="noopener"
	&gt;
	Bandcamp
&lt;/a&gt; to see if there is anything I
like. I’ve found that as I get older, the less I seek out new music.&lt;/p&gt;
&lt;h3 id="whats-a-song-or-album-that-you-enjoy-that-you-wish-had-more-recognition"&gt;What’s a song or album that you enjoy that you wish had more recognition?&lt;/h3&gt;
&lt;p&gt;Pretty much anything by Rustic Overtones. They’re a band from Maine with
an amazing sound that I wish got more coverage. I don’t think they’re
together anymore. It’s hard to keep up.&lt;/p&gt;
&lt;h3 id="whats-your-favourite-song-of-all-time"&gt;What’s your favourite song of all time?&lt;/h3&gt;
&lt;p&gt;Probably &lt;em&gt;Long Divison&lt;/em&gt; by Rustic Overtones on their titular album. Good
stuff.&lt;/p&gt;
&lt;h3 id="has-your-taste-in-music-evolved-over-the-years"&gt;Has your taste in music evolved over the years?&lt;/h3&gt;
&lt;p&gt;Yes. I used to dislike R&amp;amp;B and Rap, but I realized that I like it more
than I gave it credit for. Though, I still &lt;em&gt;dislike&lt;/em&gt; country. I’ve
picked up more classical and other different genres as I’ve gotten
older.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-03 Music Preferences"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Temptation to Live in the "Modern Era"</title><link>https://degruchy.org/2025/02/03/temptation-to-live-in-the-modern-era/</link><pubDate>Mon, 03 Feb 2025 15:07:03 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/03/temptation-to-live-in-the-modern-era/</guid><description>
&lt;p&gt;It&amp;rsquo;s tempting to stop using Emacs. Not that it&amp;rsquo;s not good, it&amp;rsquo;s just
GUIs look so &lt;em&gt;slick&lt;/em&gt; sometimes. Being able to just click a button to
compile, or having tables and graphs of my finances, even just having a
GUI for email and calendars sometimes feels &lt;em&gt;nice&lt;/em&gt;. Thus, I am tempted
to download Thunderbird, Kate (or VSCode), and KMyMoney and do things
that way. I do it because I&amp;rsquo;m weak. I &lt;em&gt;want&lt;/em&gt; to fit in. I want all the
conveniences, to do it all and be &lt;em&gt;normal&lt;/em&gt; (or at least something
approaching normal).&lt;/p&gt;
&lt;p&gt;But I always find myself back in Emacs. Kate, good as it is, struggles
with doing things like piping text through external commands. It doesn&amp;rsquo;t
support Fossil SCM. It forgets build settings, despite the &lt;code&gt;Makefile&lt;/code&gt;
being &lt;em&gt;right there&lt;/em&gt;. Or VSCode needing &lt;em&gt;yet another extension&lt;/em&gt; to do
simple crap like line wrapping (i.e.: &lt;code&gt;fill-paragraph&lt;/code&gt;) and basic text
manipulation. Thunderbird doesn&amp;rsquo;t even want to play nice with the GPG
installed on my system, where I already have a keypair made and ready to
use, it acts like &lt;em&gt;it&lt;/em&gt; has to do it, otherwise I&amp;rsquo;ll just screw it up.
The OWL extension for Thunderbird makes great strides in Exchange
support, but mostly it just gets all janky and pops up errors or takes
forever to do a thing.&lt;/p&gt;
&lt;p&gt;No, Emacs (especially Emacs in the terminal, as I use it) is not ✨
AmAzInG ✨. Getting emoji requires opening another app and copy/pasting
it. Packages are very hit or miss. Sure they&amp;rsquo;ll work &lt;em&gt;forever&lt;/em&gt; in some
limited capacity, but sometimes they&amp;rsquo;re just bad. Plus, it feels like my
config is a big book of glue code holding things together into a shape
of an editor. But it&amp;rsquo;s &lt;em&gt;my&lt;/em&gt; glue and &lt;em&gt;my&lt;/em&gt; editor. I made it into what I
need it to be. Sure, that means I have to deal with janky ass looking
emails, no desktop notifications for calendar appointments and other
weird-ass-shit that doesn&amp;rsquo;t always line up, but for the most part, it
works. It&amp;rsquo;ll work long after I&amp;rsquo;m gone, as it did long before I even was
a person. And that&amp;rsquo;s something.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-03 Temptation to Live in the "Modern Era""&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Giving them Content</title><link>https://degruchy.org/2025/02/02/giving-them-content/</link><pubDate>Sun, 02 Feb 2025 09:41:13 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/02/02/giving-them-content/</guid><description>
&lt;p&gt;Okay, my mind is a little blown.&lt;/p&gt;
&lt;p&gt;I have a reader! 🤯&lt;/p&gt;
&lt;p&gt;Anyway, they contacted me because since I reforged this&amp;hellip;
monstrosity&amp;hellip; I&amp;rsquo;ve neglected to put the post content in the feed&amp;rsquo;s
&lt;code&gt;&amp;lt;content /&amp;gt;&lt;/code&gt; tag. This is/was a function of pure laziness, as putting
content in feeds require a bit of content finagling. Though, through
consultations with ChatGPT, I might have a simple way of making that
happen. Starting with this post going forward. I&amp;rsquo;ll try and update the
older posts, but I can&amp;rsquo;t make any concrete promises on the timeline.
Turns out I posted quite a bit.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-02-02 Giving them Content"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>I Can't Do it Anymore</title><link>https://degruchy.org/2025/01/31/i-cant-do-it-anymore/</link><pubDate>Fri, 31 Jan 2025 17:02:18 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/31/i-cant-do-it-anymore/</guid><description>
&lt;p&gt;Reading even &lt;em&gt;tech&lt;/em&gt; news is getting too depressing to do. All this makes
me want to take my family and hole up somewhere where we can&amp;rsquo;t be
bothered. It&amp;rsquo;s not a good feeling.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/31/i-cant-do-it-anymore/delete-hn.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/31/i-cant-do-it-anymore/delete-hn.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/31/i-cant-do-it-anymore/delete-hn.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/31/i-cant-do-it-anymore/delete-hn.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/31/i-cant-do-it-anymore/delete-hn.png"
 alt="A picture of me deleting my Hacker News bookmark" width="354" height="202"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:354px;"&gt;
 &lt;p&gt;A picture of me deleting my Hacker News bookmark&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Now, I&amp;rsquo;m down to not reading &lt;em&gt;anything&lt;/em&gt;. Not sure this is
better…&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-31 I Can't Do it Anymore"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Emacs and Filesets</title><link>https://degruchy.org/2025/01/28/emacs-and-filesets/</link><pubDate>Tue, 28 Jan 2025 15:34:01 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/28/emacs-and-filesets/</guid><description>
&lt;p&gt;Emacs has a concept of
&lt;a
	href="https://en.wikipedia.org/wiki/Fileset"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Fileset"
	target="_blank" rel="noopener"
	&gt;
	filesets
&lt;/a&gt;. It actually has &lt;em&gt;two&lt;/em&gt;
kinds of &lt;a
	href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Filesets.html"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.gnu.org/software/emacs/manual/html_node/emacs/Filesets.html"
	target="_blank" rel="noopener"
	&gt;
	fileset
concepts
&lt;/a&gt;.
One is the much more recognizable &lt;code&gt;vc&lt;/code&gt; interface for interacting with
version control repositories. The other one is not used often, but still
has some interesting characteristics.&lt;/p&gt;
&lt;p&gt;First, &lt;em&gt;you&lt;/em&gt; define what is in a file set. The GUI gives you a menu to
add items to a named set, but you can also define them manually in code
or through the Customize mechanism. I actually had to think about this
for a bit, because it didn&amp;rsquo;t seem to make sense why I would have items
that were related, but not also somehow in a version control system.
Turns out I do: Booklists, health documents, bash/profile preferences,
and more.&lt;/p&gt;
&lt;p&gt;See, I could actually put all of those documents into a repository, but
often I don&amp;rsquo;t need to do that, especially since I back them up in more
traditional ways anyway. Lets take a look at defining a set.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;filesets-data&lt;/span&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Books&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;:ingroup&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;~/Documents/Books&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This defines a &amp;lsquo;Books&amp;rsquo; set that will simply show you the contents of the
directory, similar to an Emacs bookmark. Not very helpful, but still
neat.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;setq&lt;/span&gt; &lt;span class="nv"&gt;filesets-data&lt;/span&gt; &lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Config files&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;:files&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;~/.profile&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;~/.bashrc&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This one will open all the listed files defined in that set. One other
cool feature is that you can operate on the fileset with commands and
when done with them you can close them all at once. Filesets can even
just be a regular expression of files in a directory, letting you
cherry-pick items from the folder that you want to see.&lt;/p&gt;
&lt;p&gt;I can understand why folks probably don&amp;rsquo;t use this too often. Sometimes
it&amp;rsquo;s less mental overhead to just open files as needed, instead of
invoking a new mechanism that might be too much or too little for your
needs at the time. Also, the &lt;a
	href="https://www.emacswiki.org/emacs/FileSets"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.emacswiki.org/emacs/FileSets"
	target="_blank" rel="noopener"
	&gt;
	fileset program hasn&amp;rsquo;t really been updated
in ages
&lt;/a&gt;. Even the original
author&amp;rsquo;s site is now only accessible via the Wayback machine.
Regardless, I think that there are some really good uses that could come
out of filesets, as with most Emacs archeology, you only get more
features and a deeper understanding of the arcana that makes Emacs run.&lt;/p&gt;
&lt;h3 id="but-wait-theres-more"&gt;But Wait&amp;hellip; There&amp;rsquo;s More!&lt;/h3&gt;
&lt;p&gt;Well, not &lt;em&gt;much&lt;/em&gt; more. I also realized, that &lt;code&gt;projects.el&lt;/code&gt; represents a
sort of fileset, too. While it automatically works for folders that have
some sort of detectable VC system, it can be manually defined, too.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-28 Emacs and Filesets"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Golf of America</title><link>https://degruchy.org/2025/01/28/golf-of-america/</link><pubDate>Tue, 28 Jan 2025 12:08:39 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/28/golf-of-america/</guid><description>
&lt;p&gt;&lt;a
	href="https://arstechnica.com/tech-policy/2025/01/bowing-to-trump-google-maps-plans-to-quickly-rename-the-gulf-of-mexico/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://arstechnica.com/tech-policy/2025/01/bowing-to-trump-google-maps-plans-to-quickly-rename-the-gulf-of-mexico/"
	target="_blank" rel="noopener"
	&gt;
	When you can&amp;rsquo;t govern, shift shit around to make it look like you&amp;rsquo;re
accomplishing
things.
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-28 Golf of America"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Y no Plain-text?</title><link>https://degruchy.org/2025/01/27/y-no-plain-text/</link><pubDate>Mon, 27 Jan 2025 14:03:41 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/27/y-no-plain-text/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/27/y-no-plain-text/ynoplaintext.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/27/y-no-plain-text/ynoplaintext.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/27/y-no-plain-text/ynoplaintext.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/27/y-no-plain-text/ynoplaintext.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/27/y-no-plain-text/ynoplaintext.png"
 alt="A picture of my email from ThriftBooks that has no plain-text alternative" width="640" height="427"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;A picture of my email from ThriftBooks that has no plain-text alternative&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It&amp;rsquo;s not the first time I&amp;rsquo;ve seen it, and not the last, but damn I
wish companies would &lt;em&gt;try&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-27 Y no Plain-text?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>When to Automate?</title><link>https://degruchy.org/2025/01/27/when-to-automate/</link><pubDate>Mon, 27 Jan 2025 09:17:09 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/27/when-to-automate/</guid><description>
&lt;p&gt;Sometimes I find it hard to know &lt;em&gt;when&lt;/em&gt; to automate some process.
Sometimes, I find legitimate automation ideas too hard for me to
implement. Sometimes, like with this blog, I enjoy the process of doing
the task and all it&amp;rsquo;s warty sub-tasks.&lt;/p&gt;
&lt;p&gt;For some things, like banking, I don&amp;rsquo;t &lt;em&gt;want&lt;/em&gt; some tool clumsily
accessing my bank&amp;rsquo;s byzantine API just so that I don&amp;rsquo;t have to manually
enter transactions into my ledger file. Sure, there are easy tools like
&lt;code&gt;aqbanking&lt;/code&gt; that make the process easier, but I&amp;rsquo;m kind of paranoid about
money. Something about automating this process seems &lt;em&gt;wrong&lt;/em&gt; or at the
very least, fraught with danger.&lt;/p&gt;
&lt;p&gt;There are times where automation just doesn&amp;rsquo;t make sense. I don&amp;rsquo;t &lt;em&gt;need&lt;/em&gt;
a &amp;lsquo;smart&amp;rsquo; scale to automatically report to my phone/cloud/whatever to
track my weight. I can just enter it. It&amp;rsquo;s not hard. The same goes with
a lot of home automation. I don&amp;rsquo;t need lights automatically turning on
and off, or coffee systems to brew before I wake up. The things I want
automated are the drudgery stuff: vacuuming floors, doing laundry and
cleaning dishes. I have one of those already, and it&amp;rsquo;s great. Best
Christmas gift we&amp;rsquo;ve bought ourselves 4 years running.&lt;/p&gt;
&lt;p&gt;I guess there was a time in which I watched &lt;em&gt;Star Trek&lt;/em&gt; and thought
“Wow! Wouldn&amp;rsquo;t it be great if all my needs were just taken care of for
me? I didn&amp;rsquo;t have to &lt;em&gt;do&lt;/em&gt; anything?”. Then I got older, and I saw how
technology works, and how it doesn&amp;rsquo;t work, and how it sometimes is out
to do more nefarious things without your knowledge. I also know that
some of this stuff is just trash. Trash that sells you a thing that
beaks or is bricked or obsoleted soon after you buy it because you know:
shareholder value. I guess that now that I&amp;rsquo;m older, and a bit more world
weary, I find that not &lt;em&gt;all&lt;/em&gt; automation is needed. Sometimes getting up,
making my coffee, taking my pills, making breakfast, taking a shower and
getting dressed are not wasted time. They&amp;rsquo;re living. I don&amp;rsquo;t want my
life automated away from me.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-27 When to Automate?"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>LPL Teaches You About Lock Traps, and how to Make Your Own on the Cheap</title><link>https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/</link><pubDate>Fri, 24 Jan 2025 15:38:28 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/</guid><description>
&lt;p&gt;I&amp;rsquo;m a huge fan of the Lockpicking Lawyer. He has a soothing voice and
a methodical explanation around lock picking and functions. One such
function is the devilishly simple &amp;ldquo;Hines Key System&amp;rdquo;. A simple set of
groves to capture improperly raised pins that will jam a lock from
opening if done improperly. Take a look:&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=3g0-pxXD794"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-hines-key-system.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-hines-key-system.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-hines-key-system.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-hines-key-system.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-hines-key-system.jpg"
 alt="A picture of the Hines Key System on LPL&amp;#39;s site" width="640" height="360"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;Warning, YouTube Link&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Now, a cheap and easy modifiction to a common Kwikset lock that makes
it work like the above:&lt;/p&gt;
&lt;figure&gt;&lt;a href="https://www.youtube.com/watch?v=7JlgKCUqzA0"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-kwikset-hines.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-kwikset-hines.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-kwikset-hines.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-kwikset-hines.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/24/lpl-teaches-you-about-lock-traps-and-how-to-make-your-own-on-the-cheap/lpl-kwikset-hines.jpg"
 alt="A picture of the Kwikset modification to make it Hines-like" width="640" height="360"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;Warning, YouTube Link&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-24 LPL Teaches You About Lock Traps, and how to Make Your Own on the Cheap"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>And So it Begins</title><link>https://degruchy.org/2025/01/24/and-so-it-begins/</link><pubDate>Fri, 24 Jan 2025 11:28:32 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/24/and-so-it-begins/</guid><description>
&lt;p&gt;&lt;a
	href="https://www.nbcnews.com/nbc-out/out-politics-and-policy/missouri-republican-candidate-torches-lgbtq-inclusive-books-viral-vide-rcna137715"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.nbcnews.com/nbc-out/out-politics-and-policy/missouri-republican-candidate-torches-lgbtq-inclusive-books-viral-vide-rcna137715"
	target="_blank" rel="noopener"
	&gt;
	The book burning from the right has
begun
&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a
	href="https://www.pbs.org/wgbh/americanexperience/features/goebbels-burnings/"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://www.pbs.org/wgbh/americanexperience/features/goebbels-burnings/"
	target="_blank" rel="noopener"
	&gt;
	Now where have we seen this kind of behavior
before?
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-24 And So it Begins"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>TIL: Craigslist is Still a Thing</title><link>https://degruchy.org/2025/01/23/til-craigslist-is-still-a-thing/</link><pubDate>Thu, 23 Jan 2025 16:01:20 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/23/til-craigslist-is-still-a-thing/</guid><description>
&lt;p&gt;I could have sworn it was closed down or sold. Amazing.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-23 TIL: Craigslist is Still a Thing"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>No, I Don't Think I Will, YouTube</title><link>https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/</link><pubDate>Thu, 23 Jan 2025 11:45:58 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/</guid><description>
&lt;figure&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/youtube-not-a-bot.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/youtube-not-a-bot.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/youtube-not-a-bot.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/youtube-not-a-bot.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/23/no-i-dont-think-i-will-youtube/youtube-not-a-bot.png"
 alt="A picture of the youtube block image when it thinks you&amp;rsquo;re a bot" width="640" height="348"&gt;
 &lt;/picture&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;A picture of the youtube block image when it thinks you&amp;rsquo;re a bot&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;No, YouTube. I don&amp;rsquo;t think I will. Just because I use a VPN doesn&amp;rsquo;t mean I&amp;rsquo;m a bot.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-23 No, I Don't Think I Will, YouTube"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Not So Social Media</title><link>https://degruchy.org/2025/01/22/not-so-social-media/</link><pubDate>Wed, 22 Jan 2025 17:26:18 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/22/not-so-social-media/</guid><description>
&lt;p&gt;I tried.&lt;/p&gt;
&lt;p&gt;I tried to go back to GUI and HTML email. I tried like I tried to use a
GUI finance manager instead of ledger, or pay for an RSS aggregator, or
many other things.&lt;/p&gt;
&lt;p&gt;I tried to use Micro.blog. I tried to have a nice place where I could
comment, get &lt;a
	href="https://en.wikipedia.org/wiki/Fediverse"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://en.wikipedia.org/wiki/Fediverse"
	target="_blank" rel="noopener"
	&gt;
	Fediverse
&lt;/a&gt; reactions and &lt;a
	href="https://indieweb.org"
	
	
	data-umami-event="outbound-link-click"
	data-umami-event-url="https://indieweb.org"
	target="_blank" rel="noopener"
	&gt;
	IndieWeb
&lt;/a&gt;
functionality. Then I discovered there was a huge
knock-down-drag-out-fight over some social media posts and Elon Musk
and trans people and whatever.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t like social media. I&amp;rsquo;m back to it being nice and quiet.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-22 Not So Social Media"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Elon, You're Not Supposed to Say the Quiet Part Out Loud</title><link>https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/</link><pubDate>Mon, 20 Jan 2025 17:16:22 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/</guid><description>
&lt;figure&gt;&lt;a href="https://www.jpost.com/international/article-838444"&gt;&lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/elon-heil.jxl" type="image/jxl"&gt;&lt;source srcset="https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/elon-heil.heic" type="image/heic"&gt;&lt;source srcset="https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/elon-heil.avif" type="image/avif"&gt;&lt;source srcset="https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/elon-heil.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/20/elon-youre-not-supposed-to-say-the-quiet-part-out-loud/elon-heil.jpg"
 alt="Elon making a &amp;#39;Seig Heil&amp;#39; gesture at a rally" width="640" height="418"&gt;
 &lt;/picture&gt;&lt;/a&gt;&lt;figcaption style="margin: 0 auto; width:640px;"&gt;
 &lt;p&gt;Elon making a &amp;lsquo;Sieg Heil&amp;rsquo; gesture at a rally&lt;/cite&gt;&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;What a chucklefuck. Though, I&amp;rsquo;m pretty sure no one is actually
&lt;em&gt;surprised&lt;/em&gt; by this. If you are, then goodness help you for the
next 4+ years.&lt;/p&gt;
&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-20 Elon, You're Not Supposed to Say the Quiet Part Out Loud"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Late Caturday</title><link>https://degruchy.org/2025/01/19/late-caturday/</link><pubDate>Sun, 19 Jan 2025 16:01:05 -0500</pubDate><author>nathan@degruchy.org (Nathan DeGruchy)</author><guid>https://degruchy.org/2025/01/19/late-caturday/</guid><description>
&lt;ul class="caturday gallery" rel="page"&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/01/19/late-caturday/ellie.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/19/late-caturday/ellie_hu_3af9c5b3d5e40a16.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/19/late-caturday/ellie_hu_a3689fc822fb41cd.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Ellie, lounging on the bench&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;li&gt;
 &lt;a href="https://degruchy.org/2025/01/19/late-caturday/bailey.jpg"&gt;
 &lt;figure&gt;
 &lt;picture&gt;&lt;source srcset="https://degruchy.org/2025/01/19/late-caturday/bailey_hu_c73e241c1fa663a7.webp" type="image/webp"&gt;&lt;img src="https://degruchy.org/2025/01/19/late-caturday/bailey_hu_dd777270c99d62d8.jpg" alt="" width="128" height="128" loading="lazy"&gt;&lt;/picture&gt;&lt;figcaption&gt;Bailey in boxes&lt;/figcaption&gt;&lt;/figure&gt;
 &lt;/a&gt;
 &lt;/li&gt;&lt;/ul&gt;

&lt;style&gt;
	@layer post
	{
		.gallery
		{
			align-content: space-evenly;
			background-color: var(--theme-color-alt-background);
			border: 3px solid var(--theme-color-border);
			border-radius: 10px;
			display: flex;
			flex-direction: row;
			flex-wrap: wrap;
			justify-content: center;
			padding: 0;

			li
			{
				list-style-type: none;
			}

			a
			{
			color: var(--theme-color-alt-foreground);
			}

			figcaption
			{
				height: 1.4rem;
				max-width: 128px;
				overflow: hidden;
				text-overflow: ellipsis;
				text-wrap: nowrap;
			}
		}
	}
&lt;/style&gt;

&lt;p&gt;Want to leave a comment? just &lt;a href="mailto:nathan@degruchy.org?subject=In regards to post: 2025-01-19 Late Caturday"&gt;Respond via email.&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>