2024 Personal Tech Stack

As a neckbeard who started coding in the 1900s, I’ve steadfastly held on to my terminal-centered workflow. You might think that using tools that are decades old would mean things are nice and stable, but due to childhood brain trauma I keep on tweaking and adjusting my setup.

So, in order to help the thousands of future historians dedicated to studying my life in the future, here’s a snapshot of my personal tech stack as of the end of 2024.

Too many machines, too many platforms

A very reasonable number of computers (not visible: desktop that is a deskbelow and home server)
A very reasonable number of computers (not visible: desktop that is a deskbelow and home server)

After over five years of not using macOS, I’m now on an M3 for my day-to-day development at Coda due to reasons beyond my control. This means I currently use:

Swapping between these mostly works fine since I’ve invested a ton of time in order to normalize as much as possible (see below), but there are plenty of paper cuts especially with macOS since it’s the only BSD and doesn’t use apt.

In 2025, I’m hoping to simplify this a bit. I’d love to return to desktop Linux as my primary work environment.

Dotfiles

Neovim and tmux in action
Neovim and tmux in action

Over a decade ago, inspired by a coworker, I moved all my configuration files into a git repository and created some simple installation scripts.

Years later, I’ve changed pretty much everything about the setup. It started off as macOS only, then added Linux, followed by Chromebook via Crouton (IYKYK) and later Crostini, then added Windows via WSL2, removed macOS, and now macOS has returned again.

The core pieces are mostly unchanged throughout the years:

My installation scripts set up all these tools and their configuration, so I can hop through different machines and keep a consistent experience.

Window management ends up being the biggest difference, with i3/Sway tiling window managers on Linux being far and away my favorite. Chromebook and Windows both have some decent built-in shortcuts, but macOS absolutely requires installing Rectangle in order to maintain any kind of efficiency.

I’ve tried switching to VS Code / Cursor, but it never sticks for more than a few days. There are still too many things that I do that are just much faster in a terminal.

LLM Tools

Although I’ve been working on an AI-powered product, only recently have I started to integrate LLMs into my terminal workflow (other than code completion via Copilot in Neovim).

My two favorites are:

Additionally, codecompanion.nvim is a nice Neovim plugin that also supports the major providers and lets you chat within Neovim. Very useful to be able to quickly move text between the editor and the chat (obviously, also possible via tmux, but vim registers are far more powerful).

Other 2024 Changes

I kept on getting nerd sniped into trying out some new tools or fixing things. Some examples:

There are probably other examples, but my brain is likely blocking them as a self-defense mechanism.

Non-Terminal Tools

Misc Tools / Devices

They don’t live on my computer, but a few related things that I use (and enjoy) regularly:

What’s next in 2025?

Everything’s changing so quickly, I won’t pretend to know. My biggest concern is that the Neovim ecosystem may not be able to keep up with the polish and integration of AI tools in VS Code and friends. The vim bindings aren’t bad, but I’ve optimized so much in tmux / Neovim that I always feel slower in VS Code.

Or maybe I’ll finally realize that tweaking my vim setup for the hundredth time is squandering the precious little time I have left on this earth and if I just spent a fraction of that effort into my mental and physical health I could be so much happier.

Oh, and also yazi looks like a potential replacement for vifm!