What I use, 2024 edition
Dec 28 2024
Hi, I’m Louis! I’m the the Gleam programming language guy.
This is my nostalgic record of the tech stuff I’ve been using over the last year. Check out 2023’s post to see where I started the year. Alright, thumbs up, let’s do this.
My workstation
I’m still using the 2020 Macbook Air with 16GB RAM, hostnamed “Diglett”. It’s doing me well, though I’m somewhat hitting the limits of what it can handle. Streaming to Youtube and Twitch and also trying to compile Rust makes it overheat and throttle the CPU, at which point everything slows down a ton. My solution has largely been to not do Rust streams. Ah well.
I’ve upgraded my 1440p monitor to a 27 inch 5K LG display that I got a good deal on second hand. It has some issues with temporary image burn-in (is that the right term?) and a couple dead pixels, but it works and I enjoy the extra screen space, and it’s nice to give other people’s old electronics a new life that isn’t landfill.
Hey, so you know how Apple sells 5K displays? MacOS must have great 5K display support then! Scaling the UI appropriately rather than making everything unusably small, right? Yeah, turns out MacOS is terrible with 5K displays. Far worse than Windows or Linux. I had an absolutely miserable day fruitlessly trying to find a solution and thinking I’d wasted my money. In the end Magic Mike Marshall came to the rescue and recommended BetterDisplay. Thank you Mike!
I’m honestly stunned that MacOS is so bad at this. It’s supposed to be the “just works” operating system that puts loads of work and polish into their UI, and they’re selling 5K displays for it!
Oh, and I bought a pair of AirPods Pro 2, mostly motivated by their transparency mode where you can still hear the outside world wearing them. They’re a lot better than I expected, I’m rather fond of them now, and I use them for pretty much everything. Except the microphone, the microphone is pants.
I’ve continued to enjoy Neovim, but I’m growing irritated with the Lazyvim distribution. The maintainers have a different idea about backwards compatibility than I do, and multiple times in recent months I’ve turned on my computer to discover that they’ve radically changed something and completely broken my workflow. I’m in the process of making my own custom setup based off of kickstart.nvim and mini.nvim, but I’ve not found the time to figure out all the details. I’ve stubbornly been using kickstart as inspiration and writing my own config, but realistically I should probably just clone kickstart and use that as the start-point.
Oh, and I switched from Iterm2 to Ghostty after getting irritated with the silly AI stuff being added. I’d felt Iterm2 was a bit bloated and rubbish, so it was enough to prompt me to try alternatively. Ghostty is very nice! I like that it’s cross platform, so I can use it on Linux etc too.
Homelab
Last year I said I wanted to try replacing Google Photos with something else, and this year Google forced by hand by adding a bunch of adverts and constantly nagging me to buy more storage from them.
Side note: Irritation really does seem to be the most powerful motivator to me. I’ve grown less and less happy with how companies and such will just decide to change something that makes my life worse in some small irritating way. It may be that you get less polish making your own tools or using open source ones, but it’s predictable, you don’t need to worry about suits making changes motivated by their annual performance review, and you get that nice IKEA effect fuzzy feeling.
Anyway- I went for Immich which is an unabashed open source Google Photos clone. I really like it! The user experience is very slick and easily competes with products from large companies.
It’s engineered like some sort of enterprise product though, being a collection of microservices. I’ve no idea why, given it’s intended mostly for self-hosting. Luckily some folks made an all-in-one container image that I could deploy instead of managing multiple different ones, so I can mostly ignore the internal architecture now.
Compared to anything I was hosting previously it’s quite resource hungry. Idle it uses about a gig of memory between all the services and the two databases (why does a self-hosted application need two databases?), so my Raspberry Pi felt a bit underpowered. It especially wasn’t happy at all when running computer vision and transcoding newly uploaded media. I found a used 2021 N5105 Mini PC with 16GB RAM and 1.5 TB of storage in Cash Converters for a good price, so I’ve made that my new home server.
I decided to be bold and use not-Debian for the first time in a million years, and after a lot of shopping around I opted for OpenSUSE MicroOS, an immutable Linux distro with a transactional package management system. This means that to make changes it takes a btrfs snapshot and installs the updates into that snapshot instead of the live system, and then that gets used after the machine reboots. I love this design! No more do you have skew between the intended state of the system and the actual one, and if it doesn’t work you can rollback to the old one. I’ve got it updating and rebooting early Sunday morning, as I thought the default of daily wasn’t what I needed.
As for deploying software to the server, I decided to use containers this time, as I like how they keep everything nicely wrapped up and I don’t need to worry installing language runtimes and their dependencies. I was reluctantly considering using something like docker-compose, but then I discovered Quadlet, Podman’s systemd integration. I love it! It’s one of the nicest little bits of tech I’ve used in ages.
[Unit]
Description=Gleam Developer Survey container
After=local-fs.target
[Container]
Image=ghcr.io/gleam-lang/developer-survey:1.13.0
Volume=/mnt/data/gleam-developer-survey:/app/data:rw,z
PublishPort=8000:8000
[Install]
WantedBy=multi-user.target default.target
Pop that in /etc/containers/systemd/gleam-developer-survey.container
, run
systemctl daemon-reload
, and then you have a container as a systemd unit that
works with systemctl start
, etc. Delightful!
The Future
The next steps for me are to finish organising all my photos and moving them over to Immich. There’s an import script for Google Photos, but I’m taking the opportunity to sort through all the junk and categorise everything instead of replicating the same huge mess in a new place.
And also to figure out a new nvim config. Only time will tell if I finish this, or if I’ll give up and use kickstart. Either way it’ll be grand, I’m sure.
Happy new year folks. Best of luck to you in 2025, I’ll see you there. x