How I Computer 2024
I have used many different technologies and computers over the years. I’ve decided to start taking notes on my current setup every year and track what changes and my thoughts on the general computing landscape. I look forward to reading this a year from now and reflecting on what’s changed, especially with my son on the way in June 2025.
Hardware & Operating Systems
My primary workstation is an M3 Max Macbook running macOS Sonoma. As of the time of this writing, macOS Sequoia is out but there are glaring network issues when using VPNs, which effects my daily use I like to stay upgraded, but that just isn’t possible right now. As this laptop is brand new (and quite expensive!) I figure I’ll be using this machine for a while. I love that Macbooks are top of the line ARM64 devices and they run like speed demons. While I have very mixed opinons on macOS itself, I love being a Mac user.
As to macOS, I appreciate the polished BSD feel that you get. It feels like a “what could have been” if BSD took off as the dominant UNIX successor instead of Linux, though not without some massive warts. I love that it “just works” for most things, and that there is still a psuedo-ports feel using Homebrew. Most of my old Linux workflows work great on macOS and I get some benefits of the BSD history as well.
I play a couple games on the Mac, mostly World of Warcraft and a few indie games on Steam. However, most of my gaming is done on a custom built gaming PC with a Ryzen 7 CPU, Radeon 6950XT, and 32 GB RAM. The gaming PC runs Windows 10, and I only use it to play games. I don’t login to anything except Steam, GOG, and Battle.net. My mistrust for Microsoft grows with each Windows release, and with 10’s EOL coming in just under a year, and my first kid on the way, wonder what I’ll be doing to serve my gaming needs, if I’m even playing any games at all with a newborn.
I have 2 Ryzen 7 NUCs from some Chinese company or another that I use as nodes in a Proxmox cluster. These NUCs run LXC containers for some self-hosted services for things like network monitoring, Prometheus and Grafana, and a few personal tools. I also use this cluster to run Linux and BSD VMs as I practice kernel development, as that is the direction I want to move in my career.
My phone is an iPhone 13 Max. I plan to stick on this phone and not upgrade for a long time, even though it’s a few years out of date today. I just don’t see much point in upgrading phone hardware anymore, there seems to be a rampant stagnation in any new feature beyond bigger screens and higher-def cameras
Macs? Really??
It is odd, even to me, that I have this very negative opinion of macOS development but use macOS as my workstation platform. I find it is most pleasant when you are using the system to build software for Linux, which is an odd way to look at it for sure. The thing I dislike about using Linux for a workstation is how “frankensteined” the system feels.
All this being said, if it was possible to run FreeBSD on my Macbook then that’s probably what I would do. While I prefer OpenBSD over FreeBSD from an ideological standpoint, OpenBSD’s security choices (which I greatly respect) make it an unideal choice for a workstation platform. I spent a lot of time trying to live in just OpenBSD and the frustrations just were not worth it, in my opinion. FreeBSD, meanwhile, fits a comfy niche of a decent workstation OS with some great modern features while still being a complete BSD system.
So, I choose comprimise. macOS runs the software I like, it provides a solid BSD platform to do my work, and I avoid the Swift “app” ecosystem like the plague and just use the Mac to do the type of programming I like and run said code on Linux or FreeBSD.
Programming
IDEs are simple: I jump between a light custom Neovim setup and Jetbrains IDEs as needed. I like Clion and Goland a lot, and find myself using them exclusively when writing in C or Go respectively. Neovim is great for things that Jetbrains does not support, mostly the occasional Lua or Bash script. I used to write Zig on Neovim, but the excellent Zigbrains plugin changed that and now I write Zig in Clion.
I think Zig is an incredible language with some really smart people behind the scenes, and one of my big tech goals in the coming year is to really learn the language and its ecosystem. I would love to start writing programs in Zig where I can and use less C. As much as I’m an old C diehard, I recognize that it is cumbersome and a little too spartan… just look at how many years I’ve kept adding to libflint.
I also use Pycharm for Python when needed, but I try to replace any Python use with something more sane like Go or Zig. I find Python to be unpleasant to work with and would like to avoid it as much as possible.
Career Tech
In my current job, I have an M1 Macbook since I am working on macOS system software for Huntress. I mostly use Go, Swift, Python, and a little C here and there when I can get away with it. I like my job a lot, and the company is a really good place to work, but the tech itself is kind of boring for the most part. While I enjoy being a Mac user very much, developing for macOS is a pretty unpleasant experience and I would be hard-pressed to continue working on system software that runs on macOS.
The development experience that Apple creates seems to be very iPhone and “app” focused while making system software development difficult and cumbersome. I appreciate what they are trying to do with features like SIP and codesigning, but I have spent way less time writing code than I’d like in my current job and way more banging my head against the wall trying to work in their ecosystem. And don’t get me started on Xcode. What a joke.
Odds and Ends
My favorite new tool is using Tailscale everywhere I can. I lock up my personal Git server’s SSH behind Tailscale while exposing the HTTP interface for Gitea. I can use my Proxmox cluster from the internet while the entire cluster is hidden from anyone outside my Tailnet. I think Tailscale is an incredible tool, and as aside I have greatly appreciated Brad Fitzpatrick’s willingness to answer my occasional direct emails when I have questions.