The Books of 2025

This year I read a surprising (to me) amount of books: 21 according to my notes, 6 more than last year. Here they are, listed chronologically in reading order. I’ll also list my favorite reads towards the end of the post.

This year I read a surprising (to me) amount of books: 21 according to my notes, 6 more than last year. Here they are, listed chronologically in reading order. I’ll also list my favorite reads towards the end of the post.

I’ve been putting my work online in various formats for almost 20 years now. For most of that time, I’ve used extremely permissive licenses such as the MIT License to distribute my work in an attempt to promote usage and adoption. Now that I’m quite a bit older and experienced (you may say curmudgeony), let me tell you why I’m changing my tune and am adopting a Copyleft approach.
In the past decade or so, I’ve noticed a widespread adoption of the MIT license, even by those who in the past opposed Open Source Software as a concept. Why the swing and why so extreme? You’d think that those companies would slowly adopt Open Source rather than going all-in all at once. What’s going on?

I’ve been keeping track of my notes and daily tasks using a single method for over a decade, and it works pretty well for me. Someone close to me asked me how I keep track of everything without losing track, so I figured I’d outline it here. The system is easy to use and relatively loose but with enough structure to be consistent.

A few updates for those folks who use any of my MkDocs plugins follow below.

I absolutely LOVE Foundry Virtual Tabletop (FoundryVTT). It is by far the best $50 I’ve spent on my tabletop role-playing hobby in years. I can gush about the software on and on, and perhaps I will in a future post. This post, however, focuses on something a bit more practical.
For years, I’ve hosted my instance on AWS, but with the change to their public IP address pricing, it doesn’t make sense to stay with them since DigitalOcean offers a beefier solution at a lower monthly cost.

I was recently invited to join Bluesky, a new social media platform. This was mostly motivated by the nightmare that Twitter has become over the past year or so. One of Bluesky’s nice features is the encouragement from the official team to build supplementary software. One way to do it is to build a custom feed. So, I set out to do just that: I built a feed that serves all posts related to TTRPGs on Bluesky. Here’s how I went about publishing mine on a DigitalOcean droplet using PM2, Nginx, and Let’s Encrypt.

If you’re on Linux and received the latest Steam patch that makes your UI scaling look overly large, here’s a quick workaround until Valve fixes the application (and given that you have a Steam desktop shortcut).
Open up the Steam desktop launcher shortcut (~/Desktop/steam.desktop) in your favorite text editor and find the line that starts with Exec=. You’ll want to change it to the following:
Exec=/usr/bin/steam -forcedesktopscaling 1.0%U
You can change the scaling factor to something other than 1.0, but that’s the value that worked for me without breaking the entire UI. The only downside is that you’ll have to launch Steam from this desktop shortcut until Valve fixes this.

I just can’t seem to stop myself from making more MkDocs plugins. This time, it’s a plugin that can help with editing by allowing you to edit your Markdown files straight from the browser:

The latest version, v0.4.0, of the mkdocs-categories-plugin is now available here or by running pip install mkdocs-categories-plugin. This new version fixes the sorting of categories containing numbers. This release is a minor quality-of-life update, but I can’t believe I didn’t notice this behavior before!
| v0.3.0 | v0.4.0 |
|---|---|
![]() |
![]() |

After using ChatGPT for a few months, I’m developing a sour taste for the whole generative AI thing. It’s not because it’s not good at what it does. Most of the time, it’s incredibly proficient. I’ve mainly used ChatGPT to bounce ideas off and to give me suggestions – riffing on concepts. It’s an excellent tool for those tasks, usually generating a decent output. It’s not because of that. I’m beginning to dislike generative AI because it makes you feel like you’ve had anything to do with the creative process.