The concept of weeknotes is still odd to me, but they seem to be a thing that people do, so I’ll give it a go

Move to Linux Desktop

So, I’ve decided to drop Mac for my personal laptop. It’s not that there were any real problems with MacOS, but really I just needed a more powerful laptop.

I’ve gone for a ThinkPad T495. It was decently priced on Black Friday, has a Ryzen 5 CPU, 16GB RAM, 512GB NVME storage. So, it’s fine.

After a bit of messing around with different Linux Desktop environments (Budgie -> GNOME -> KDE), I’ve settled on Kubuntu.

Desktop Linux is a bit of a different beast to server Linux, having not used it in a while, but I managed to get ZFS root w/ LUKS encryption working by following the great zfsonlinux guide.


Zfs is cool. Zfs allows me to split up the disk without making any upfront decisions about how big I need the partitions to be. Also, running zfs-auto-snapshot has already saved my ass a few times. It’s not quite Time Machine, but it serves some of the same purposes.

apt is a bit dumb sometimes

The issue with switching between Desktop Environments is that a bunch of dependencies get left over each time. autoremove sometimes works, but sometimes just leaves things behind, seemingly for no good reason.

apt stores the history of all commands in /var/log/apt/history.log, so with some bash-fu, you can generate an apt remove command from that file. This is what I’ve come up with:

grep -A3 'Start-Date: 2019-12-19  23:16:51' /var/log/apt/history.log \
  | tail -n 1 \
  | cut -c 10- \
  | sed 's/), /\n/g' \
  | cut -d':' -f1 \
  | xargs sudo apt remove --purge # --yes (Un-comment "--yes" to actually run the command)

This will remove and purge everything that was actually added in that specific apt run (as opposed to removing everything that was specified to be installed in the command). Anything that was already present will be left, all dependencies that were added, but not specifically installed will be removed.


  • GPG is a pain.
  • Bug Hunting is ridiculous at times. Gremlins are always present, and it’s entirely possible to spend 3 hours resolving one bug, when the problem you’re actually facing was some transient gpg-agent-related nonsense (maybe? it went away once we stopped looking for it.)
  • When tags on alpinelinux/aports are updated, there’s a lag before the docker image with that tag is built. This should be taken into account if you’re using this tag as a CI trigger. I may add a retry to the image build stage, so hopefully the build won’t break because of this again.