<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://nicholasjohnson.ch/tags/journal-updates/</id>
    <title>Nicholas Johnson</title>
    <updated>2025-11-17T00:00:00+0000</updated>
    <link href="https://nicholasjohnson.ch/tags/journal-updates/atom.xml" rel="self" />
    <link href="https://nicholasjohnson.ch/tags/journal-updates/" rel="alternate" />
    <author>
        <name>Nicholas Johnson</name>
    </author>
    <generator>Hugo -- gohugo.io</generator>
    <rights type="html">Copyright © 2020-2026 Nicholas Johnson. CC BY-SA 4.0.</rights>
    <subtitle>Online journal about AI, autism, computing, economics, environmentalism, philosophy, privacy, society, and spirituality.</subtitle>
    <entry>
        <id>https://nicholasjohnson.ch/2025/11/17/journal-update-29/</id>
        <title type="html">Journal Update 29: Git Annex, Signed Commits, and Axing Email</title>
        <updated>2025-11-17T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2025/11/17/journal-update-29/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;h3 id=&#34;maintenance&#34;&gt;Maintenance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Readopted &lt;a class=&#34;link link--external&#34; href=&#34;https://git-annex.branchable.com/&#34; title=&#34;Git Annex&#34; rel=&#34;external noreferrer&#34;&gt;Git Annex&lt;/a&gt; for tracking large binary files. I ceased using it in 2022 because I misperceived it as overly complex, but it works pretty well actually. No one was going to leech the torrents anyways and I certainly wasn&amp;rsquo;t seeding them.&lt;/li&gt;
&lt;li&gt;Removed my contact email from the &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;about page&lt;/a&gt;. I was only keeping it for Git patches, which can just as easily be sent over SimpleX, my preferred messaging protocol. This change saves me the overhead of running an email server, &lt;a class=&#34;link link--internal&#34; href=&#34;/static/dkim-privates.pem&#34; title=&#34;My DKIM Private Keys&#34; rel=&#34;noreferrer&#34;&gt;rotating DKIM keys&lt;/a&gt;, etc.&lt;/li&gt;
&lt;li&gt;Started signing Git commits directly instead of signing Git tags. I thought I needed to sign the tags due to &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/git-signify&#34; title=&#34;Git Signify&#34; rel=&#34;external noreferrer&#34;&gt;git-signify&lt;/a&gt;, but there&amp;rsquo;s no need.&lt;/li&gt;
&lt;li&gt;Added a &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/about/&#34; title=&#34;Journal Repository README&#34; rel=&#34;external noreferrer&#34;&gt;README&lt;/a&gt;. I didn&amp;rsquo;t want familiarity with &lt;a class=&#34;link link--external&#34; href=&#34;https://gohugo.io/&#34; title=&#34;Hugo&#34; rel=&#34;external noreferrer&#34;&gt;Hugo&lt;/a&gt; and Git Annex to be a requirement for reproducing this journal, so I just spelled out the commands there.&lt;/li&gt;
&lt;li&gt;Changed entry dates to &amp;ldquo;day month year&amp;rdquo; because it&amp;rsquo;s my personal preference.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;certificate-expiry&#34;&gt;Certificate Expiry&lt;/h3&gt;
&lt;p&gt;The certificate for this journal&amp;rsquo;s &lt;a class=&#34;link link--external&#34; href=&#34;https://nicholasjohnson.ch&#34; title=&#34;Journal ICANN Site&#34; rel=&#34;external noreferrer&#34;&gt;ICANN site mirror&lt;/a&gt; expired weeks ago. I didn&amp;rsquo;t notice it until today. It turned out to be an issue with Certbot&amp;rsquo;s autorenewal failing.&lt;/p&gt;
&lt;p&gt;This could&amp;rsquo;ve been detected sooner or even prevented by having monitoring and observability. If I had my server configuration documented as code, I may have noticed the issue beforehand, or already implemented monitoring and observability. Yet another reason to automate server configuration, in addition to the reasons I gave in my &lt;a class=&#34;link link--internal&#34; href=&#34;/2025/01/28/journal-update-28/&#34; title=&#34;Journal Update 28: Writing Less&#34; rel=&#34;noreferrer&#34;&gt;prior journal update&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Automate server configuration (Gemini capsule, website, SimpleX, CGit, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coming up with more tags to add to &lt;em&gt;existing&lt;/em&gt; journal entries is no longer in my future plans. It&amp;rsquo;s just not how I want to spend my time.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2025/01/28/journal-update-28/</id>
        <title type="html">Journal Update 28: Writing Less</title>
        <updated>2025-01-28T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2025/01/28/journal-update-28/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;h3 id=&#34;writing-less&#34;&gt;Writing Less&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;I have no plans to abandon this journal. Once I’m achieving some of my big-picture goals, I’ll probably come back to continue writing.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote that in &amp;ldquo;&lt;a class=&#34;link link--internal&#34; href=&#34;/2023/12/09/journal-update-26/&#34; title=&#34;Journal Update 26: Taking a Step Back&#34; rel=&#34;noreferrer&#34;&gt;Taking a Step Back&lt;/a&gt;&amp;rdquo;. A year on, it seems naïve to have thought that I would return to writing at the same pace as before. I&amp;rsquo;m not sure if that&amp;rsquo;s what I meant there, but that&amp;rsquo;s how I interpret it now. Since then, I&amp;rsquo;ve worked toward some of my goals and endured unexpected life changes along the way, both of which have contributed to a newfound clarity on the general, near-term direction I want my life to go.&lt;/p&gt;
&lt;p&gt;Working toward that new direction, I don&amp;rsquo;t expect to return to writing at the pace or intensity I used to any time soon, and maybe never. So I&amp;rsquo;m going to stop including entry forewords about how I haven&amp;rsquo;t &amp;ldquo;returned to writing&amp;rdquo; yet, and just write whenever I have the extra time and energy. My time and energy are currently highly variable, so expect no further updates about how frequently I will write, as I don&amp;rsquo;t want to explain every time circumstances change.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t want to read this whole entry, that was the important bit. You can go now or stay and read the boring maintenance. It&amp;rsquo;s up to you. :)&lt;/p&gt;
&lt;h3 id=&#34;maintenance&#34;&gt;Maintenance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--internal&#34; href=&#34;/2024/04/08/why-i-timestamped-my-journal/&#34; title=&#34;Journal Entry: Why I Timestamped My Journal&#34; rel=&#34;noreferrer&#34;&gt;Timestamped this journal&lt;/a&gt; under the SHA-256 Git object format to replace the old timestamp which used broken SHA-1&lt;/li&gt;
&lt;li&gt;Mirrored all my Git repositories on &lt;a class=&#34;link link--external&#34; href=&#34;https://codeberg.org/nicholasjohnson&#34; title=&#34;Git Repositories Mirror&#34; rel=&#34;external noreferrer&#34;&gt;Codeberg&lt;/a&gt; (SHA-2 repositories are &lt;em&gt;finally&lt;/em&gt; supported now)&lt;/li&gt;
&lt;li&gt;Removed the promoted page (I may write about its listed topics later)&lt;/li&gt;
&lt;li&gt;Switched hosted files over to torrents&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the sake of the cryptographic integrity of this journal, all my files I share here have either been included in the signed Git repository directly, or put into v2 torrents. I&amp;rsquo;d like to do something similar for external links but I&amp;rsquo;m not aware of a good way to accomplish that.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add more &lt;a class=&#34;link link--internal&#34; href=&#34;/tags/&#34; title=&#34;Journal Tags&#34; rel=&#34;noreferrer&#34;&gt;tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Create autoconfiguration script for server (Gemini capsule, website, SimpleX, e-mail, Git, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the past, I dismissed automating my server configuration as not worth the effort. My thoughts on that have since changed and I&amp;rsquo;d rather do that work upfront than risk something happening at an inopportune time and having to suddenly reconfigure everything manually.&lt;/p&gt;
&lt;p&gt;In my &lt;a class=&#34;link link--internal&#34; href=&#34;/2024/07/04/journal-update-27/&#34; title=&#34;Journal Update 27: New Onions!&#34; rel=&#34;noreferrer&#34;&gt;previous journal update&lt;/a&gt;, I mentioned moving my Gemini and SimpleX server root certificates offline for compromise recovery. For that, I would need to periodically sign new online certificates. I can&amp;rsquo;t fully automate that, but it makes a good argument in favor of automating the server configuration. With an automated server configuration, I could make processes like these as painless as possible, and so that they don&amp;rsquo;t depend on the undocumented custom configuration of a specific server.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to work on the automation for the server configuration and other server-related processes in the open, so I&amp;rsquo;ll push that Git repository after I&amp;rsquo;ve built it.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2024/07/04/journal-update-27/</id>
        <title type="html">Journal Update 27: New Onions!</title>
        <updated>2024-07-04T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2024/07/04/journal-update-27/" />
        <content type="html">&lt;h2 id=&#34;foreword&#34;&gt;Foreword&lt;/h2&gt;
&lt;p&gt;This entry does not constitute a return to writing. I&amp;rsquo;m still &lt;a class=&#34;link link--internal&#34; href=&#34;/2023/12/09/journal-update-26/&#34; title=&#34;Journal Update 26: Taking a Step Back&#34; rel=&#34;noreferrer&#34;&gt;taking a step back&lt;/a&gt; from writing. I&amp;rsquo;m only writing this entry because I have to make an &lt;strong&gt;important announcement&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;p&gt;If you don&amp;rsquo;t want to read this whole entry, just read the &lt;strong&gt;important announcement&lt;/strong&gt; in the first bullet point of the subheading below.&lt;/p&gt;
&lt;h3 id=&#34;new-onions-and-key-rotation&#34;&gt;New Onions And Key Rotation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Generated new I2P destinations and Tor onions so that my name is consistent everywhere, including the base32 public key prefixes. The new links are on the &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;about page&lt;/a&gt;. Update your bookmarks accordingly. The old I2P destinations and Tor onions will continue working until I retire them six months from now.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The new I2P destination private keys are kept offline while the online keys are rotated at regular intervals. This provides compromise recovery. I.e: If my server is hacked and the online keys are stolen, the attacker can only control the I2P destination until the keys expire, and I just keep rotating in new online keys according to schedule as if nothing happened.&lt;/p&gt;
&lt;p&gt;Tor doesn&amp;rsquo;t yet support offline keys, so if the server is compromised I&amp;rsquo;ll have to generate a new onion. The good news is there are &lt;a class=&#34;link link--external&#34; href=&#34;https://gitlab.torproject.org/tpo/core/tor/-/issues/29054&#34; title=&#34;prop224: Implement offline keys for v3 onion services&#34; rel=&#34;external noreferrer&#34;&gt;plans to support offline v3 onion service keys&lt;/a&gt; in &lt;a class=&#34;link link--external&#34; href=&#34;https://tpo.pages.torproject.net/core/arti/&#34; rel=&#34;external noreferrer&#34;&gt;Arti&lt;/a&gt;, a project to implement Tor in Rust. As soon as that&amp;rsquo;s implemented, I&amp;rsquo;ll move my onion key offline as well.&lt;/p&gt;
&lt;h3 id=&#34;reducing-housekeeping&#34;&gt;Reducing Housekeeping&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Created a &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/about/CHANGELOG.md&#34; title=&#34;Hugo Journal Theme Changelog&#34; rel=&#34;external noreferrer&#34;&gt;changelog&lt;/a&gt; for &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal&#34; title=&#34;Hugo Journal Theme&#34; rel=&#34;external noreferrer&#34;&gt;this journal&amp;rsquo;s Hugo theme&lt;/a&gt;. Before, I was documenting the changes in &lt;a class=&#34;link link--internal&#34; href=&#34;/tags/journal-updates/&#34; title=&#34;Journal Updates&#34; rel=&#34;noreferrer&#34;&gt;update entries&lt;/a&gt;, which wasn&amp;rsquo;t a good place for them and created extra housekeeping.&lt;/li&gt;
&lt;li&gt;Put my retired DKIM private keys into a separate Git repo. Previously they were stored/referenced in this journal&amp;rsquo;s &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;about page&lt;/a&gt;, which created extra housekeeping.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;goodbye-email&#34;&gt;Goodbye Email&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed email from &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;about page&lt;/a&gt;, leaving SimpleX as my only contact method. This may dissuade some people from reaching out, but I would rather that than people shooting themselves in the foot trying to encrypt emails to me. That had happened several times with both Age and previously PGP.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Move Gemini and SimpleX server root certificates offline for compromise recovery&lt;/li&gt;
&lt;li&gt;Get rid of the promoted page&lt;/li&gt;
&lt;li&gt;Add more &lt;a class=&#34;link link--internal&#34; href=&#34;/tags/&#34; title=&#34;Tags&#34; rel=&#34;noreferrer&#34;&gt;tags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2023/12/09/journal-update-26/</id>
        <title type="html">Journal Update 26: Taking a Step Back</title>
        <updated>2023-12-09T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2023/12/09/journal-update-26/" />
        <content type="html">&lt;p&gt;As some of you have noticed, I journal &lt;em&gt;a lot&lt;/em&gt;. I&amp;rsquo;ve gone the past three and a half odd years averaging two-hundred nine words per day, one new entry every four to five days, and with the largest time gap between entries being less than a month long. There are still so many topics I want to write about and I don&amp;rsquo;t feel anywhere close to burnt out.&lt;/p&gt;
&lt;p&gt;Unfortunately writing eats up a lot of my time and energy, more than meets the eye. When you read this journal, you don&amp;rsquo;t see all the research, the editing, the revising, nor the thinking that goes into it. A journal entry that takes you a few minutes to read takes me hours to write. Taking into account how much and how frequently I write and the deep thinking that&amp;rsquo;s characteristic of my writing, it becomes obvious that I&amp;rsquo;m spending a lot of time on this journal.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll soon turn twenty-five years old. That means that somewhere between a third and a fourth of my life will have passed. I&amp;rsquo;m not making nearly as much progress as I need to on my big-picture life goals and I don&amp;rsquo;t think I can when so much of my time and motivation is going into writing instead. So I&amp;rsquo;m going to take a much-needed step back for a while.&lt;/p&gt;
&lt;p&gt;What I mean by &amp;ldquo;take a step back&amp;rdquo; is that I won&amp;rsquo;t be writing much, if anything, for at least the next few months and probably longer. I have no plans to abandon this journal. Once I&amp;rsquo;m achieving some of my big-picture goals, I&amp;rsquo;ll probably come back to continue writing. So if you have my journal on your feed, please stay subscribed. If you don&amp;rsquo;t use a feed reader, just set a calendar event to check back every six months or so.&lt;/p&gt;
&lt;p&gt;A big thanks to all of you who have kept up with my journal over the years, made comments and suggestions, or donated money.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll see you when I see you.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2023/10/22/journal-update-25/</id>
        <title type="html">Journal Update 25</title>
        <updated>2023-10-22T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2023/10/22/journal-update-25/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--internal&#34; href=&#34;/2023/09/28/will-you-support-my-work/&#34; title=&#34;Will You Support My Work?&#34; rel=&#34;noreferrer&#34;&gt;Received generous financial support&lt;/a&gt;. Thanks everyone who has donated. I was not expecting so much help!&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;Added SimpleX as a contact method.&lt;/a&gt; I now offer SimpleX as a private and secure way to contact me.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/diff/?id=324f7ead1c9333c8580277316ae9f620dfed3d715e805b5f824d6fe4da15567e&amp;amp;id2=89e7b7b8c4bdb63cb5f6f154fd0d9c18a4beabff57d1f01f1adbf8219b1a3d49&#34; title=&#34;Journal Theme Improvements&#34; rel=&#34;external noreferrer&#34;&gt;Made minor journal theme improvements and bug fixes.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch&#34; title=&#34;My Git Repositories&#34; rel=&#34;external noreferrer&#34;&gt;Updated my Git repositories to SHA-256.&lt;/a&gt; This is my main reason for making this journal update. It&amp;rsquo;s a significant change and I wanna spend some time talking about how and why I did it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For those who are not in the know, Git used to use SHA-1 for file and commit identity and integrity checking. SHA-1 is a &lt;a class=&#34;link link--external&#34; href=&#34;https://shattered.io/&#34; title=&#34;SHAttered&#34; rel=&#34;external noreferrer&#34;&gt;weak&lt;/a&gt; cryptographic hash function that shouldn&amp;rsquo;t be used anymore. Git has since switched to using SHA-1dc by default, a hardened version of SHA-1, but there&amp;rsquo;s still a desire to transition away from any SHA-1 variant to the properly secure SHA-256. The transition plan was created in 2017. Six years later, some work has gone towards the transition, but it&amp;rsquo;s incomplete and could remain that way for years to come.&lt;/p&gt;
&lt;p&gt;Git itself and an increasing number of software forges support SHA-256, but there&amp;rsquo;s no compatibility between SHA-1dc and SHA-256 repos yet. This had been bugging me since SHA-1dc likely has lower longevity than SHA-256 and it being broken would render my &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/git-signify&#34; title=&#34;git-signify&#34; rel=&#34;external noreferrer&#34;&gt;signify signatures&lt;/a&gt; meaningless, and the full transition could still be years off. So I set out to transition my repos (not forked ones) to SHA-256 myself. For everybody else, I recommend just waiting for the official solution.&lt;/p&gt;
&lt;p&gt;In the end, I succeeded using a small script I hacked together and some manual rebasing. An alternative solution I considered was creating new SHA-256 Git repos based on the latest commit of my old SHA-1 repos. This solution would&amp;rsquo;ve been much quicker, easier, and less error-prone than what I did, but it also would&amp;rsquo;ve doubled the number of Git repos I have and created a messy situation where the commit history is split across two separate incompatible repos.&lt;/p&gt;
&lt;p&gt;In conclusion, I&amp;rsquo;m happy with the results and I&amp;rsquo;ll make sure every new Git repository I create uses SHA-256 to avoid this situation in the future.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;As for future plans, I&amp;rsquo;m still slowly working on getting rid of the promoted page and adding more &lt;a class=&#34;link link--internal&#34; href=&#34;/tags/&#34; title=&#34;Tags&#34; rel=&#34;noreferrer&#34;&gt;tags&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2023/09/02/journal-update-024/</id>
        <title type="html">Journal Update 024</title>
        <updated>2023-09-02T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2023/09/02/journal-update-024/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;p&gt;Six months have passed since &lt;a class=&#34;link link--internal&#34; href=&#34;/2023/02/25/journal-update-023/&#34; title=&#34;Journal Update 023&#34; rel=&#34;noreferrer&#34;&gt;my last journal update&lt;/a&gt;. Since then, I have improved, fixed, and added new features and documentation to the &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal&#34; title=&#34;Hugo Journal Theme Repository&#34; rel=&#34;external noreferrer&#34;&gt;journal theme&lt;/a&gt;. I&amp;rsquo;ll list the highlights point by point, in no particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=5a66837521d1d66a6df1cfbe9d9a89efc1eeb4f15834e941835350a8494b4012&#34; title=&#34;Journal Theme Git Commit: Add inline image support for HTML&#34; rel=&#34;external noreferrer&#34;&gt;Implemented inline image support for HTML.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/diff/?id=178711418fc11bf05321127aa09c8c718d1695963e2b8023d7e8fbe8cbb1ee44&amp;amp;id2=5ab2048f8e69d21902f379bb281fa947d31e7f0399556ab96f18841d9005e250&#34; title=&#34;Journal Theme Git Commit: Add multilingual support&#34; rel=&#34;external noreferrer&#34;&gt;Added multilingual support.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=b50a7eb7fa8232e66402eb0ca097d3c2423a4aaa934458906be3390d0966aa99&#34; title=&#34;Journal Theme Git Commit: Add custom CSS stylesheet support&#34; rel=&#34;external noreferrer&#34;&gt;Added support for custom CSS stylesheets.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/tree/GEMTEXT-COMPATIBILITY.md?h=2023.09.02&#34; title=&#34;Journal Theme Documentation&#34; rel=&#34;external noreferrer&#34;&gt;Wrote comprehensive documentation.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Made major improvements in template efficiency, speed, and correctness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are still small improvements to be made and probably minor bugs to fix, but no new features are planned at the moment. So I&amp;rsquo;m happy to announce that I made a &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/tag/?h=2023.08.25&#34; title=&#34;Hugo Journal Theme v1.0.0 Release&#34; rel=&#34;external noreferrer&#34;&gt;v1.0.0 release&lt;/a&gt;, which means that the theme is considered stable enough to use and no breaking changes are planned.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve also made some changes to &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal&#34; title=&#34;Journal Repository&#34; rel=&#34;external noreferrer&#34;&gt;the journal itself&lt;/a&gt;. Here they are in no particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Started publishing my &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; title=&#34;About Page&#34; rel=&#34;noreferrer&#34;&gt;DKIM private keys&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Replaced &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/diff/?id=28dc72ee06fab33f4c07ecd0c840d27f420ef05c4c478793dbb130f6f5ecda8e&amp;amp;id2=fc23b52eefdb23fa5c1b572c10f3472eaa4a63154ab9a26fae8165a5e7cb39a6&#34; title=&#34;Journal Git Commit: Replace outdated/unmaintained/upstreamed repos with archived links&#34; rel=&#34;external noreferrer&#34;&gt;outdated/unmaintained/upstreamed repos&lt;/a&gt; from &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch&#34; title=&#34;My Cgit Instance&#34; rel=&#34;external noreferrer&#34;&gt;my cgit instance&lt;/a&gt; with archived links.&lt;/li&gt;
&lt;li&gt;Added the &amp;lsquo;&lt;a class=&#34;link link--internal&#34; href=&#34;/tags/computing/&#34; title=&#34;Journal tag: &amp;#39;computing&amp;#39;&#34; rel=&#34;noreferrer&#34;&gt;computing&lt;/a&gt;&amp;rsquo; tag for computing-related journal entries.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/diff/?id=369824d3344a2cacc12a440039090c155d30665b159985367be39e866687a485&amp;amp;id2=0511dfa99267b9a4b36faadd9aedaf4baa3b916707621e03c03e22d959bef1b8&#34; title=&#34;Journal Git Commit: Replace files subdomain with archived links&#34; rel=&#34;external noreferrer&#34;&gt;Replaced files subdomain with archived links.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/commit/?id=e777ada55bb8e7494dc6bc7a5ec788c8a99fab984eddc17d7249445e5a4c90b8&#34; title=&#34;Journal Git Commit: Remove sourcehut links&#34; rel=&#34;external noreferrer&#34;&gt;Removed Sourcehut links.&lt;/a&gt; archive.org is a sufficient backup and less to maintain.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/commit/?id=4d03aab04da01bfefcba8e9519b2ab97773c4fcb83361322ac98a8559fcc2ad2&#34; title=&#34;Journal Git Commit: Remove glossary&#34; rel=&#34;external noreferrer&#34;&gt;Removed glossary.&lt;/a&gt; It was making my journal seem more like propaganda.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t have anything spectacular planned for the future. I just want to finally get rid of the promoted page and add some more &lt;a class=&#34;link link--internal&#34; href=&#34;/tags/&#34; title=&#34;Tags Page&#34; rel=&#34;noreferrer&#34;&gt;tags&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2023/02/25/journal-update-023/</id>
        <title type="html">Journal Update 023</title>
        <updated>2023-02-25T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2023/02/25/journal-update-023/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;p&gt;A lot of progress has been made on my journal theme. Let&amp;rsquo;s start with the most exciting stuff, the new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=f9d5f9d7cb1fa2bf22e33f570ea4a70be0924d7b7cf01e2b5c8e84f4500195ed&#34; rel=&#34;external noreferrer&#34;&gt;Added inline link support&lt;/a&gt; for HTML without breaking Gemini. Inline links are important for getting the most out of both Gemini and the Web.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=f02f6b0db09299666d78ae21243b7e919a275edb95458f33404c9eaff3aa92be&#34; rel=&#34;external noreferrer&#34;&gt;Implemented taxonomies&lt;/a&gt; and &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=dd14f02c0ecab82b6643edd1751d2913533e6a82e89a33286774c0f56950e169&#34; rel=&#34;external noreferrer&#34;&gt;implemented taxonomy Atom feeds&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=4200dccb4372c7095e151803364c3f34eaa466327a2fc015a7a89065e4742b22&#34; rel=&#34;external noreferrer&#34;&gt;Implemented terms&lt;/a&gt; and &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=dc89efa0d1ba80e8a7c61ddd2d0d4243cc82e52fb2c9104311b4ba5e2af81ff6&#34; rel=&#34;external noreferrer&#34;&gt;implemented term Atom feeds&lt;/a&gt;. This allows for tagging entries. Given the volume of content on my journal and its diversity of subject, tags were becoming necessary for organizational purposes.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=5039efdbd402fd8ff89809fb9bd290bab620aa3571845ab90d7513ad3aecdc4b&#34; rel=&#34;external noreferrer&#34;&gt;Added quote styling.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/refs/&#34; rel=&#34;external noreferrer&#34;&gt;Started versioning the Hugo theme&lt;/a&gt; using &lt;a class=&#34;link link--external&#34; href=&#34;https://semver.org/&#34; rel=&#34;external noreferrer&#34;&gt;Semantic Versioning&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also made a few major improvements and fixed lots of bugs. Here are the highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=3fb3e566afd980915e0b95022aa18c87eedb0438a36c8f8e6b9e03d0386dd360&#34; rel=&#34;external noreferrer&#34;&gt;Stopped formatting preformatted text for Gemini.&lt;/a&gt; It sounds trivial, but Hugo templates only support regex for text-manipulation. So the number of efficient solutions was probably limited to just the one chunk-parsing algorithm I designed and implemented.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=89889841de646ef690e8cc2c530fa808868cafb6cbbe52ccc1cd618d7abbc972&#34; rel=&#34;external noreferrer&#34;&gt;Overhauled the CSS&lt;/a&gt;, making it BEM-compliant.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/commit/?id=e2b45e248570e47dbdb85a2538dc416ce75f34f0d2e00de6f782f2a4790cf05b&#34; rel=&#34;external noreferrer&#34;&gt;Fixed bold/italics removal logic for Gemini.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The journal itself has seen some important changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/commit/?id=76fe211f7216aadb9c9b86e1986164ac37755a9b7ade676f2aa56909cda9ed53&#34; rel=&#34;external noreferrer&#34;&gt;Added back I2P support.&lt;/a&gt; Since &lt;a class=&#34;link link--internal&#34; href=&#34;/2023/02/21/i2p-and-tor-need-your-support/&#34; rel=&#34;noreferrer&#34;&gt;the Tor network has been under a constant DDoS attack for the past few months&lt;/a&gt;, it makes sense to mirror everything on I2P in case v3 onions become unreachable.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/commit/?id=902c9f9dbb6cac328aa94ee2fcbed334b3adcb80891634df5f64a95cd571fe99&#34; rel=&#34;external noreferrer&#34;&gt;Expanded files subdomain access to Gemini.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Painstakingly converted all entry links to inline links. It was tedious, but it needed to be done. It makes Web links look much better.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think my writing itself has also improved. I think it&amp;rsquo;s become more focused. I often want to put lots of extra details in my journal entries, but I&amp;rsquo;ve learned that I need to exclude details to make entries more enjoyable to read. I&amp;rsquo;ve learned to take the reader into consideration more while writing.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;All the features I wanted to implement in my journal theme have been implemented, except for internationalization. After I implement that, I&amp;rsquo;ll just need to polish up and document the code and it&amp;rsquo;ll be ready for the first official release.&lt;/p&gt;
&lt;p&gt;So far I&amp;rsquo;ve added a few tags to group entries by topic. I plan to be conservative about adding new tags. Most entries are still untagged and I still need to decide which new tags to add. If anyone has any advice or experience with that, please &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; rel=&#34;noreferrer&#34;&gt;share it with me&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2022/12/04/journal-update-022/</id>
        <title type="html">Journal Update 022</title>
        <updated>2022-12-04T00:00:01+0000</updated>
        <link href="https://nicholasjohnson.ch/2022/12/04/journal-update-022/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;p&gt;In &lt;a class=&#34;link link--internal&#34; href=&#34;/2022/09/19/journal-update-021/&#34; rel=&#34;noreferrer&#34;&gt;my last journal entry update&lt;/a&gt; back in September, I talked about rebranding away from nicksphere to just my name, nicholasjohnson. Well I&amp;rsquo;ve finished the rebranding. For more on that, see &lt;a class=&#34;link link--internal&#34; href=&#34;/2022/12/04/domain-change-announcement/&#34; rel=&#34;noreferrer&#34;&gt;my previous journal entry&lt;/a&gt;. I accomplished it by the most straightforward way possible: setting up everything in parallel on a fresh server, then updating the domains. I changed some backend server stuff, but probably nobody cares about those details.&lt;/p&gt;
&lt;p&gt;Using Ansible, I automated configurations that remain the same across servers I use. At some point in the future when it&amp;rsquo;s ready, I&amp;rsquo;ll git push the playbook. I decided not to automate the entire server. For every change I make on the server, I&amp;rsquo;d have to update the Ansible scripts, creating twice the work. It would only save me time in the scenario where my server is wiped and I need to reprovision it from scratch. That situation is very rare, so automating isn&amp;rsquo;t worth it.&lt;/p&gt;
&lt;p&gt;My new VPS accepts many payment methods, so I don&amp;rsquo;t depend on &lt;a class=&#34;link link--internal&#34; href=&#34;/glossary/&#34; rel=&#34;noreferrer&#34;&gt;digital tulips&lt;/a&gt; anymore. Unfortunately my VPS provider doesn&amp;rsquo;t have IPv6 support yet, but I&amp;rsquo;ve been assured that they already have the IPv6 addresses and they&amp;rsquo;re just working on assigning them now.&lt;/p&gt;
&lt;p&gt;I decided to drop I2P support for the time being. It was broken anyway for who knows how long. If you want to know more about that, read this &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/commit/?id=2a5af819934817f0fd09bf3aeff37a72bff4d33f937bcbed260955da09ec0b26&#34; rel=&#34;external noreferrer&#34;&gt;Git commit message&lt;/a&gt;. If you use the &lt;a class=&#34;link link--external&#34; href=&#34;gemini://nick6gsepvtmkcpibpid6dqtqroxt62u6ab4ep65vxrenffruumj6jad.onion&#34; rel=&#34;external noreferrer&#34;&gt;Tor&lt;/a&gt; &lt;a class=&#34;link link--external&#34; href=&#34;http://nick6gsepvtmkcpibpid6dqtqroxt62u6ab4ep65vxrenffruumj6jad.onion&#34; rel=&#34;external noreferrer&#34;&gt;onion&lt;/a&gt; to access this journal, nothing has changed. I migrated the onion to the new VPS as-is.&lt;/p&gt;
&lt;p&gt;In the journal repository, I&amp;rsquo;ve started signing Git tags rather than commits. Git-annex has been removed for cleaner code and better accessibility on Sourcehut. The ugly Python code has been entirely removed and replaced with two Hugo configuration files, meaning Hugo properly generates my journal now all on its own. I switched from emojis to using emoji codes for better code accessibility.&lt;/p&gt;
&lt;p&gt;Finally, I archived my old repos on Sourcehut. I didn&amp;rsquo;t want them completely gone since they&amp;rsquo;re linked to in some of my old entries and I try hard to avoid link rot, but I also didn&amp;rsquo;t want them so front and center since they&amp;rsquo;re poorly written.&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;For the Hugo theme for this journal, you can find my plans in &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/tree/TODO?id=833d19b542e6d6106ac4979e7a6319bec1969ed7a8f085afe944872bcefddfa7&#34; rel=&#34;external noreferrer&#34;&gt;this TODO file&lt;/a&gt;. I&amp;rsquo;m going to start versioning the theme. Once I implement the features in the TODO file, as long as nothing else occurs to me, I&amp;rsquo;ll make the first official release of the theme with version 1.0.0.&lt;/p&gt;
&lt;p&gt;As for the journal itself, eliminating the promoted links page is the only major change I have planned and that will happen gradually.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2022/09/19/journal-update-021/</id>
        <title type="html">Journal Update 021</title>
        <updated>2022-09-19T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2022/09/19/journal-update-021/" />
        <content type="html">&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;
&lt;p&gt;As was planned since &lt;a class=&#34;link link--internal&#34; href=&#34;/2022/05/01/journal-update-020/&#34; rel=&#34;noreferrer&#34;&gt;my last journal entry&lt;/a&gt; back in May, I polished up the &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal&#34; rel=&#34;external noreferrer&#34;&gt;hugo-theme-nicksphere&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;Among the improvements are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anonymous links (noreferrer).&lt;/li&gt;
&lt;li&gt;Faster capsule generation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bold&lt;/strong&gt; and &lt;em&gt;italics&lt;/em&gt; support for Web.&lt;/li&gt;
&lt;li&gt;Improved Web accessibility for mobile and screen readers.&lt;/li&gt;
&lt;li&gt;Improved site HTML and CSS.&lt;/li&gt;
&lt;li&gt;Improved site and capsule navigability.&lt;/li&gt;
&lt;li&gt;Made it easier to add a logo.&lt;/li&gt;
&lt;li&gt;Added emojis.&lt;/li&gt;
&lt;li&gt;Added useful metadata to each entry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also made some improvements to the &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal&#34; rel=&#34;external noreferrer&#34;&gt;nicksphere repository&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved &lt;a class=&#34;link link--internal&#34; href=&#34;/glossary/&#34; rel=&#34;noreferrer&#34;&gt;glossary linkability&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Simplified relative links.&lt;/li&gt;
&lt;li&gt;Made text on non-entry pages less long-winded.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And finally, some other improvements were made independent of any repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Added nicksphere.ch to the &lt;a class=&#34;link link--external&#34; href=&#34;https://hstspreload.org/&#34; rel=&#34;external noreferrer&#34;&gt;HSTS preload list&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Updated the &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch&#34; rel=&#34;external noreferrer&#34;&gt;CGit instance&lt;/a&gt; and improved code readability.&lt;/li&gt;
&lt;li&gt;Mirrored all my Git repositories on Sourcehut for redundancy.&lt;/li&gt;
&lt;li&gt;Made the Tor onions faster.&lt;/li&gt;
&lt;li&gt;Fixed the HTTP headers for nicksphere.ch.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h2&gt;
&lt;p&gt;I hope to get around to fixing known bugs and adding more features to hugo-theme-nicksphere. The basic challenge is to make the Web output featureful without breaking Gemini. For instance, I want to add inline images and links for the Web whilst also making those images and links accessible on Gemini.&lt;/p&gt;
&lt;p&gt;I still plan on eliminating the promoted links page over time.&lt;/p&gt;
&lt;p&gt;I need to use a tool to scan for link rot and fix any broken links. This is relatively easy.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been considering removing the branding &amp;ldquo;nicksphere&amp;rdquo; from my journal and replacing it with just my name. Here are my reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everything on the domain &amp;ldquo;nicksphere.ch&amp;rdquo; and its subdomains is specific to me: my journal, my email, and my Git repositories. My name alone is sufficient branding. &amp;ldquo;nicksphere&amp;rdquo; is erroneous.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;nicksphere&amp;rdquo; in spoken English is unclear. I always have to spell it to people.&lt;/li&gt;
&lt;li&gt;Searching &amp;ldquo;nicksphere&amp;rdquo; on any major search engine yields my journal. I like being high in the search results, but I&amp;rsquo;d rather this journal be found by word of mouth and links from other small blogs. Also, I think search engines wield too much power and I&amp;rsquo;m not willing to let SEO dictate things about my journal.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rebranding isn&amp;rsquo;t a high priority and I haven&amp;rsquo;t decided on it for certain. In any case, I&amp;rsquo;ll be sure to provide ample notice if the domain is changed.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve spent a lot of time on server-side configurations that make nicksphere.ch work, but they&amp;rsquo;re not documented anywhere. I&amp;rsquo;d like to create a Git repository automating those setups and configurations with Ansible scripts.&lt;/p&gt;
&lt;p&gt;Another reason server-side automation is useful is for transitioning to a new VPS. I need to switch because my current VPS only accepts &lt;a class=&#34;link link--internal&#34; href=&#34;/glossary/&#34; rel=&#34;noreferrer&#34;&gt;digital tulips&lt;/a&gt;, which &lt;a class=&#34;link link--internal&#34; href=&#34;/2022/08/17/merchants-should-stop-accepting-cryptocurrency/&#34; rel=&#34;noreferrer&#34;&gt;I oppose&lt;/a&gt;. Since this domain is associated with my real legal name, I don&amp;rsquo;t benefit from anonymous payment anyway. And my VPS provider is quite expensive.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a lot to be done, but luckily the only time-sensitive todo item is switching my VPS provider so I don&amp;rsquo;t need to use cryptocurrency. Everything else can wait.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2022/05/01/journal-update-020/</id>
        <title type="html">Journal Update 020</title>
        <updated>2022-05-01T00:00:01+0000</updated>
        <link href="https://nicholasjohnson.ch/2022/05/01/journal-update-020/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;p&gt;Over the past week, I rewrote my journal generator (yes, again). I created a &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/hugo-theme-journal/&#34; rel=&#34;external noreferrer&#34;&gt;Hugo theme&lt;/a&gt;, so Hugo now does all the heavy lifting. The new program simply called &amp;ldquo;&lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/journal/&#34; rel=&#34;external noreferrer&#34;&gt;nicksphere&lt;/a&gt;&amp;rdquo; generates the website, the Gemini capsule, and the Atom feeds for both all in less than a second. Any plans I had for my custom generator &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10;origin=https://git.nicholasjohnson.ch/nicksphere-gmi&#34; rel=&#34;external noreferrer&#34;&gt;nicksphere-gmi&lt;/a&gt; have been scrapped.&lt;/p&gt;
&lt;p&gt;Now that Hugo is handling the generation process, I no longer need to make my generator multithreaded, multilingual, or documented. My generator wasn&amp;rsquo;t bad, but obviously it&amp;rsquo;s nothing compared to a popular, established site generator like Hugo.&lt;/p&gt;
&lt;p&gt;My motivation for making the switch back to Hugo started with me feeling that &lt;a class=&#34;link link--external&#34; href=&#34;https://gemini.circumlunar.space/docs/gemtext.gmi&#34; rel=&#34;external noreferrer&#34;&gt;my journal entries were overcommitted to Gemini&lt;/a&gt;. With the last generator nicksphere-gmi, everything was written in and parsed as gemtext, the markup for the Gemini protocol. It occurred to me that having my journal entries based on an obscure markup format gives them less longevity.&lt;/p&gt;
&lt;p&gt;Trying to make nicksphere-gmi support a new protocol is comparatively difficult, since another Gemini-to-X converter is needed for each one. With Markdown, such a converter probably already exists. Using nicksphere-gmi, I couldn&amp;rsquo;t simply decide to stop supporting Gemini. I don&amp;rsquo;t have any plans to do that, but I don&amp;rsquo;t think this journal should be bound to any specific platform. Converting everything to a more universal format with broad support, Markdown, increases this journal&amp;rsquo;s longevity and extensibility.&lt;/p&gt;
&lt;p&gt;So why didn&amp;rsquo;t I just rewrite nicksphere-gmi to use Markdown? Well, I realized that Hugo already uses Markdown and it&amp;rsquo;s of much higher quality than my generator. The original reason I moved away from Hugo was to support Gemini, but I found a few online articles showing how I could make Hugo output Gemini. Ultimately, I was able to make it work.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m still not quite satisfied with my new Hugo theme, hugo-theme-nicksphere. It probably still contains some bugs and will require more work to get into a state where it&amp;rsquo;s usable for others. So don&amp;rsquo;t use it just yet.&lt;/p&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Polish up hugo-theme-nicksphere.&lt;/li&gt;
&lt;li&gt;Remove the promoted page. I think it would be best to eliminate the promoted page over time, making an entry for each item on the promoted page. I would rather explain in proper context what it is about these people/organizations/etc. that I support instead of just listing them with no explanation.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2022/03/14/journal-update-019/</id>
        <title type="html">Journal Update 019</title>
        <updated>2022-03-14T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2022/03/14/journal-update-019/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Mirrored this journal on archive.org. The archive.org link can be found on the &lt;a class=&#34;link link--external&#34; href=&#34;https://nicholasjohnson.ch/about/&#34; rel=&#34;external noreferrer&#34;&gt;about page&lt;/a&gt;. Since I don&amp;rsquo;t have immediate, direct control over this mirror, it&amp;rsquo;s non-trivial for an adversary to remove the archive.org mirror even if I&amp;rsquo;m compromised.&lt;/li&gt;
&lt;li&gt;Rewrote nicksphere-gmi to separate presentation from business logic. There are still efficiency improvements to be made, but the code is already much cleaner and more maintainable. It&amp;rsquo;s now possible to easily make the website look very different from the capsule. This may be desirable since Gemini is more limited.&lt;/li&gt;
&lt;li&gt;Added back the read time for entries. How much time an entry takes to read could be an important factor in deciding to read it or not. Also I want this journal to be respectful of the reader&amp;rsquo;s time and attention.&lt;/li&gt;
&lt;li&gt;Limited the atom feed to 20 entries. It does not need to contain every entry.&lt;/li&gt;
&lt;li&gt;Replaced the commit-signatures repository with &lt;a class=&#34;link link--external&#34; href=&#34;https://git.nicholasjohnson.ch/git-signify/&#34; rel=&#34;external noreferrer&#34;&gt;git-signify&lt;/a&gt;. Git-signify is a hack which embeds Signify signatures into Git repositories. It&amp;rsquo;s better to have the signature information embedded directly into the repository itself so it&amp;rsquo;s more self-contained.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If all you want to do is verify commits, you don&amp;rsquo;t need git-signify. You can run the commands below instead. With Git and Signify installed, run:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-Git&#34; data-lang=&#34;Git&#34;&gt;git cat-file -p &amp;lt;commit-hash&amp;gt; | sed -n &amp;#39;/-----BEGIN PGP SIGNATURE-----/,/-----END PGP SIGNATURE-----/p&amp;#39; | sed &amp;#39;1d;$d&amp;#39; | sed &amp;#39;s/ //&amp;#39; &amp;gt; /tmp/sig
git cat-file -p &amp;lt;commit-hash&amp;gt; | sed &amp;#39;/-----BEGIN PGP SIGNATURE-----/,/-----END PGP SIGNATURE-----/d&amp;#39; | signify -V -p &amp;lt;signify-public-key&amp;gt; -m - -x /tmp/sig
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Document nicksphere-gmi. Unlike previous versions, the current nicksphere-gmi repository is a proper static capsule/website generator. It therefore makes sense to document it for others.&lt;/li&gt;
&lt;li&gt;Make a simpler demo capsule/website for potential nicksphere-gmi users.&lt;/li&gt;
&lt;li&gt;Remove the promoted page. I think it would be best to eliminate the promoted page over time, making an entry for each item on the promoted page. I would rather explain in proper context what it is about these people/organizations/etc that I support instead of just listing them with no explanation.&lt;/li&gt;
&lt;li&gt;Support multithreading for nicksphere-gmi.&lt;/li&gt;
&lt;li&gt;Add a 404 page to this journal.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2022/03/03/journal-update-018/</id>
        <title type="html">Journal Update 018</title>
        <updated>2022-03-03T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2022/03/03/journal-update-018/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Replaced my GPG key with Age for email encryption and Signify for signing commits. &lt;a class=&#34;link link--internal&#34; href=&#34;/2022/01/03/goodbye-pgp/&#34; rel=&#34;noreferrer&#34;&gt;GPG is ancient, bad software&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Stopped accepting cryptocurrency donations. Proof-of-work cryptocurrencies waste obscene amounts of energy. Existing cryptocurrencies don&amp;rsquo;t scale well. Their main use is crime and speculation on crime. The market is full of scams and false promises. No one really knows how to value them. They are potentially a systemic risk to the economy. So I do not wish to be involved anymore. It&amp;rsquo;s not like this journal costs much to run anyway.&lt;/li&gt;
&lt;li&gt;Entry summaries have been removed. I believe the title alone should be sufficient to communicate an entry&amp;rsquo;s subject matter.&lt;/li&gt;
&lt;li&gt;Pagination and read time have been removed to simplify the journal layout. These features may be added back later after the scripts rewrite if I decide they further journal design goals. The goal of the design of this journal is to be minimally distracting and respect reader attention.&lt;/li&gt;
&lt;li&gt;Replaced GitLab mirror with &lt;a class=&#34;link link--external&#34; href=&#34;https://sourcehut.org/&#34; rel=&#34;external noreferrer&#34;&gt;SourceHut&lt;/a&gt;. SourceHut has many benefits over GitLab. It doesn&amp;rsquo;t &lt;a class=&#34;link link--external&#34; href=&#34;https://gitlab.com/gitlab-com/www-gitlab-com/-/merge_requests/30656&#34; rel=&#34;external noreferrer&#34;&gt;assist ICE&lt;/a&gt;. It doesn&amp;rsquo;t require JavaScript unlike GitLab. It&amp;rsquo;s fast and resource efficient. It also supports Gemini, so all three journal mirrors now support both Gemini and the Web.&lt;/li&gt;
&lt;li&gt;Added &lt;a class=&#34;link link--external&#34; href=&#34;http://nick5la4gcv6tzdjk2pf55p5vi24pcxseioyko24ffd4x3uijdca.b32.i2p&#34; rel=&#34;external noreferrer&#34;&gt;I2P support&lt;/a&gt; for CGit instance.&lt;/li&gt;
&lt;li&gt;Added &lt;a class=&#34;link link--external&#34; href=&#34;gemini://nick6w7lwwzwli57czw5glh3sm2qhnyzbhtq3nohbcnc7j3wqmqq.b32.i2p&#34; rel=&#34;external noreferrer&#34;&gt;I2P&lt;/a&gt; and &lt;a class=&#34;link link--external&#34; href=&#34;gemini://nick6gsepvtmkcpibpid6dqtqroxt62u6ab4ep65vxrenffruumj6jad.onion&#34; rel=&#34;external noreferrer&#34;&gt;Tor support&lt;/a&gt; on Gemini&amp;rsquo;s main mirror. Readers can now browse the Nicksphere privately and without a Web Browser.&lt;/li&gt;
&lt;li&gt;Replaced nicksphere-gmi&amp;rsquo;s Gemini to HTML Go library with &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:a993794ad9e5e68d1d6319d7d735de3c62f66b18;origin=https://git.nicholasjohnson.ch/gemini2html&#34; rel=&#34;external noreferrer&#34;&gt;my own&lt;/a&gt;, written in C. Journal generation is now much faster.&lt;/li&gt;
&lt;li&gt;Use spare server resources to run &lt;a class=&#34;link link--external&#34; href=&#34;https://metrics.torproject.org/rs.html#details/B04ABF4521C773216BC94F6FC1310686A2ECA150&#34; rel=&#34;external noreferrer&#34;&gt;Tor Relay&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Rewrite &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10;origin=https://git.nicholasjohnson.ch/nicksphere-gmi&#34; rel=&#34;external noreferrer&#34;&gt;nicksphere-gmi&lt;/a&gt;&amp;rsquo;s scripts to improve efficiency, maintainability, and code quality.&lt;/li&gt;
&lt;li&gt;Document nicksphere-gmi&amp;rsquo;s scripts separately.&lt;/li&gt;
&lt;li&gt;Add privacy policy to journal.&lt;/li&gt;
&lt;li&gt;Add 404 page to journal.&lt;/li&gt;
&lt;li&gt;Offer rationales for items listed on promoted page.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/12/02/journal-update-017/</id>
        <title type="html">Journal Update 017</title>
        <updated>2021-12-02T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/12/02/journal-update-017/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;IPv6 support is back! I don&amp;rsquo;t plan on removing it again. This site needs to be present on the modern internet.&lt;/li&gt;
&lt;li&gt;Migrate from Gitea to Cgit + Gitolite3. Gitea is much more than I need. Cgit is lightweight and it loads faster.&lt;/li&gt;
&lt;li&gt;Change top-level domain from .com to .ch. &lt;a class=&#34;link link--external&#34; href=&#34;https://en.wikipedia.org/wiki/Operation_In_Our_Sites&#34; rel=&#34;external noreferrer&#34;&gt;Operation Not in Your Sites.&lt;/a&gt; See the &lt;a class=&#34;link link--external&#34; href=&#34;https://stallman.org/articles/end-war-on-sharing.html&#34; rel=&#34;external noreferrer&#34;&gt;War on Sharing&lt;/a&gt;. Nicksphere.com will redirect for about a year until it expires. So readers have a year to update their bookmarks/links.&lt;/li&gt;
&lt;li&gt;New self-hosted email. Posteo is great and I&amp;rsquo;ve no complaints about it. I still recommend Posteo to others. I just wanted more control over my email and it seemed silly not to self-host where I could. My PGP key has also been updated to reflect my new email.&lt;/li&gt;
&lt;li&gt;Remove corrections page. I have no motivation to write corrections. I don&amp;rsquo;t think anybody would read them anyway and it&amp;rsquo;s probably best to just make new entries to self-correct.&lt;/li&gt;
&lt;li&gt;Remove hosted services on the &lt;a class=&#34;link link--internal&#34; href=&#34;/about/&#34; rel=&#34;noreferrer&#34;&gt;about page&lt;/a&gt;. My new VPS doesn&amp;rsquo;t have the resources for them. I still have the old VPS and domain name rented out for a year in advance. If anybody reading this needs a hosted service for a use case, just let me know. Otherwise I&amp;rsquo;ll dedicate those resources elsewhere.&lt;/li&gt;
&lt;li&gt;Website redesign! I changed the font to sans-serif which is much easier and more enjoyable to read than monospace. I also squashed the text to 780 pixels so less horizontal eye scanning is required. This is irrelevant to readers coming from Gemini and Atom/RSS.&lt;/li&gt;
&lt;li&gt;Remove dead links. I wrote a &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:cnt:bca14b35aa1cbd9ef5abdea35e406248faddb24f;origin=https://git.nicholasjohnson.ch/nicksphere-gmi;visit=swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10;anchor=swh:1:rev:c77cc20bbeaf017b9426f2de548aefd20c8e4007;path=/scripts/find_broken_links.py&#34; rel=&#34;external noreferrer&#34;&gt;Python script to crawl the journal and detect all the dead links&lt;/a&gt;. Running this periodically should be sufficient to prevent link rot on Nicksphere. I may automate the process in the future.&lt;/li&gt;
&lt;li&gt;Remove articles and books from the promoted page. I&amp;rsquo;ve struggled with how to promote others&amp;rsquo; work for a while. For now I&amp;rsquo;ve settled on promoting more general links on the promoted page, while writing individual entries to promote more specific things.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Everything in the &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:cnt:fc325646b7c096fcd62a21dff2454632b54ff75e;origin=https://git.nicholasjohnson.ch/nicksphere-gmi;visit=swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10;anchor=swh:1:rev:c77cc20bbeaf017b9426f2de548aefd20c8e4007;path=/TODO.txt&#34; rel=&#34;external noreferrer&#34;&gt;TODO&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;final-note&#34;&gt;Final Note&lt;/h1&gt;
&lt;p&gt;A while back I said I don&amp;rsquo;t wish for my entries related to spirituality to be interpreted as truth-apt. I&amp;rsquo;ve complained about the difficulty in explaining spiritual concepts. But I think I&amp;rsquo;ve finally reached a point where I can explain myself better. So I&amp;rsquo;m retracting my previous stance. Please do interpret future entries related to spirituality as literally true.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/10/09/journal-update-016/</id>
        <title type="html">Journal Update 016</title>
        <updated>2021-10-09T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/10/09/journal-update-016/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Freenet and Zeronet support have been removed. I don&amp;rsquo;t think anyone is using those platforms to read this journal, so I deem them not worth the maintenance.&lt;/li&gt;
&lt;li&gt;Minor improvements/fixes for capsule/site generation.&lt;/li&gt;
&lt;li&gt;Hosting of site/capsule/services consolidated to 1 machine to lower costs. Previously there were 2 separate machines used for hosting. Unfortunately this means loss of IPv6 support.&lt;/li&gt;
&lt;li&gt;Update PGP key. If my subkeys expire or I publish the revocation certificate, you can assume I&amp;rsquo;ve been compromised.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Write journal corrections. See &lt;a class=&#34;link link--internal&#34; href=&#34;/2021/09/10/journal-update-015/&#34; rel=&#34;noreferrer&#34;&gt;journal update 15&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/09/10/journal-update-015/</id>
        <title type="html">Journal Update 015</title>
        <updated>2021-09-10T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/09/10/journal-update-015/" />
        <content type="html">&lt;p&gt;It sometimes happens that after I write a post, I think of ways it could&amp;rsquo;ve been better. Rarely it happens that I completely change my opinion on something and my past writing no longer reflects what I now believe. But it does happen.&lt;/p&gt;
&lt;p&gt;So should I rewrite every entry that isn&amp;rsquo;t perfect according to my own standards? This journal isn&amp;rsquo;t a podcast. I could do that, if I wanted to. But I don&amp;rsquo;t want to do that. I don&amp;rsquo;t want to be doing loads of work constantly going back to correct what I&amp;rsquo;ve written. It would destroy my motivation to write this journal and I believe this journal is a positive contribution to society.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t think my readers want me to do that either. When readers share my entries, they expect the entry they shared to be the same entry they read. Unless it&amp;rsquo;s something trivial like a broken link, subjecting my entries to constant revision seems to be in nobody&amp;rsquo;s best interest. Even adding correctional notes inside entries could make a mess of my writing.&lt;/p&gt;
&lt;p&gt;None of this excuses me from self-correction though. I do want to point out what I got wrong in my previous entries. This journal demands an alternative solution to self-correction.&lt;/p&gt;
&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;h2 id=&#34;journal-corrections&#34;&gt;Journal Corrections&lt;/h2&gt;
&lt;p&gt;As a compromise between journal organization/entry stability and correctness of the information/opinions I publish, I&amp;rsquo;ve decided to create a new page listing the corrections by entry. This page will serve to correct bad or biased information I&amp;rsquo;ve published. In order to avoid corrections of corrections, the journal corrections page itself will be subject to change at any time. If I feel the mistake is severe enough, I may decide to add a link at the top of the original entry linking to its corrections.&lt;/p&gt;
&lt;h2 id=&#34;journal-updates&#34;&gt;Journal Updates&lt;/h2&gt;
&lt;p&gt;Finally, you may be wondering why I keep calling this a &amp;ldquo;journal&amp;rdquo; and why the title of this &amp;ldquo;entry&amp;rdquo; is &amp;ldquo;Journal Update&amp;rdquo; instead of &amp;ldquo;Site Update&amp;rdquo; as usual. &amp;ldquo;site&amp;rdquo; is short for &amp;ldquo;website&amp;rdquo;, which is associated with the world wide web. And &amp;ldquo;blog&amp;rdquo; is short for &amp;ldquo;weblog&amp;rdquo; (web log) which also isn&amp;rsquo;t platform agnostic language. Given my writing is available as an onion (Tor), an eepsite (I2P), a freesite (Freenet), a zite (ZeroNet), and a capsule (Gemini), calling it any one of those things is misleading. So I&amp;rsquo;ve decided to use the word &amp;ldquo;journal&amp;rdquo; from now on to refer to what I do here. It&amp;rsquo;s a descriptive, platform agnostic word. The header and footer text has also been updated.&lt;/p&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Support multithreading in journal generation scripts. This should make generation go faster. This is even more important now that feeds are generated independently of pages. See &lt;a class=&#34;link link--internal&#34; href=&#34;/2021/06/10/site-update-012/&#34; rel=&#34;noreferrer&#34;&gt;site update 12&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Support caching in journal generation scripts. This should make generation go much faster.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/08/28/site-update-014/</id>
        <title type="html">Site Update 014</title>
        <updated>2021-08-28T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/08/28/site-update-014/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;My blog was added to &lt;a class=&#34;link link--internal&#34; href=&#34;//nightfall.city&#34; rel=&#34;noreferrer&#34;&gt;nightfall.city&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nightfall.city is a virtual city. I&amp;rsquo;m on main street. Being added was a pleasant surprise. I like these little Gemini communities. I like reading other people&amp;rsquo;s Gemlogs and finding out what they&amp;rsquo;re up to. The browsing experience of the Geminispace is so much more user-friendly than browsing the web. I could browse for hours. I encourage you to download a Gemini client and explore the space yourself.&lt;/p&gt;
&lt;p&gt;Personally, I like the uniformity of presentation. It lends itself to a non-distracting, enjoyable experience. I like knowing I&amp;rsquo;m not going to encounter ads, tracking cookies or other garbage and I don&amp;rsquo;t have to worry about client-side JavaScript because Gemini doesn&amp;rsquo;t support JavaScript or cookies! I can focus on what&amp;rsquo;s important: the content.&lt;/p&gt;
&lt;p&gt;I also like the simplicity. I don&amp;rsquo;t have to learn how to navigate every new Gemini capsule I visit because they&amp;rsquo;re all the same. My brain doesn&amp;rsquo;t have to get used to different stylesheets. It&amp;rsquo;s just better. I&amp;rsquo;ll probably do a post about Gemini in the future. Anyway, the web is a bloated mess. Long live Gemini!&lt;/p&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Support multithreading in blog generation scripts. This should make generation go faster. This is even more important now that feeds are generated independently of pages. See &lt;a class=&#34;link link--internal&#34; href=&#34;/2021/06/10/site-update-012/&#34; rel=&#34;noreferrer&#34;&gt;site update 12&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Support caching in blog generation scripts. This should make generation go much faster.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/07/09/site-update-013/</id>
        <title type="html">Site Update 013</title>
        <updated>2021-07-09T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/07/09/site-update-013/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Full content &lt;a class=&#34;link link--internal&#34; href=&#34;/atom.xml&#34; rel=&#34;noreferrer&#34;&gt;Atom feeds&lt;/a&gt; have returned. Before Gemini, I had a full content web feed, not just the summaries. After Gemini, I changed it to summaries only. Now, full content is supported again along with summaries. It was a mistake adding Gemini without full content web feed support. I shouldn&amp;rsquo;t have taken that feature away from readers without warning. I was just so focused on getting Gemini that I ditched the web feed to roll that out early. Apologies to anyone using it. I don&amp;rsquo;t really care how readers access my blog as long as they&amp;rsquo;re reading it and I want to make it as accessible as possible for everyone.&lt;/li&gt;
&lt;li&gt;New &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:14fb224d5e13136ac433bb459e3803aed63a0bb7;origin=https://git.nicholasjohnson.ch/nicksphere-gmi-content&#34; rel=&#34;external noreferrer&#34;&gt;content submodule&lt;/a&gt;. This almost entirely separates the text on my blog from everything else, significantly reducing the number of files in the main repository. I did this to create a logical separation between the text on the blog and everything used to generate/display that text.&lt;/li&gt;
&lt;li&gt;Clearer licensing. The licensing was unclear before because I didn&amp;rsquo;t clearly indicate which licenses went with which files. Now that content and scripts live in separate repositories, the main repo can use GPLv3 exclusively and the content CC BY-SA 4.0 exclusively.&lt;/li&gt;
&lt;li&gt;GitLab pages is fixed as of &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:rev:3ea0615f72fcae2d345f239569019429c5d5d168;origin=https://git.nicholasjohnson.ch/nicksphere-gmi;visit=swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10#swh-revision-changes&#34; rel=&#34;external noreferrer&#34;&gt;this commit&lt;/a&gt;. Before, it wasn&amp;rsquo;t recursively cloning the new content submodule, so the generation process was failing and the mirror was down for a while.&lt;/li&gt;
&lt;li&gt;GNU Audio Video mirror link added. I&amp;rsquo;m now mirroring all the GNU audios and videos. Before I had the A/V on the mirrors subdomain and A/V links weren&amp;rsquo;t working that way. I realized that particular mirror requires its own domain to display properly, so now it has one.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Support multithreading in blog generation scripts. This should make generation go faster. This is even more important now that feeds are generated independently of pages. See &lt;a class=&#34;link link--internal&#34; href=&#34;/2021/06/10/site-update-012/&#34; rel=&#34;noreferrer&#34;&gt;site update 12&lt;/a&gt; for details.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/06/10/site-update-012/</id>
        <title type="html">Site Update 012</title>
        <updated>2021-06-10T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/06/10/site-update-012/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;The wonky CSS is fixed. The result is the site is much more presentable and easy to read on mobile and desktop. Specifically, the spacing is more consistent.&lt;/li&gt;
&lt;li&gt;GitLab pages now correctly generates my website using .gitlab-ci.yml. I deleted my GitHub mirror since I didn&amp;rsquo;t want to write a CI script to support the proprietary GitHub pages system.&lt;/li&gt;
&lt;li&gt;New Privatebin instance on the bin subdomain&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Support multithreading in capsule / site generation scripts. This should make generation go faster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It just didn&amp;rsquo;t occur to me to support multithreading when I was writing the scripts. Page generation speed isn&amp;rsquo;t a problem now and probably never will be even if I don&amp;rsquo;t update the scripts, but the intermediary changes I have to make before I support multithreading will improve the readability and maintainability of my scripts on its own. I like my code to be as easy to understand as possible for my future self and for others and I&amp;rsquo;m sure I can do better with those scripts.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/05/02/site-update-011/</id>
        <title type="html">Site Update 011</title>
        <updated>2021-05-02T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/05/02/site-update-011/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;p&gt;I paused posts because I&amp;rsquo;ve been busy migrating my blog to [Gemini](Gemini specification):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Migrate blog to Gemini because the web is cancer.&lt;/li&gt;
&lt;li&gt;New website! Even though the web is cancer, a web presence is still a necessity. I wrote a script that generates a Gemini capsule and website from my content files. I also wrote the CSS myself to mirror the look of the Amfora Gemini client for convergence.&lt;/li&gt;
&lt;li&gt;Register a new domain name! nicksphere.com. It&amp;rsquo;s a .com domain, more memorable and more meaningful than 0gitnick.xyz. 0gitnick.xyz will also work until it expires just to give readers time to bookmark the new domain.&lt;/li&gt;
&lt;li&gt;New Tor/I2P/Freenet links as well! The Tor v3 onion now contains &amp;ldquo;nick&amp;rdquo; instead of &amp;ldquo;0gitnick&amp;rdquo;. The I2P address is now &amp;ldquo;nicksphere.i2p&amp;rdquo;. The freenet link is now &amp;ldquo;/nicksphere&amp;rdquo; instead of &amp;ldquo;/0gitnick&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Gemfeed and web feed (Atom) are available with content summaries. Full content Atom feeds may be available again in the future, but don&amp;rsquo;t bank on it.&lt;/li&gt;
&lt;li&gt;Promoted content has returned! I added a disclaimer this time to make it clear what the promoted content is all about so that my previous reservations are lessened.&lt;/li&gt;
&lt;li&gt;I will no longer promote content with a post unless I have significant commentary to add. I don&amp;rsquo;t like posting others&amp;rsquo; content in my own posts because then if you already view their content then you see it twice. It just wasn&amp;rsquo;t a good way of organizing promoted content, so I&amp;rsquo;m done doing that. Here&amp;rsquo;s how it will work going forward: For content I want to promote, I will use the promoted page. For content I want to commentate on, I will make a post about it.&lt;/li&gt;
&lt;li&gt;All tags and separate feeds are gone. I don&amp;rsquo;t feel like the tagging system was very valuable. I often didn&amp;rsquo;t know what to tag my posts or whether to create a new tag for them or remove a tag. Now I don&amp;rsquo;t have to think about it. I can get on with just doing what I like which is writing posts. As for you readers of my blog, I have doubts that anyone much uses the tags anyway. Reading the title and summary probably does more to help readers make a judgment if they want to read that post than tags. I would&amp;rsquo;ve had to reimplement them in my content management system and it didn&amp;rsquo;t seem worth the work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Write configuration files for CI pipelines so the GitHub and GitLab site mirrors work again. Since I&amp;rsquo;m using a content management system I wrote myself, I also have to write the CI pipeline configuration for generating the site myself and I haven&amp;rsquo;t gotten to it yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ignore what site update 10 says about the repos. It only makes sense to have 1 repo to maintain content on Gemini and the Web. The repo nicksphere-www is deprecated. It will no longer be used at all. The canonical repo for my content is now nicksphere-gmi. It contains generator scripts for Gemini and the web as well. It still needs work such as the CI pipelines, but it&amp;rsquo;s close enough to use for my capsule and my site now.&lt;/p&gt;
&lt;p&gt;In post 10 I estimated it to take months to launch this Gemini capsule, but I&amp;rsquo;m clearly ahead of schedule. Also, I&amp;rsquo;ve learned there are existing content management systems for gemlogs that I could have used. They generate Atom feeds automatically, but I&amp;rsquo;ve already written my own that works well for my content, so I&amp;rsquo;ll just make changes to it if necessary instead of using someone else&amp;rsquo;s.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://nicholasjohnson.ch/2021/04/07/site-update-010/</id>
        <title type="html">Site Update 010</title>
        <updated>2021-04-07T00:00:00+0000</updated>
        <link href="https://nicholasjohnson.ch/2021/04/07/site-update-010/" />
        <content type="html">&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h1&gt;
&lt;p&gt;I did some more behind the scenes work on my site:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add Libreboot/osboot mirrors to the mirrors subdomain.&lt;/li&gt;
&lt;li&gt;Convert embedded videos to links. I don&amp;rsquo;t want my site to embed external resources, contacting other sites. All resources should be local.&lt;/li&gt;
&lt;li&gt;Add Freenet support. I want to support many platforms and supporting Freenet isn&amp;rsquo;t any inconvenience to me.&lt;/li&gt;
&lt;li&gt;Add license files in the site&amp;rsquo;s &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:5a3f52e6dbabb43b317b376da9b1f52451f811e4;origin=https://git.nicholasjohnson.ch/nicksphere-www&#34; rel=&#34;external noreferrer&#34;&gt;Git project&lt;/a&gt;. I did that to clarify the licensing of my writings for those looking at the Git repo.&lt;/li&gt;
&lt;li&gt;Prepend dates to content URIs (/YYYY/MM/DD/TITLE). This one is going to annoy RSS users because all my posts will reappear but I feel like it was worth it.&lt;/li&gt;
&lt;li&gt;Make About page more detailed.&lt;/li&gt;
&lt;li&gt;Change post licenses to CC-BY-SA 4.0. Previously they were under CC-BY-ND, but I don&amp;rsquo;t mind if others change my content and redistribute it. I don&amp;rsquo;t even care if they monetize it. I only care that I&amp;rsquo;m given credit for my work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;future-plans&#34;&gt;Future Plans&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Add &lt;a class=&#34;link link--external&#34; href=&#34;https://gemini.circumlunar.space/&#34; rel=&#34;external noreferrer&#34;&gt;Gemini&lt;/a&gt; support. I justified this in &lt;a class=&#34;link link--internal&#34; href=&#34;/2021/02/21/site-update-009/&#34; rel=&#34;noreferrer&#34;&gt;my last site update&lt;/a&gt;. I&amp;rsquo;ve converted my Hugo markdown files to Gemini and created a repo for the &lt;a class=&#34;link link--external&#34; href=&#34;https://archive.softwareheritage.org/swh:1:snp:fb9bef300f9b939382f5656232d95377c8630a10;origin=https://git.nicholasjohnson.ch/nicksphere-gmi&#34; rel=&#34;external noreferrer&#34;&gt;Gemini capsule&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have 2 options when it comes to Gemini:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Maintain 2 separate copies of my content. This adds significant overhead to updating the site and writing posts since I have to do everything twice.&lt;/li&gt;
&lt;li&gt;Maintain 1 copy of my content. It would have to be Gemini-first since HTML -&amp;gt; GMI is lossy, but GMI -&amp;gt; HTML is not. I&amp;rsquo;d have to write a custom CMS since I have too many posts to manually organize into tags and pages. I would also need the custom CMS to generate the Atom/RSS feeds for every tag. In the long run this would be simpler because I&amp;rsquo;d only have to maintain 1 copy of my content. Hugo would be scrapped.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Given my dislike of the modern web, I&amp;rsquo;m opting for option 2. My content will still be available on the web, only the site layout will change. The canonical repo will be 0gitnick.xyz-gmi and 0gitnick.xyz-www-v2 will be generated from 0gitnick.xyz-gmi using a custom CMS. The existing 0gitnick.xyz-www which is hugo based will be renamed to 0gitnick.xyz-www-v1. I will maintain it until 0gitnick.xyz-gmi and 0gitnick.xyz-www-v2 are ready, which I estimate to take at least a few months.&lt;/p&gt;
</content>
    </entry>
</feed>
