a photograph of Scott Colby

My name is Scott Colby. I am a software developer and chemist. I work in Python, Go, Rust, Kotlin, and Java, and deploy with Kubernetes, Ansible, and on bare Linux machines.

I use this site to post interesting things that I've worked on and as a personal notebook to document things that I've figured out so I won't forget them.

Scott Colby

Introducing Actifish: Easily Activating Python Virtual Environments in the fish Shell

Activating Python virtual environments can be surprisingly cumbersome, making a small but persistent annoyance in daily development. When a friend shared his frustrations about this—and about some limitations in existing tools like uv and VirtualFish—I saw an opportunity to simplify things.

Run a Command Transiently When a Systemd Service Exits

I have a Systemd oneshot unit that runs a backup on a timer. Recently, I performed an update on that machine while the backup was running, and I wanted to reboot after the backup finished. In the past, I might have started a shell loop in a tmux session like …

Receiving Notifications from my Electric Kettle with Tasmota and Home Assistant

Sometimes, I start my electric kettle with the intention of making tea, but get distracted by some other activity and forget about it until long after it has boiled and cooled down again. Taking my cue from the creators of the first webcam, I decided to solve this problem with …

UEFI Settings for ASRock B550 Phantom Gaming-ITX/ax

I’ve had a scrap of paper on my desk for about 6 months now that lists the approximate changes I made to the default settings in my motherboard’s firmware. Today, I updated the firmware to version 2.20 and followed these steps again. I decided it’s time …

Running a Localhost-Only Service on Docker Swarm

I have been using Docker Swarm to run services on my home server in order to nicely have containers start at boot. My Swarms all only contain one node, and, early on, I had difficulty getting the Swarm ingress routing mesh working, so I have been using mode: 'host' for …

Git Doesn’t Set the Modification Time on Files at Checkout

The last time I updated this blog, I noticed that the last updated time on the about page had changed to the last build time. My site generator, Pelican, uses the source file’s modified time for this value, and this was being set by the operating system of the …

Making a Printable, Wallet-Sized Starbucks Gift Card

I recently received a Starbucks gift card via e-mail. I don’t have a Starbucks account, nor do I use their mobile app. However, the online gift card page shows a bar code, which I decided to print at wallet size so I don’t have to keep the email …

Building Python on macOS with LTO, Up-To-Date SQLite, and GUI Compatibility

I use pyenv to build, install, and manage multiple versions of Python on my system at once. At some point recently, I needed to link my compiled Python against a newer version of SQLite than was shipped with the version of macOS that I was using at the time.

How I Get Notified of Failed systemd Timers

I have a few backup jobs that are run periodically by systemd timers. Because these are backups, I would like to be notified somehow if they fail. systemd has a configuration option for this, OnFailure=.

The Seven Lines of Code of which I’m Most Proud

I took a machine learning course in graduate school. As part of the coursework, we were taught about the fundamental algorithms of machine learning and were asked to implement some of them. My implementation of the k-nearest-neighbors classification algorithm (k-NN) remains some of my code that I’m most …