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

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Retrospectives</title>
    <link>https://soap.coffee/~lthms/series/Retrospectives.html</link>
    <description>Articles in the series "Retrospectives"</description>
    <atom:link href="https://soap.coffee/~lthms/series/Retrospectives.xml" rel="self"
               type="application/rss+xml" />
    
    
    <item>
      <title>What happened in February 2026?</title>
      <link>https://soap.coffee/~lthms/posts/february-2026.html</link>
      <guid>https://soap.coffee/~lthms/posts/february-2026.html</guid>
      <pubDate>March 8, 2026</pubDate>
      <description>
        
        &lt;h1&gt;What happened in February 2026?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-sky&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/vibecoding.html&quot; class=&quot;tag hover-peach&quot; marked=&quot;&quot;&gt;vibecoding&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;Time flies. February was a productive month, and I got many things done—with
the help of my &lt;a href=&quot;https://github.com/letan-assistant&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;coding assistant&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, that is. I haven’t joined the “I
haven’t written a single line of code for quite some time” flock just yet, but
I am close. At the same time, I feel like I’m still locked in beginner mode.
Like I have still to &lt;em&gt;really&lt;/em&gt; tap into what agentic tools like Claude Code have
to offer.&lt;/p&gt;
&lt;p&gt;For now, the tools may have changed, but the journeys feel somewhat the same as
they used to a few months back. It’s a strange feeling, and I am still trying
to wrap my head around it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Yet Another Claude Code Wrapper&lt;/h2&gt;
&lt;p&gt;In my previous retrospective, I mentioned CeCe and Vee. The former is a plugin
for turning Anthropic’s model into a “modal” agent that I had vibe “prompted”
with Claude itself. The latter was a second take at the exact same concept.&lt;/p&gt;
&lt;p&gt;A month later, Vee has evolved quite a bit, to a point where the “modal”
aspect of the project lost the front seat. More precisely, Vee has become a
session multiplexer for Claude Code, with built-in support for spawning it in
ephemeral containers with &lt;code class=&quot;hljs&quot;&gt;--dangerously-skip-permissions&lt;/code&gt; enabled. It is also
a playground for me to experiment with the agent. For instance, I built a
feedback system where I can point it to the good and bad things it’s doing—my
feedbacks get saved in a SQLite database and appended in the system prompt
during the next sessions. I’ve also tried to set up a knowledge base with
embeddings. Both approaches have their benefits, but I don’t think I have clear
evidence that they can be a game changer.&lt;/p&gt;
&lt;p&gt;You may remember Vee started out of my frustration to losing control of CeCe’s
internals. Well, Claude Code took over Vee’s codebase quite quickly as well.
But this time, the output was a lot more satisfying. This time, I leaned into
playing the role of a Tech Lead and a QA tester. Seeing the project taking
shape and the tool I wanted becoming a reality that quickly has clear upsides.
I also find it interesting that I have both a fairly good understanding of how
the software works overall—I called most of the architectural choices—&lt;em&gt;and&lt;/em&gt;
very little insight on how the code itself is written. It reminds me of
&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;, where I am involved in some projects without being a direct IC.&lt;/p&gt;
&lt;h2&gt;I Built Myself a Cloudlab&lt;/h2&gt;
&lt;p&gt;In the first half of the month, a colleague of mine was tasked with building
“staging environments &lt;em&gt;à la demande&lt;/em&gt;” for the engineers working on
&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;’s Next Big Thing™. Their answer was a managed Kubernetes cluster
and a bunch of Helm charts—and a small CLI tool to deploy the latter onto the
former. A few hours later, I started building myself a &lt;a href=&quot;https://k3s.io&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;k3s&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; cluster. &lt;em&gt;It’ll be
a fun way to get familiar with the stack,&lt;/em&gt; I thought. What emerged almost
resembles a managed cluster of sorts. I called it &lt;a href=&quot;https://github.com/lthms/elsa&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;elsa&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, and it now
hosts &lt;a href=&quot;https://github.com/lthms/cloud-lab&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;this very website along with a few other self-hosted services I had
under my radar for a while&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot;&gt;&lt;p class=&quot;markdown-alert-title&quot;&gt;&lt;svg class=&quot;octicon octicon-info mr-2&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;Note&lt;/p&gt;&lt;p&gt;Yes, GitHub Pages and the like remain a better, cheaper, superior even way to
host my website. But where is the fun in that? 😁&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This may come as a surprise, considering &lt;a href=&quot;/~lthms/posts/i-cannot-ssh-into-my-server-anymore.html&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;I had migrated my website to a new
setup called &lt;code class=&quot;hljs&quot;&gt;tinkerbell&lt;/code&gt;&lt;/a&gt; barely &lt;em&gt;a month ago&lt;/em&gt;. Well, fret not. The
little VPS sure has been retired early, but its legacy has not been lost.
&lt;code class=&quot;hljs&quot;&gt;elsa&lt;/code&gt; was built upon the very same tools (Terraform, CoreOS, and Ignition) and
promise I got hooked on a month ago: that there is freedom in designing a
system whose &lt;em&gt;destruction&lt;/em&gt; is a non-event. If anything, working on &lt;code class=&quot;hljs&quot;&gt;elsa&lt;/code&gt; has
only &lt;em&gt;deepened&lt;/em&gt; my understanding—and my appreciation—of what Fedora has been
pushing for with CoreOS.&lt;/p&gt;
&lt;p&gt;I really, &lt;em&gt;really&lt;/em&gt; want to publish an article about &lt;code class=&quot;hljs&quot;&gt;elsa&lt;/code&gt;. I yet have to find
my angle, though. Funny story, the first couple of paragraphs of this section
were initially intended to be its introduction, until I grew dissatisfied with
them and decided to repurpose them. Which means I need to restart from scratch.
😆&lt;/p&gt;
&lt;p&gt;Anyway, as I was making good progress on &lt;code class=&quot;hljs&quot;&gt;elsa&lt;/code&gt;, I ran into some good
opportunities to contribute to some open source software. I opened two bugfix
PRs over the course of my journey: one for the &lt;a href=&quot;https://github.com/BetterStackHQ/terraform-provider-better-uptime/pull/178&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;official BetterStack’s
Terraform provider&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, and the other for &lt;a href=&quot;https://github.com/vultr/external-dns-vultr-webhook/pull/10&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;external-dns’ Vultr webhook
sidecar&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. That was pretty cool! I want to do that more often.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;We are almost a third into March already, and the month is clearly following
the trend set by its predecessor. As such, I expect to have plenty to write
about in a month’s time, meaning I should be able to keep up with publishing
these retrospective pieces for a while. At least, I hope so!&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What Happened in January 2026?</title>
      <link>https://soap.coffee/~lthms/posts/january-2026.html</link>
      <guid>https://soap.coffee/~lthms/posts/january-2026.html</guid>
      <pubDate>January 30, 2026</pubDate>
      <description>
        
        &lt;h1&gt;What Happened in January 2026?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-sky&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/vibecoding.html&quot; class=&quot;tag hover-lavender&quot; marked=&quot;&quot;&gt;vibecoding&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;This is my first retrospective in quite a while—I have yet to make writing
these logs a real habit of mine. That being the case, so much happened this
month that this article felt like the obvious thing to do.&lt;/p&gt;
&lt;h2&gt;&lt;code class=&quot;hljs&quot;&gt;tinkerbell&lt;/code&gt;’s First Month&lt;/h2&gt;
&lt;p&gt;On January 5th, I published &lt;a href=&quot;/~lthms/posts/i-cannot-ssh-into-my-server-anymore.html&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;my account of migrating my website to a completely
new setup&lt;/a&gt;. Not only am I very
proud of this article in and of itself, I am also quite happy that it has
sparked discussions in a few places such as &lt;a href=&quot;https://lobste.rs/s/e7lpyy/i_cannot_ssh_into_my_server_anymore_s_fine&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;lobste.rs&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; or the &lt;a href=&quot;https://news.ycombinator.com/item?id=46524390&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;orange
website&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. It has also been shared in other places like the &lt;a href=&quot;https://buttondown.com/devopsish/archive/devopsish-293/&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;DevOps’ish
newsletter&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;label for=&quot;fn1&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn1&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;I have also created a &lt;a href=&quot;https://github.com/lthms/tinkerbell&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;GitHub repository&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; to host &lt;code class=&quot;hljs&quot;&gt;tinkerbell&lt;/code&gt;
configuration, and it is quietly farming stars as we speak. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;I don’t write articles with the expectation that they reach a large audience,
but I will admit I had &lt;em&gt;some&lt;/em&gt; ambitions for this one. It’s very fulfilling to
know my experiment report of sorts has caught the attention of my peers, if
only a little.&lt;/p&gt;
&lt;p&gt;At first, I thought I would spend January experimenting with my new playground.
I have a handful of services I want to deploy. Little did I know I would be
sidetracked sharply before I had a chance to get to it.&lt;/p&gt;
&lt;h2&gt;Meeting with Claude Code&lt;/h2&gt;
&lt;p&gt;Somehow, I have managed to go through 2025 while staying afar from the code
agent hype. I gave “vibecoding” a try in May by &lt;a href=&quot;/~lthms/posts/PeerProgrammingWithLLMs.html&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;chatting with ChatGPT and
Gemini while yak shaving my way towards transcribing YouTube videos in
OCaml&lt;/a&gt;. Even I realized back then that the hype had already moved on from
chat UI towards agents.&lt;/p&gt;
&lt;p&gt;Then, the craziest thing happened. I went on holidays on December 23rd, 2025. Two
weeks later, as I was going back to &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;, Claude Code and its ilk
suddenly felt inevitable. It looks like agentic workflows got very good in a
matter of a few weeks, up to a point where there is a real opportunity cost in
ignoring them altogether. And as I am about to take out a mortgage, it feels
like a bad time to take the risk of falling out of relevance.&lt;/p&gt;
&lt;p&gt;Looking back, I think it started with a simple, genuine suggestion—we were
discussing a fairly ambitious clean-up of our test-suite at &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt; when
someone mentioned Claude Code was quite relevant for this kind of tedious,
boilerplate-heavy task. This resonated with all the success stories I was
suddenly exposed to. Before I could realize what was happening, I was caught up
in &lt;a href=&quot;/~lthms/posts/how-i-want-to-use-llms-in-2026.html&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;an intense introspective journey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Part of my answer to the angst of LLMs being on the verge of reshaping the way
I work is &lt;a href=&quot;https://lthms.github.io/cece/&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;CeCe&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;label for=&quot;fn2&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn2&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;CeCe being a nickname for Claude Code (CC). &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;CeCe is a Claude Code plugin &lt;s&gt;I have been working&lt;/s&gt; Claude Code and I have
been working on for the better part of the month, and it has become my sandbox
to experiment with and understand agentic workflows. Configuring Claude Code in
a very opinionated way felt only natural—that’s the only starting point I know.
I am glad I did that, it enabled me to get a better understanding of how Claude
Code actually works.&lt;/p&gt;
&lt;p&gt;Ironically, since CeCe has mostly been written by CeCe itself and because it
grew quite fast as a result, I do not really feel confident in modifying it
myself 😆. I am now trying to &lt;a href=&quot;https://github.com/lthms/vee&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;rewrite it&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; on my
own, with more structure and “intention.” We will see how it goes.&lt;/p&gt;
&lt;h2&gt;New RSS Feeds&lt;/h2&gt;
&lt;p&gt;On a final note, I am glad to say that this website now features some new RSS
feeds that you may be interested in&lt;label for=&quot;fn3&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn3&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;That’s actually the very first task I entrusted to Claude Code.
Suffice it to say, it didn&apos;t blink, and navigated through my quite unusual
setup like a champ. &lt;/span&gt;
&lt;/span&gt;: one per &lt;a href=&quot;/~lthms/tags&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;tags&lt;/a&gt;, and one per
&lt;a href=&quot;/~lthms/series&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;series&lt;/a&gt;. I have been meaning to implement them since I’ve added my website to
a certain aggregator that now advertises every article I publish that cites one
particular programming language.&lt;/p&gt;
&lt;p&gt;I am glad to know that camel aficionados learnt about my &lt;code class=&quot;hljs&quot;&gt;tinkerbell&lt;/code&gt; setup
simply because I drew a parallel between infrastructure as code and functional
programming. Maybe they don’t share my enthusiasm, though. With this change, I
am one PR away from limiting this aggregator’s scope to simply the articles
featuring the appropriate tag. I think they will find it useful. Maybe you will
too!&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What Happened in 2024?</title>
      <link>https://soap.coffee/~lthms/posts/December2024.html</link>
      <guid>https://soap.coffee/~lthms/posts/December2024.html</guid>
      <pubDate>January 1, 2025</pubDate>
      <description>
        
        &lt;h1&gt;What Happened in 2024?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-periwinkle&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;We are done with 2024, and now is a good time to reflect on what has happened
over the past 12 months. I was not planning to, but &lt;a href=&quot;https://www.paulox.net/2024/12/31/my-2024-in-review/&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;my feed convinced me to
give it a try&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. Plus, it is a good opportunity to revive my
“&lt;a href=&quot;series/Retrospectives.html&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;Retrospective&lt;/a&gt;” series.&lt;/p&gt;
&lt;h2&gt;Free and Open Source Software&lt;/h2&gt;
&lt;p&gt;I’ve been a “prolific contributor” at &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;, but less so with my
personal projects.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lthms/spatial-shell&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;Spatial Shell&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; remains my most “popular” project&lt;label for=&quot;fn1&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn1&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;We should reach 100 stars on GitHub in 2025 😅. &lt;/span&gt;
&lt;/span&gt;, but
except for a very minor 7th release in January, I have not touched it. It’s
basically a done project, and I very much enjoy using it on a daily basis. My
main regret is that, contrary to what is stated in its README, Spatial Shell
does not work &lt;em&gt;at all&lt;/em&gt; with i3.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lthms/ezjsonm-encoding&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;ezjsonm-encoding&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; was initially written for Spatial Shell, but I
turned it into its own OCaml package in 2024. It is a JSON-only encoding
library heavily borrowing on &lt;a href=&quot;https://ocaml.org/p/data-encoding/latest&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Data-encoding API&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, but with a
more flexible default behavior for object parsing. I enjoyed writing the
documentation, inspired by a tweet from &lt;a href=&quot;https://bsky.app/profile/chshersh.com&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;Dmitrii Kovanikov&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#bsky&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;label for=&quot;fn2&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn2&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;Yes, cool kids moved to Bluesky in 2024, and Dmitrii is definitely a
cool kid. &lt;/span&gt;
&lt;/span&gt;.
That being said, I have never bothered to benchmark this package properly, so
if performances are important, it may not be a good fit for you.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lthms/jsonrpc2&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;jsonrpc2&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; is, as of January 1st, 2025, an experiment in
providing a general-purpose framework for servers and clients communicating
with the &lt;a href=&quot;https://www.jsonrpc.org/specification&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;JSON RPC 2.0&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; protocol. I quite like the API I’m proposing there,
and maybe I’ll try to polish and publish it in 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lthms/bepo-tsrn.nvim&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;bepo-tsrn.nvim&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; is another thing I have done for myself, but
published as if it was a public good. Now, instead of having to copy/paste
the same Neovim configuration file on every computer I use, I can just type
&lt;code class=&quot;hljs&quot;&gt;yay -S neovim-bepo-tsrn-git&lt;/code&gt; and be done with it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/lthms/celtchar&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;celtchar&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; has seen its first commits since 2021, which is not nothing. As a
reminder, celtchar is a little tool I have written to generate ebooks and
static websites for the stories I write; and as I was doing the 2024 edition
of &lt;a href=&quot;https://nanowrimo.org&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;NaNoWriMo&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, I found myself in need to add a missing feature (supporting
books split in parts, not only chapters).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, I’ve been defaulting to OCaml for the past two years or so, and I am
starting to think it is time to widen my perspective again. I will probably
start with relearning Go&lt;label for=&quot;fn3&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn3&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;I don’t know why, but I have been mildly obsessed with this language
lately. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;h2&gt;Blog posts&lt;/h2&gt;
&lt;p&gt;2024 was not a very productive year when it comes to this website. I have
published 5 articles, which is half the number of publications of 2023. As a
logical consequence, not a lot of folks have visited my website this year.
Funnily enough, the &lt;a href=&quot;SpatialShell6.html&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;most read article&lt;/a&gt; (by far) in 2024 was published in
2023&lt;label for=&quot;fn4&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn4&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;To be fair, it was published on December 30, 2023. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;/~lthms/img/2024.png&quot;&gt;&lt;figcaption&gt;&lt;p&gt;Yes, 2024 was a quiet year for this website&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;That being said, I am quite happy with the content published in 2024.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;GitMaintenanceSshEncryptedKeys.html&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;Using &lt;code class=&quot;hljs&quot;&gt;git maintenance&lt;/code&gt; with Encrypted SSH Keys&lt;/a&gt; is the first article I
published in 2024. It is a direct consequence of my trip to Brussels in
February to attend to &lt;a href=&quot;https://archive.fosdem.org/2024/&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;FOSDEM&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. If you haven’t already, you should watch
&lt;a href=&quot;https://www.youtube.com/watch?v=aolI_Rz0ZqY&amp;amp;pp=ygUZc28geW91IHRoaW5rIHlvdSBrbm93IGdpdA%3D%3D&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;Scott Chacon’s talk&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#youtube&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; about Git less known commands; it is the only
reason why I learned about &lt;code class=&quot;hljs&quot;&gt;git maintenance&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;LUKSEncryptedVPS.html&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;Installing a LUKS-Encrypted Arch Linux on a Vultr VPS&lt;/a&gt; is mostly a
gift I have made to Future Me. It is a very specific how-to that I can use to
quickly set up a new server with disk encryption. Funny story, I was planning
to publish a follow-up about &lt;a href=&quot;https://github.com/lthms/nspawn&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;how I use systemd-nspawn to run my web services
in containers&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, but no matter how many times I tried, I’ve never
quite found a good way to tell this story. As I plan to educate myself on
Kubernetes in 2025, it is not clear I will ever publish it now.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;BepoNvim.html&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;Introducing &lt;code class=&quot;hljs&quot;&gt;bepo-tsrn.nvim&lt;/code&gt;&lt;/a&gt; is probably the less useful article I
have published in 2024, considering I expect the userbase to &lt;code class=&quot;hljs&quot;&gt;bepo-tsrn.nvim&lt;/code&gt;
to stick to 1 until the very end&lt;label for=&quot;fn5&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn5&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;But who knows? Maybe one of you will prove me wrong! &lt;/span&gt;
&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;VestigialStructures.html&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;On Vestigial Structures&lt;/a&gt; hardly qualifies as a blog post, and is
mostly a joke. It is also the only content on my website that was mostly
generated by ChatGPT, and it is flagged as such. I don’t like using AI to
&lt;em&gt;write&lt;/em&gt;, but I do appreciate having a reviewer always at hand.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;DreamWebsite.html&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Serving This Article from RAM for Fun and No Real Benefit&lt;/a&gt; was very
fun to write. This little experiment was stuck in my head for basically two
years, and it turned out basically exactly as I had pictured it. That being
said, I want to learn about CDNs now.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, I still enjoy having my own little corner of the Internet, but if there is
one thing I’d like to improve in 2025, it is its reach. I’d like you folks to
run into my website, instead of having to promote it every time I write
something. 2025, the year of SEO?&lt;/p&gt;
&lt;h2&gt;&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;2024 started with my decision to go back to a Software Engineering position,
after giving an honest try at being an Engineering Manager in late 2023.&lt;/p&gt;
&lt;p&gt;I want to remember 2024 for two things.&lt;/p&gt;
&lt;p&gt;This year, more than ever, I have tried to appreciate my work beyond my
individual contributions. I am confident in my programming skills (although I
have so much to learn), but being an accomplished engineer is much more than
contributing code. Making sure every engineer in the team can work to the best
of their current ability, fostering a work environment favoring growth and
initiative, estimating as precisely as possible the amount of time needed to
deliver the next important thing, collaborating efficiently with non-technical
teams... I am becoming increasingly interested in these areas.&lt;/p&gt;
&lt;p&gt;Besides, this year was all about delivering and deploying in production. It’s
been a &lt;a href=&quot;https://medium.com/etherlink/post-mortem-etherlink-mainnet-beta-public-endpoint-denial-of-service-cfcaf1a7bb77&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;wild ride&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, and I loved it even if it was very demanding. After having
mostly contributed to R&amp;amp;D projects, the focus on UX, backward compatibility,
etc. was very refreshing. I learned so much through the year, and had many
opportunities to make significant impacts.&lt;/p&gt;
&lt;p&gt;In 2025, I want to keep learning about software engineering, and maybe start
sharing my thoughts on the subject on my website.&lt;/p&gt;
&lt;h2&gt;Talks&lt;/h2&gt;
&lt;p&gt;I gave only one talk in 2024, at a conference called &lt;a href=&quot;https://ethcc.io/&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;EthCC&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. It was actually a
follow-up to the talk I gave the year before. You can watch me deliver the talk
&lt;a href=&quot;https://ethcc.io/archives/being-a-stage-2-rollup-from-day-1-etherlinks-journey&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;here&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, but if you are more into written content, I have also published
a &lt;a href=&quot;BeingStage2Rollup.html&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;transcript&lt;/a&gt; on this very website. I actually loved writing it down, and plan
to systematically publish similar content for every recorded talk I will give
in the future.&lt;/p&gt;
&lt;p&gt;I also had the opportunity to participate in a &lt;a href=&quot;https://x.com/etherlink/status/1852378990712930664&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;Twitter Space&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#twitter&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year, my public speaking opportunities were all &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;-related. I
would like to change this in the future, because there are enough events out
there for me to start speaking about something other than work&lt;label for=&quot;fn6&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn6&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;It’s too late to apply to FOSDEM, but maybe I can find something to
say to an event later in the year! I think. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;h2&gt;Sport&lt;/h2&gt;
&lt;p&gt;This year was a bit of a disappointment, sport-wise. I tried several times to
get back to running regularly, and failed miserably. I went to Lyon for a 10km
run without proper training, and skipped the half-marathon I signed up for. I
should update my &lt;a href=&quot;/~lthms/running.html&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;Running Log&lt;/a&gt; nonetheless. I started swimming
regularly during the Summer, only to pierce my earlobes in September 😅.&lt;/p&gt;
&lt;p&gt;Let’s hope I do better in 2025! I am planning to register for the &lt;a href=&quot;https://triathlondeauville.com/&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;Triathlon de
Deauville&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; with my sister. That promises to be fun! And I
want to commit to the &lt;a href=&quot;https://vredestein.20kmparis.com/&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;20km de Paris&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; as well.&lt;/p&gt;
&lt;p&gt;On the bright side, I have started to use my bike again. I love riding around
Paris, especially at night.&lt;/p&gt;
&lt;h2&gt;Final Notes&lt;/h2&gt;
&lt;p&gt;Overall, I’ve devoted a large part of my time to &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt; in 2024.
Hopefully, I will find a better balance over the course of 2025, which should
give me more time to explore and experiment more things.&lt;/p&gt;
&lt;p&gt;Anyway, happy new year everyone! And happy Dry January!&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What happened since December 2022?</title>
      <link>https://soap.coffee/~lthms/posts/May2023.html</link>
      <guid>https://soap.coffee/~lthms/posts/May2023.html</guid>
      <pubDate>May 18, 2023</pubDate>
      <description>
        
        &lt;h1&gt;What happened since December 2022?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/emacs.html&quot; class=&quot;tag hover-lavender&quot; marked=&quot;&quot;&gt;emacs&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-lemon&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/neovim.html&quot; class=&quot;tag hover-sky&quot; marked=&quot;&quot;&gt;neovim&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/releases.html&quot; class=&quot;tag hover-mint&quot; marked=&quot;&quot;&gt;releases&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/spatial-shell.html&quot; class=&quot;tag hover-sky&quot; marked=&quot;&quot;&gt;spatial-shell&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;Initially, I started this “What happened” series as an exercise to publish
more regularly on this website. Suffice to say, I haven’t done a particularly
impressive job in that regard, which only means I have a lot of room for
improvement.&lt;/p&gt;
&lt;p&gt;Anyway, if the first few months of 2023 has been mostly &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt; focus,
the same cannot be said for April and May. For one, I have started
&lt;a href=&quot;/~lthms/running.html&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;running&lt;/a&gt; again. But this is only the tip of the iceberg.&lt;/p&gt;
&lt;h2&gt;Spatial Shell got its first releases&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/lthms/spatial-shell&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;Spatial Shell&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; is probably my hobby
project I am most excited about. The &lt;a href=&quot;/~lthms/posts/CFTSpatialShell.html&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;“call for testers”
article&lt;/a&gt; I have published recently managed to
catch the attention of a few folks&lt;label for=&quot;fn1&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn1&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;You want to hear a lesson I learned the hard way just after publishing
it? Before calling for testers, it is better to &lt;a href=&quot;https://github.com/lthms/spatial-shell/issues/2#issuecomment-1527193430&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;be sure your project can
actually be compiled easily by the potential
volunteers&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. &lt;/span&gt;
&lt;/span&gt;. The perspective to publish such a
write-up was a very strong source of motivation for me to clean up a project I
was using daily for several months now, and I am very satisfied with the
result.&lt;/p&gt;
&lt;p&gt;Mass adoption is still a distant horizon, but still, the project is now
mainstream enough that it has already been mentioned in &lt;a href=&quot;https://discuss.ocaml.org/t/window-manager-xmonad-in-ocaml/12048/4&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;a random topic on the
OCaml discourse by someone who isn’t
me&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. 🎉&lt;/p&gt;
&lt;p&gt;This led me to formally release a first version of Spatial Shell in the end of
April, and a second today. For the first time, I have also published &lt;a href=&quot;https://aur.archlinux.org/packages/spatial-shell&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;an
Archlinux package&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, to make
the life of potential early adopters even easier. Do not hesitate to upvote it
so that it can find its way to the &lt;code class=&quot;hljs&quot;&gt;extra&lt;/code&gt; repository some day.&lt;/p&gt;
&lt;h2&gt;Goodbye Emacs! Remember me, Neovim?&lt;/h2&gt;
&lt;p&gt;In 2015, I started using Coq for my PhD thesis and at the time, there was no
real support for (Neo)vim&lt;label for=&quot;fn2&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn2&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;The situation later improved. Nowadays, you can implement your theories
using &lt;a href=&quot;https://github.com/whonore/Coqtail&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;Coqtail&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, and &lt;a href=&quot;https://github.com/ejgallego/coq-lsp&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Coq
LSP&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; will probably become a viable
and interesting setup in a near future. &lt;/span&gt;
&lt;/span&gt;. Everyone was using &lt;a href=&quot;https://proofgeneral.github.io/&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;Proof
General&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; and Emacs, so I was left with little
choice but to follow through. With only my courage and the &lt;a href=&quot;https://juanjoalvarez.net/posts/2014/vim-emacsevil-chaotic-migration-guide/&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;good advice of a
fellow “vimer” who had also made a similar
journey&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;,
I started using Emacs.&lt;/p&gt;
&lt;p&gt;Fast forward 8 years later, and my &lt;a href=&quot;https://src.soap.coffee/dotfiles/emacs.d&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;Emacs
configuration&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; has become a project
of its own. Overall, I was pretty happy with my setup, but in the same time, I
always remained a bit nostalgic of my Neovim days. This is probably why I
decided to give this old friend a try when my company bought me a new laptop. I
also used this as an opportunity to try out this LSP-thing everyone was talking
about.&lt;/p&gt;
&lt;p&gt;It has been a month now, and I do not plan to come back to my previous habits.
There are still some few edges here and there, I still need to get my head
around lua, but LSP is nice, and plugins like
&lt;a href=&quot;https://github.com/nvim-telescope/telescope.nvim&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;telescope&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; are simply too
beautiful.&lt;/p&gt;
&lt;p&gt;That being said, there was one aspect of moving from Emacs to Neovim I had not
anticipated: Org mode. Which constitutes a perfect transition to the next
session.&lt;/p&gt;
&lt;h2&gt;Website redesign, again&lt;/h2&gt;
&lt;p&gt;Did you notice this website has been revamping recently? The changes are
actually deeper than “just” a redesign, to a point where I had to port &lt;em&gt;all&lt;/em&gt; my
write-ups to a different markup language&lt;label for=&quot;fn3&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn3&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;Are you starting to understand why “Org mode” was the perfect
transition to move on to this section? &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Why, you ask? Well, it’s actually pretty simple: as time goes, I’ve grown
lazier.&lt;/p&gt;
&lt;p&gt;Let me give you some context. Until very recently, my website was built around
the idea to have literate programming as a first-class citizen of my author
tools. For instance, you can have a look at &lt;a href=&quot;/~lthms/posts/CleopatraV1.html&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;what used to be the literate
program which was responsible for generating the
website&lt;/a&gt;. Similarly, most of &lt;a href=&quot;/~lthms/tags/coq.html&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;my write-ups about
Coq&lt;/a&gt; were actually Coq documents. Literate programming is
actually a very nice paradigm for authoring technical contents, because it
gives you the tools to keep said contents accurate and up-to-date. In a
nutshell, you cannot have a typo in one of your code snippets which would
prevent it from compiling, because you actually
compile the snippet and catch the typo when you try to generate your website.
Or at least, it is what I used to do.&lt;/p&gt;
&lt;p&gt;I decided to stop because, for all its benefits, this approach has one major
drawback: it is hard to maintain. I had invested quite some time and efforts to
keep my website sources under control, but it really was an everyday fight.
There are some strange things which start happening when you fully commit to
this, as I think I did. For instance, software dependencies tie your article
together. Suddenly, you cannot talk about this new fancy feature of the latest
Coq release without upgrading &lt;em&gt;all&lt;/em&gt; your write-ups implemented as Coq
documents&lt;label for=&quot;fn4&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn4&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;Well, in theory you can. Just have each Coq document specifies the
Coq version it requires, and support this level of customization in your
build toolchain. But then, your blog takes forever to build from a cold
repository. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;That being said, most of the work had already been done. This website &lt;em&gt;was&lt;/em&gt; a
collection of literate programs, and I was pretty proud of the state of things.
I could deal with the annoyances&lt;label for=&quot;fn5&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn5&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;Like using Coqdoc syntax to write my articles, for instance. I could
write about how the Coqdoc syntax irks me for ages. &lt;/span&gt;
&lt;/span&gt;. But then, as I explained in the
previous section, I decided to move away from Emacs. The first time I tried to
start a new write-up, it hit me.&lt;/p&gt;
&lt;p&gt;I used to write most of my contents using Org mode. Org mode, also known as
&lt;em&gt;the&lt;/em&gt; Emacs markup language.&lt;/p&gt;
&lt;p&gt;I know of at least &lt;a href=&quot;https://github.com/nvim-orgmode/orgmode&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;one “Org plugin” for
Neovim&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, but instead of giving it a
try, I decided to use this opportunity to tackle my “maintenance problem” once
and for all. &lt;em&gt;I gave up on literate programming for this website.&lt;/em&gt; As a result,
this website is now generated from Markdown files only (using
&lt;a href=&quot;https://github.com/markdown-it/markdown-it&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;markdown-it&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; with many plugins).
As a consequence, the generated HTML is way more “predictable.” This was enough
to motivate me at giving a try at &lt;a href=&quot;https://soupault.app/reference-manual/#metadata-extraction-and-rendering&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;Soupault’s
indexes&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;,
which are way more powerful than I anticipated. Now, this website has&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tags. Each write-up can be labeled with as many tags as I want, there is &lt;a href=&quot;/~lthms/tags&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;a
page which lists all the tags used in the website&lt;/a&gt;, and each tag has
its own page (for instance, the &lt;a href=&quot;/~lthms/tags/coq.html&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;coq&lt;/code&gt; tag&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&quot;/~lthms/posts/index.xml&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;RSS feed&lt;/a&gt;. It was actually one of the main features I
really wanted to get with this revamp.&lt;/li&gt;
&lt;li&gt;Automatically generated list of articles in the &lt;a href=&quot;/~lthms/&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;home page&lt;/a&gt;, for each
series (see the &lt;a href=&quot;/~lthms/series/Ltac.html&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;Ltac series&lt;/a&gt; for instance). Before, I was
publishing “curated indexes,” or put in other words: I was writing these
indexes myself, by hand. And again, I’ve grown lazier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It took me a week to go through this rework. Translating manually every write-up
was tedious, to say the least, as was implementing the Lua plugins for Soupault
since I have neither proficiency nor tooling to help me write Lua code. But I
am very glad for the final result.&lt;/p&gt;
&lt;p&gt;Also, I have invested in an Antidote license, so hopefully, this website will
have fewer typos and English butchering as of now. A clean text, delivered with
a nice and simple design, from a sane and maintainable &lt;a href=&quot;https://src.soap.coffee/soap.coffee/lthms.git/&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;Git
repository&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What happened in October and November 2022?</title>
      <link>https://soap.coffee/~lthms/posts/November2022.html</link>
      <guid>https://soap.coffee/~lthms/posts/November2022.html</guid>
      <pubDate>November 19, 2022</pubDate>
      <description>
        
        &lt;h1&gt;What happened in October and November 2022?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/spatial-shell.html&quot; class=&quot;tag hover-periwinkle&quot; marked=&quot;&quot;&gt;spatial-shell&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/nanowrimo.html&quot; class=&quot;tag hover-peach&quot; marked=&quot;&quot;&gt;nanowrimo&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/coqffi.html&quot; class=&quot;tag hover-coral&quot; marked=&quot;&quot;&gt;coqffi&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;It is November 19 today, and I’m one month and 4 days late for the October
Retrospective! Truth is, &lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt; has been intense lately, to a point
where I have not made much progress on my side projects. Anyway.&lt;/p&gt;
&lt;p&gt;I have implemented the last feature I was really missing in my daily
use of Spatial Sway: moving windows to adjacent workspaces. As a
result, I think I can say that Spatial Sway has really reached the
“Minimum Viable Product” stage, with a convenient UX, and a nice
enough UI. It is still lacking when it comes to configurability,
though. It is the next item of my TODO list, but I have no idea when I
will implement the support for a configuration file.&lt;/p&gt;
&lt;p&gt;Another highlight of the past two months was the
&lt;a href=&quot;https://nanowrimo.org&quot; class=&quot;hover-sky&quot; marked=&quot;&quot;&gt;NaNoWriMo&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. I took the last week of October and the
first week of November off to plan and start writing a fiction project for it.
Writing again was really nice, and I even gave writing fiction in English a
shot. That made me uncover a bug in the English support of
&lt;a href=&quot;https://crates.io/crates/ogam&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;ogam&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, my markup language for fiction writers,
which led me to publish a fix on Crates.io. However, as soon as I came back to
&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;, my writing spree ended. That’s okay, though. It gave me plenty
of ideas for future sessions. Thanks, NaNoWriMo! Sorry to quit so soon, and see
you next year, maybe.&lt;/p&gt;
&lt;p&gt;Finally, a nice surprise of the past month is that &lt;a href=&quot;https://github.com/ocaml/dune/pull/6489&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;someone has started working
on adding proper support for &lt;code class=&quot;hljs&quot;&gt;coqffi&lt;/code&gt; to
&lt;code class=&quot;hljs&quot;&gt;dune&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, the build system for OCaml
and Coq! I’m thrilled by this. Thanks,
&lt;a href=&quot;https://github.com/Alizter&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;&lt;strong&gt;@Alizter&lt;/strong&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This wraps up this retrospective. I hope I will have more interesting,
concrete news to share next month.&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What happened in September 2022?</title>
      <link>https://soap.coffee/~lthms/posts/September2022.html</link>
      <guid>https://soap.coffee/~lthms/posts/September2022.html</guid>
      <pubDate>September 18, 2022</pubDate>
      <description>
        
        &lt;h1&gt;What happened in September 2022?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/spatial-shell.html&quot; class=&quot;tag hover-peach&quot; marked=&quot;&quot;&gt;spatial-shell&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-lemon&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;It is September 18 today, and it has already been a month since I
decided to start these retrospectives. This means it is time to take a
step back and reflect of what happened these past few thirty days or
so&lt;label for=&quot;fn1&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn1&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;There is the shocking news that I have started to use syntax
highlighting again. But let’s not linger too much into it just yet. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;h2&gt;Spatial Sway&lt;/h2&gt;
&lt;p&gt;A few days after publishing my August Retrospective, I have learned
the existence of &lt;a href=&quot;https://material-shell.com&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Material Shell&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, an extension for
GNOME 3 that provides a very interesting user experience.&lt;/p&gt;
&lt;p&gt;I tried it for a few hours, but the thing kept crashing (it’s
probably on me, I did not even remember I had Gnome installed on my
machine, and I would not be surprised the culprit was my dusty setup
rather than Material Shell itself). The experience remained very
promising, though. Their “spatial model” especially felt like a very
good fit for me. Basically, the main idea is that you have a grid of
windows, with your workspaces acting as the rows. You can navigate
horizontally (from one workspace to another), or horizontally, and
you choose how many windows you want to see at once on your screen.&lt;/p&gt;
&lt;p&gt;And so for a few hours, I was a bit frustrated by the situation…
until I learned about how one can actually manage and extend Sway
(the Wayland compositor I use for several years now) thanks to its IPC
protocol.  I spend like three days experimenting, first in Rust, then in
OCaml&lt;label for=&quot;fn2&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn2&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;This was actually an interesting thought process. I am using OCaml at
&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt; for about more than a year now.&lt;/span&gt;
&lt;span class=&quot;footnote-p&quot;&gt;I have curated a setup that works pretty well, and I am familiar with the
development tools. On the contrary, I had not written a line of Rust for at
least a year, my Emacs configuration for this language was broken, and I
had lost all my fluency in this language. Still, I was not expecting to
pick OCaml when I started this project. &lt;/span&gt;
&lt;/span&gt;, and by the end of the week, I had a first working prototype I
called &lt;a href=&quot;https://github.com/lthms/spatial-shell&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;Spatial Sway&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. It works pretty
well; well enough that I am using it daily for several weeks now. It feels
clunky at times, but it works well, and I have been able to write a
&lt;a href=&quot;https://github.com/Alexays/Waybar&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Waybar&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; configuration heavily inspired on
Material Shell UI.&lt;/p&gt;
&lt;p&gt;Overall, I am pretty satisfied with this turnout. Writing a hobbyist
software project is always nice, but the ones you can integrate in
your daily workflow are the best one. The last time I did that was
&lt;a href=&quot;https://sr.ht/~lthms/keyrd&quot; class=&quot;hover-lavender&quot; marked=&quot;&quot;&gt;&lt;strong&gt;keyrd&lt;/strong&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;, my little keystrokes counting
daemon&lt;label for=&quot;fn3&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn3&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;19,970,965 since I started using it at the time of writing this
article &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, lots remains to be said about Spatial Sway, but I might save
it for a bit later. I still have some key features to implement
(notably, moving a window to another workspace), then I will
probably try to advertise it a bit. I am under the impression this
project could be of interest for others, and I would love to see it
used by folks willing to give a Material Shell-like experience a
try, without having to deal with Gnome Shell. By the way,
considering Sway is a drop-in replacement for i3, and that it
implements the exact same IPC protocol, there is no reason why
Spatial Sway is actually Sway specific, and I will rename it Spatial
Shell at some point.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;/~lthms/img/spatial-sway-preview.png&quot;&gt;&lt;figcaption&gt;&lt;p&gt;Mandatory screenshot of Spatial Sway.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;This Website&lt;/h2&gt;
&lt;p&gt;On a side note, I have started to refine the layout of this website
a bit. Similarly, I have written a new, curated home page where I
want to highlight the most recent things I have published on the
Internet.&lt;/p&gt;
&lt;p&gt;I have been experimenting with
&lt;a href=&quot;https://github.com/cpitclaudel/alectryon/&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Alectryon&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; as a way to replace
&lt;code class=&quot;hljs&quot;&gt;coqdoc&lt;/code&gt;, to improve the readability of my Coq-related articles. Unfortunately,
it looks like this tool is missing &lt;a href=&quot;https://github.com/cpitclaudel/alectryon/issues/86&quot; class=&quot;hover-lemon&quot; marked=&quot;&quot;&gt;a key feature I
need&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. I might try to get
my hand dirty and implement it myself if I find the time and the motivation
in the following weeks.&lt;/p&gt;
&lt;p&gt;Finally, reading about how &lt;a href=&quot;https://xeiaso.net/talks/how-my-website-works&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;Xe Iaso’s talk about how she generates her
blog&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; was very inspiring to me.
I can only suggest that you have a look.&lt;/p&gt;
&lt;p&gt;Though not to the same extent, I also think I have spent way too much effort in
my website. Most of my Coq-related articles are actual Coq program, expect the
articles about &lt;code class=&quot;hljs&quot;&gt;coqffi&lt;/code&gt; which are Org mode literate programs. Hell, this website
itself used to be a literate program of the sort, until I stopped using my
homegrown literate programming toolchain &lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt; last month. At some
point, I have even spent a bit of time to ensure most of the pages of this
website were granted a 100/100 on websites like PageSpeed Insight&lt;label for=&quot;fn4&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn4&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-left sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;Good news, I’ve just checked, and it still is! &lt;/span&gt;
&lt;/span&gt;. I
had almost forgotten.&lt;/p&gt;
&lt;p&gt;A lot remains to be done, but watching this talk made me reflect on
the job done. And opened my eyes to a new perspective, too. We will
see what translates into reality.&lt;/p&gt;
        
      </description>
    </item>
    
    
    
    <item>
      <title>What happened in August 2022?</title>
      <link>https://soap.coffee/~lthms/posts/August2022.html</link>
      <guid>https://soap.coffee/~lthms/posts/August2022.html</guid>
      <pubDate>August 15, 2022</pubDate>
      <description>
        
        &lt;h1&gt;What happened in August 2022?&lt;/h1&gt;&lt;div id=&quot;tags-list&quot;&gt;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/emacs.html&quot; class=&quot;tag hover-mint&quot; marked=&quot;&quot;&gt;emacs&lt;/a&gt; &lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#tag&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;/~lthms/tags/meta.html&quot; class=&quot;tag hover-lemon&quot; marked=&quot;&quot;&gt;meta&lt;/a&gt; &lt;/div&gt;
&lt;p&gt;Without further ado, let’s take a look at what was achieved
for the last thirty days or so.&lt;/p&gt;
&lt;h2&gt;Emacs&lt;/h2&gt;
&lt;p&gt;I have started tweaking and improving my Emacs
&lt;a href=&quot;https://src.soap.coffee/dotfiles/emacs.d.git&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;configuration&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;
again&lt;label for=&quot;fn1&quot; class=&quot;sidenote-number margin-toggle&quot;&gt;&lt;/label&gt;&lt;input id=&quot;fn1&quot; type=&quot;checkbox&quot; class=&quot;margin-toggle&quot;&gt;&lt;span class=&quot;note-right sidenote note&quot;&gt;&lt;span class=&quot;footnote-p&quot;&gt;After having used Emacs for seven years now, I am nowhere close
to consider my configuration as a done project. I really envy developers
who are using their editor with little to no customization. &lt;/span&gt;
&lt;/span&gt;.&lt;/p&gt;
&lt;h3&gt;Theme Selection Menu&lt;/h3&gt;
&lt;p&gt;The change I am the most excited about is that I have &lt;em&gt;finally&lt;/em&gt; reduced the
boilerplate in need to write to use a new theme. I am very indecisive when
it comes to theming. I like to have my choices, and I get tired of any
color scheme pretty quickly. As a consequence, I introduced a customizable
variable to let me select a theme dynamically, and have this choice persist
across Emacs session.&lt;/p&gt;
&lt;p&gt;I have a Hydra menu that allows me to select which theme I want to
use for the time being. It looks like this.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;/~lthms/img/select-theme.png&quot;&gt;&lt;figcaption&gt;&lt;p&gt;A Hydra menu for selecting a theme.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;But adding new entries to this menu was very cumbersome, and mostly
boilerplate that I know a good macro could abstract away. And I can
finally report that I was right all along. I have my macros now,
and they allow me to have the Hydra menu above generated with these
simple lines of code.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;hljs language-lisp&quot;&gt;(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; ancientless &lt;span class=&quot;hljs-string&quot;&gt;&quot;a&quot;&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:straight&lt;/span&gt; &lt;span class=&quot;hljs-literal&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:load-path&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;~/.emacs.d/lisp&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; darkless &lt;span class=&quot;hljs-string&quot;&gt;&quot;d&quot;&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:straight&lt;/span&gt; &lt;span class=&quot;hljs-literal&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:load-path&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;~/.emacs.d/lisp&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; brightless &lt;span class=&quot;hljs-string&quot;&gt;&quot;b&quot;&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:straight&lt;/span&gt; &lt;span class=&quot;hljs-literal&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;hljs-symbol&quot;&gt;:load-path&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;~/.emacs.d/lisp&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; monotropic &lt;span class=&quot;hljs-string&quot;&gt;&quot;m&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; monokai &lt;span class=&quot;hljs-string&quot;&gt;&quot;M&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; nothing &lt;span class=&quot;hljs-string&quot;&gt;&quot;n&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; eink &lt;span class=&quot;hljs-string&quot;&gt;&quot;e&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; dracula &lt;span class=&quot;hljs-string&quot;&gt;&quot;D&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-theme&lt;/span&gt; chocolate &lt;span class=&quot;hljs-string&quot;&gt;&quot;c&quot;&lt;/span&gt;)
(&lt;span class=&quot;hljs-name&quot;&gt;use-themes-from&lt;/span&gt; tao-theme
                 &apos;((&lt;span class=&quot;hljs-string&quot;&gt;&quot;tl&quot;&lt;/span&gt; . tao-yang)
                   (&lt;span class=&quot;hljs-string&quot;&gt;&quot;td&quot;&lt;/span&gt; . tao-yin)))
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Eldoc and Flycheck Popups&lt;/h3&gt;
&lt;p&gt;I have been experimenting with several combinations of packages to
have Eldoc and Flycheck using pop-up-like mechanisms to report
things to me, instead of the echo area.&lt;/p&gt;
&lt;p&gt;The winning setup for now is the one that uses the &lt;a href=&quot;https://github.com/cpitclaudel/quick-peek&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;quick-peek&lt;/code&gt;
package&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. That is,
&lt;a href=&quot;https://github.com/flycheck/flycheck-inline&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;flycheck-inline&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; (customized to
use &lt;code class=&quot;hljs&quot;&gt;quick-peek&lt;/code&gt;, as suggested in their README), and
&lt;a href=&quot;https://melpa.org/#/eldoc-overlay&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;eldoc-overlay&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. This works well enough,
so the pop-ups of eldoc are maybe a bit too distracting.&lt;/p&gt;
&lt;p&gt;#&lt;a href=&quot;/~lthms/img/flycheck-inline.png&quot; class=&quot;hover-coral&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;flycheck-inline&lt;/code&gt; in action with an OCaml compilation error.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In my quest for pop-ups, I ran into several issues with the packages I tried
out. For instance, &lt;a href=&quot;https://github.com/casouri/eldoc-box&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;eldoc-box&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; was very
nice, but also very slow for some reason. It turns out there was an issue
about that slowness, wherein the culprit was identified. This allowed me to
&lt;a href=&quot;https://github.com/casouri/eldoc-box/pull/48&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;submit a pull request that got merged rather
quickly&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Similarly, after a packages update, I discovered
&lt;a href=&quot;https://github.com/flycheck/flycheck-ocaml&quot; class=&quot;hover-mint&quot; marked=&quot;&quot;&gt;&lt;code class=&quot;hljs&quot;&gt;flycheck-ocaml&lt;/code&gt;&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; was no longer
working, and &lt;a href=&quot;https://github.com/flycheck/flycheck-ocaml/pull/14&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;submit a patch to fix the
issue&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#github&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;This Website&lt;/h2&gt;
&lt;p&gt;I have not been investing a lot of time in this website for the past
six years or so. This month, things change a bit on that side too.&lt;/p&gt;
&lt;h3&gt;New Contents&lt;/h3&gt;
&lt;p&gt;First, I have published a (short) article on &lt;a href=&quot;/~lthms/posts/RankNTypesInOCaml.html&quot; class=&quot;hover-peach&quot; marked=&quot;&quot;&gt;higher-order
polymorphism in OCaml&lt;/a&gt;. The goal was for me to
log somewhere the solution for an odd problem I was confronted to at
&lt;code class=&quot;hljs language-bash&quot;&gt;&lt;span class=&quot;hljs-variable&quot;&gt;$WORK&lt;/span&gt;&lt;/code&gt;, but the resulting article was not doing a great job as
conveying this. In particular, two comments on Reddit motivated me to rework
it, and I am glad I did. I hope you enjoy the retake.&lt;/p&gt;
&lt;p&gt;Once this was out of the way, I decided that generating this website was taking
way too much time for no good enough reason. The culprit was &lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt;, a
toolchain I had developed in 2020 to integrate the build process of this
website as additional contents that I thought might interest people. The sad
things were: &lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt; was adding a significant overhead, and I never take
the time to actually document them properly.&lt;/p&gt;
&lt;h3&gt;Under the Hood&lt;/h3&gt;
&lt;p&gt;Overall, the cost of using &lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt; was not worth the burden, and so I
got rid of it. Fortunately, it was not very difficult, since the job of
&lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt; was to extracting the generation processes from org files; I
just add to implement a small &lt;code class=&quot;hljs&quot;&gt;makefile&lt;/code&gt; to make use of these files, without
having to rely on &lt;strong&gt;&lt;code class=&quot;hljs&quot;&gt;cleopatra&lt;/code&gt;&lt;/strong&gt; anymore.&lt;/p&gt;
&lt;p&gt;This was something I was pondering to do for a long time, and as
often in these circumstances, this gave me the extra motivation I
needed to tackle other ideas I had in mind for this website. This
is why now, rather than starting one Emacs process per Org file I
have to process, my build toolchain starts one Emacs server, and
later uses &lt;code class=&quot;hljs&quot;&gt;emacsclient&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, most of the build time is spent by &lt;a href=&quot;https://soupault.app&quot; class=&quot;hover-periwinkle&quot; marked=&quot;&quot;&gt;soupault&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;. I guess
I will have to spend some time on the Lua plugins I have developed for it at
some point.&lt;/p&gt;
&lt;h2&gt;A New Mailing List&lt;/h2&gt;
&lt;p&gt;Finally, I have created &lt;a href=&quot;https://lists.sr.ht/~lthms/public-inbox&quot; class=&quot;hover-rose&quot; marked=&quot;&quot;&gt;a public
mailing&amp;nbsp;&lt;span class=&quot;icon&quot;&gt;&lt;svg&gt;&lt;use href=&quot;/~lthms/img/icons.svg#external-link&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt; list that is available if you
want to start a discussion on one of my articles. Don’t hesitate to use it, or
to register to it!&lt;/p&gt;
        
      </description>
    </item>
    
    
  </channel>
</rss>
