Looking Back at 2024

Bash Cooking Perl Personal — Published on .

Its a new year. Looking back at 2024, I noticed I didn’t really write much on my blog. I thought about what caused this lack of posts, and I found two big reasons.

The first is that I’ve simply spent less time doing tech stuff, as I’ve been quite busy in my personal life. I’ve finished more work on my home, making it a much nicer place to live in. But more important than that is a new relationship. We started living together last year, and I felt like I got more satisfaction spending time with her than I do on programming, thus programming fell a bit to the wayside.

Due to the relationship, I did do a lot of cooking. Delicious food is nice, but most of the value comes from sharing a good meal and seeing people enjoy it. As such, I did release a few more recipes to my cookbook, such as stew, oliebollen, pancakes, and a nice base for rice (though I’ve been told I may be using too much MSG). I hope I can continue to bring joy with my cooking in my personal life.

That said, its not like I haven’t done any tech projects in 2024. Which brings me to the second reason for the slow posting cadence. I felt like my more recent projects were either to small, or just not good enough to write about. Which is a little sad, since its fun to talk about personal projects in general. Besides, a mediocre project can turn out for the better thanks to input I get through blog posts I make about them. As such, I’ll try to push myself to write and actually publish more blog posts in 2025.

Actually, why not write about some of the smaller projects I worked on right now? Let’s start with the smallest one, a tiny Perl script used by another tiny shell script for use with git. Since I use semantic versioning in virtually all my projects, I can use a project’s CHANGELOG.md to generate an overview of all changes in a release tag, which is precisely what these two scripts accomplish. I can now simply update the CHANGELOG.md to have the right version number heading, and use git release to create the tag with the correct body.

In the last two months I’ve also played with the Go programming language a bit more. Since I have a good network connection at home, and a sizable file server, I tend to seed a lot of GNU+Linux ISOs with Transmission. I also run Grafana, so I thought it would be nice if I could make a dashboard out of this. I had tried a Transmission exporter in Python before, but it used an obscene amount of memory (300MiB) to retrieve the information from Transmission. So I redid it in Go as a nice learning project. This resulted in my very own transmission-exporter, which only uses 10MiB of memory right now.

Additionally, I created the fsdir-exporter, which can export data about files in a given directory. Specifically, it allows me to get a metric about the number of .iso and .img files in a directory. Using this, I can graph how many actual images I have. It may not be the prettiest Go code in the world, but I had fun writing it.

The last project I wanted to talk about shortly is bocs, which stands for “Bash documentation”. It is specifically intended for use with Bashtard, as I noticed I tend to forget updating the man pages after adding/changing/removing features. bocs allows me to write documentation blocks in comments, like many other languages allow. Having tried to abuse Doxygen for this first, I felt like I didn’t get the output I desired, so I set out to make something lightweight with minimal dependencies on my own. The source code may horrify some, but the concept worked. bocs can generate man pages of itself using bocs.bash bocs.bash. Its only dependencies right now are Bash, a POSIX-compatible environment, and lowdown. The intent is to document every function and variable used in Bashtard over time, but it is a lot of work. I did start on it a while ago, but its not done yet. I hope a release of Bashtard in the nearby future will see it complete.

Finally, as it is a new year, I’m also trying out Wayland once more. I will be using Hyprland again, as I haven’t seen any new compositors that come close for tiling, coming from the feature-rich tiling window manager AwesomeWM on X11. With some minor adjustments from the configuration I used last time, I was able to launch it and get some simple work done. Over the next few weeks I’ll be customizing things that I was missing last time. Perhaps this will make for a good blog post in February!