Music updates

March 5, 2026

music

Made a few minor adjustments to my setup after getting off the streaming services (archived post).

First, I reindexed/retagged some of my older music with beets (a lovely little Python package). Over the years I'd used a number of different (mostly Linux-based) tools to rip CDs, which had various levels of maturity. Pretty sure I ripped a Cocteau Twins CD (Four-Calendar Café) in around 2001 using one of the earliest versions of Ogg Vorbis. There were various levels of quality here, but Beets did a great job of renormalizing tag metadata and writing things into coherent files.

Second, I found using Syncthing rather annoying (it's great software, perpetually resyncing was annoying) so decided to bite the bullet and set up a media server with an old Thinkpad w520 that dates back to my Mozilla days (got it when I first started there in 2011 and then bought it back when it basically was worthless in 2014 or so). I used Jellyfin media software, which is quite nice (I've heard navidrome is also good).

The Thinkpad uses surprisingly little power with the screen off, no wifi (I have an ethernet hard link), and the battery pulled out: about 6 watts. Over the course of the year that only adds up to about 50 kWh (0.06kW * 24 hours * 365 days), a drop in the bucket of our annual electricity consumption.

I set up a small Tailscale network so I can access the server from outside the house: worked great. The server is probably living on borrowed time, but I can just swap out the disk into a new machine when it finally kicks the bucket.

Thinkpad w520

Thinkpad w520 Power Consumption

Listening to a snapshot of my music collection from the mid 2000s is a bit of a time capsule, but it's been pleasant so far? There's a lot of stuff in my old collection that I haven't listened to in a while, and it's been fun to rediscover. I expect I'll be gradually putting newer stuff from Bandcamp into the rotation after that gets old. Already started to do that a bit: Mandy Indiana is great.

Radiohead In Rainbows in Jellyfin

Mandy Indiana in Jellyfin


uv run isn't always what you want

February 26, 2026

til uv python

Like many others, I've joined the cult of uv. One superpower is that you no longer really need to think of activating a virtual environment in a project managed with this tool, uv run path/to/script.py will do the right thing. You don't have to think about whether the virtual environment exists or is up to date, uv takes care of that under the hood and then runs your script inside the environment.

This is great for local development but isn't generally what you want if:

  1. You're running a service inside a docker container and the virtual environment is already created (you ideally shouldn't even have uv installed)
  2. You've created a standalone tool with a virtualenv and just want to run it by itself (and not develop it).

For these cases, generally either set your path to include the virtual environment created by uv (/prefix/.venv/bin) or just run the script directly (/prefix/.venv/bin/script.py). uv run has startup overhead and inside a docker container, you also don't want to dynamically download a bunch of new things: you just want to use what you already created.

tl;dr: uv run is for development. Just execute the actual script in production.


Housekeeping

February 1, 2026

meta

Decided it was time to give this site a refresh:

Upshot: hopefully more content from me in 2026, now that I'm not fighting the tooling as much. We'll see!

I tried to make the transition seamless. RSS and Atom feeds should be in exactly the same format and places as before. Links to old posts should transparently redirect to the appropriate page in the archive.