My favorite software in 2024
As an engineer, I’m always refining which tools are in my toolbox. Here’s a big list of software I enjoy using in 2024. There are big overlaps with my list in 2023 . One change I’ve made this year: I’m dropping all mentions of anything I don’t touch at least once in a month. So, please refer to 2023 for some honorable, but less regular, mentions. aerc This is my email client of choice. I tried , but the configuration was too complex for me. , on the other hand, is very simple to configure, and works great in the terminal. I’m an advocate for using plaintext email , and works great for using email for git patches . It lets me use my of choice, search and filtering works well, and it’s quick. Let me also call out a new discovery here: . This works far better than the largely unmaintained I was using previously. You don’t realize how useful synced shell history is until you try it. You should absolutely try it. Installed it on a whim, and have been delighted since. I’ve aliased to and never looked back. The syntax highlighting, the line numbers, the git integration, the paging, it all just makes it nice to use. This is my favorite coding font. Yes, it was worth the $75! I used to use Iosevka , and I still find myself enjoying the slenderness of it when it’s useful. is a better (and ). I originally thought I wouldn’t need more than , until I tried to run it on a massive server with over 150 cores. you need to configure differently to see anything at all (dropping all the CPU bars), and it is slow . handles it just fine out of the box. The filtering on the processes widget is very convenient. The ability to see all the other stuff like temps, GPU memory usage, network utilization, disk utilization, those are all cherries on top. I’ll also call out that btop is also very fun, but I find bottom more useful. is a human-friendly alternative to and (sometimes) . I used to use for most of this type of task, but choose just makes it easier. It makes it easy to chop out columns I want while piping things around. This is a new addition. In general, I’m a big fan of “declarative diagraming” , and D2 is the new one on the block (vs PlantUML , MermaidJS , GraphViz , etc.) So far, I love the syntax and functionality. If I’m drawing up something quick that doesn’t warrant something like , I’ve been reaching for D2 first and excalidraw second. Their TALA layout engine is proprietary, but looking quite nice. is the best syntax-highlighting pager for git, diff, and grep output I’ve seen. I used to used , but since switching to , I haven’t looked back. This makes the experience of using git in the terminal much improved. I also have my eye on . is the another key tool I use side-by-side with . It is a structural diff tool that understand syntax . This means that many times, it is a much more succinct diff for files. I have this aliased in as well, and often use both and when looking at diffs. This is like , but better. It’s faster, and its visually nicer. This is my go-to way for figuring out where my disk space is being used. This is a replacement for that is just better. Similar to , after aliasing to , I haven’t looked back. is a replacement for . Similar to and , this is another rust-based tool that feels more intuitive and does the job better. Fish has been a great shell. I just used plain bash before this. I switched a couple of years ago, and while I don’t think there has been any particularly large “killer feature” for me, I have had no reason to switch to anything else since. The UI niceities (e.g., autosuggestions, tab completions, syntax highlighting, 24-bit color) all make the terminal experience pleasant. It’s also being slowly rewritten in rust . I’m interested in trying at some point soon, but I haven’t jumped in yet. When it comes to taking screenshots, Flameshot is my favorite. Easy to adjust, annotate (i.e., arrows, boxes, text, etc.), and save to clipboard, file, or imgur. is a command-line fuzzy finder that is incredible software. For friends who are new to spending time in the terminal, this is one of the first things I try to persuade them to install. It is worth it for alone. is my favorite version control software. Yes, that might be because it’s pretty much ubiquitous, and I’ve spent the time to get over the learning curve. It’s a fantastic tool. If you haven’t leveraged aliases ( here are mine ), then I hope reading this is a plug to go enjoy those. Since it’s git-related, I’ll also mention I’m a strong proponent of conventional commits , and using useful git trailers like they do for git itself and Linux. While we’re all used to the PR/MR type of workflow, if you haven’t experienced working with git the truly distributed way (via git-send-email ) its also worth trying. Otherwise, new software like pijul looks interesting, but I haven’t tried it personally. And, there are plenty of insightful opinions on what comes after git . This is my favorite find of the year. This fits exactly into my normal git workflow, and it’s algorithm is simple and effective. If you are used to making commits yourself, definitely try this out! If you’re following conventional commits , then is a fantastic tool for automatically generating useful changelogs. I use this in the vast majority of my repositories. This is a small tool that clones a git repository to a standard location, organized by domain name and path. I used to just have a directory full of random repos. At one point, I tried to organize these better (e.g., “personal”, “forks”, etc.), but it didn’t work well. Now, I just use and stick with that structure. “Ping, but with a graph.” That’s an accurate description, but don’t underestimate the niceness of a graph. It also has features like graphing multiple hosts at the same time, or graphing execution times of commands. Similar to , , , , if you have , you really don’t need to go to anymore. I’m embarrassed to say, but I didn’t really learn how to use until 2017. But, that was such a positive experience that I’ve been on modal editors since. I went from , to , and then, most recently, to . Going from electron-based editors to was a big jump. Going from to these others was just incremental. I had developed a very custom experience with plugins and all sorts of customizations. That, surprisingly, is part of the reason I’ve enjoyed so much: I use it pretty much stock. It’s got all the right basics built-in (LSP, file pickers, tree-sitter, etc.) such that I don’t need to customize it much. If you’re interested in experimenting with a new editor, I highly recommend helix. is an easy way to test HTTP requests with plain text. Since it can chain requests, capture values, etc., I actually often use it to “script” some request chains for testing purposes. I haven’t used this extensively, but so far, it seems very useful. is the best command-line benchmarking tool around. It should be the standard, in my opinion. If you ever want to benchmark how long a particular command-line command takes in a robust way, look no further. is a clone of the ubiquitous JSON processing tool. But, it is more correct and faster. As long as you aren’t doing crazy stuff with , might be an easy alias to make for some small wins. is a command-line JSON viewer. If you’re viewing JSON files with some combination of (or ), , , etc., then might be just what you’re looking for. It makes it easy to quickly peruse a JSON file and espand/collapse objects and arrays. is a versatile command runner that takes inspiration from , but without the baggage. This is a new entry on this list, and not one I have used as extensively, but so far, it seems nice. There are many situations where I have a with a bunch of targets because I’m just trying to use as a command runner. Well, now I have a nice command runner. There are several repositories I’ve worked with with a folder that could just be absorbed into a . Linear has become my team ticket/issue tracker of choice. Unlike some of its competitors, it is wicked fast, and I greatly appreciate it. That’s really it’s key feature. It has everything you’d expect, and then it adds great keyboard shortcuts for power users. The web is great, but it is unfortunate when you come across broken links. is a great way to help prevent that (they even have a GitHub Action ). It’s incredibly fast. I use it to check most of my repositories for dead links, as well as my blogs. I often used mdBook for documentation sites, but the lack of the inline table of contents, and the need for awkward plugins for things like admonish and mermaid was annoying. I’ve since switch mostly to Material for MkDocs and have been blown away by the quality of the framework. It’s got just about everything you’d want built in. All that said, I’ve got my eye on Astro Starlight and hope to try it out in 2025. While we’re talking about documentation, I’ll mention that I’m a strong proponent of the Diátaxis documentation system . If you’re wondering how you should organize your documentation, please consider it! The mobile shell that allows roaming, supports intermittent connectivity, and provides intelligent local echo. A recent release also brought true color support, which was the only thing that bothered me before. 99% of the time I say I’m “ssh”-ing, I’m actually just using . The ability to start a session, get a session all set up, close my laptop, go somewhere else, open it and just pick up where I was is too good to ignore. This is an example of software that is pretty much “complete”. Lack of activity on the repository shouldn’t scare you one bit, its because it has a rock solid history and does what it sets out to do. is the best media player I know of. I prefer this to VLC or others. It “just works” and is extremely minimal and performant. It’s integration with (or better yet, ) means I often just play web videos (even YouTube) via . Mumble is an open-source, low-latency, high-quality voice chatroom software. If you’ve used things like Ventrilo or Teamspeak in the past, you’ll have a good sense of Mumble. I’ve written about Mumble before , but it is my favorite implementation of this type of software. It is extremely lightweight, easy to self-host, and noticeably low-latency. Newsboat is a TUI RSS/Atom feed reader. I’ve used things like Inoreader and Miniflux in the past, but ultimately settled on . It’s simple configuration, local, and integrates nicely with my terminal-based usage patterns. is a very simple password store that follows Unix philosophy . I use a Yubikey for GPG, so means I don’t need a master password, I just need my security keys (see ’s guide ). I don’t miss having a password manager app on my mobile phone, so on desktop, this has served me well. I’m a big fan of its simplicity, and the fact that my passwords are just flat files I can version in a repo. is a command-line tool for indexing, slicing, analyzing, sampling, splitting, and joining CSV files. If you have a big CSV file and want to poke at it, do it with ! I used to use , but this is largely unmaintained for now. This is on steroids. Stop using and start using and you’ll never go back. It is significantly faster, and has a bunch of great features (e.g., searching file types, regex, automatic filtering, etc.). It is often thought of as the gold standard for excellent Rust code. is an intuitive rust rewrite of . Much like the other tools in this list (e.g., , , etc.) it is just a better option in most cases. I frequently use it in combination with to find and replace across a project directory. This is a great little tool to throw at the end of your pipe if you have long-running tasks and are like me and what to know when the last thing was printed. is the best live terminal sharing application I’ve ever used. I used to reach for things like for this, but it’s more constraining (e.g., I want to still use zellij). It also does not look as nice. has a level of polish no other tool I’ve tried in this space has had. This is by go-to tool for pair programming. They also just released the killer feature of read-only sharing , which makes this extremely handy in a whole slew of scenarios. This largely solved the screen sharing problem you might have if you use Slack or similar, but have an ultrawide monitor and your coworkers do not. With , the latency is impressively low and the text will be crystal clear. In a screen share, you have a compressed mess. I started using about the same time I started using . It’s a fun, fast, extremely customizable prompt with nice defaults. I’ve enjoyed it enough that I just haven’t stopped using it since first adding it to try. If you’re the type that has some line in your to know what git branch your on, you might enjoy starship as well. has replaced for me now that I’m on Wayland. It maintains everything I like about i3. On macOS, I’m using Aerospace , but it just isn’t the same. Thanks to wireguard , tailscale makes private mesh networking stupid easy. It’s my go-to tool when it comes to sharing things on a private network (e.g., self-hosted stuff with my family, ssh-ing into my desktop when out and about, etc.). It’s performant, well documented, and pretty much just works and gets out of your way. is the best way to get statistics around counting code in a repository. It shows you the total number of files and total lines within those files broken down by code, comments, blanks, and organized by language. It seems both faster and more accurate than tools like cloc , sloccount , etc. There are other great blogs posts about code counters . is a very handy spellchecker that seems to work in a code context better than other things I’ve tried. They have a CLI, as well as an LSP. It’s worth checking out! I usually have a config like this: simply runs a command when files in the current directory change (and it’s awesome). Made my the same folks who make cargo watch , this is a general purpose tool that can make your development loop feel faster when immediately starting long processes (linting, tests, etc.) immediately in response to code changes. Oftentimes, the checks/build/tests are finished by the time I’m ready to craft my commit. Definitely worth trying. If I’m making a dead-simple webpage (e.g., not complex enough to pull out a static site generator), my go to way to make it look nice is . This one stylesheet, one line in the is all you need to a nice-looking, responsive theme. has collected a large list of classless css themes/frameworks, if you want to check out others. This year, I finally learned about Fedora’s Atomic Desktops , as well as Universal Blue ’s images on top. These are an interesting paradigm shift, and pretty appealing as a Linux workstation. I’ve made the switch, and also released my own omakase-blue customization of it as a one-line installer. This is my favorite terminal emulator. There are a few key features I enjoy: speed (it’s GPU-accelerated), ligatures (this is why I switched from Alacritty ), easy configuration via file, clever hyperlinks , and quick select mode . Hyperlinks are easy to customize for your issue tracker (so you can open your tickets directly), and quick select mode makes grabbing hashes from in a separate pane a breeze. Highly recommended. is very similar to HTTPie . While I haven’t used the latter, I’m a big fan of over . The interface just seems more intuitive and friendly. And, it still has a flag so I can get a curl command in case I need to share it with a teammate. I used to use Mint, but when they shut down, I migrated to YNAB. I wanted to be more hands on, more intentional, and more aware of my spending, and YNAB seems to be a great tool for that job. I spend the vast majority of my time every day inside a session. I’m a fairly basic user, but the terminal multiplexing, scrollback buffer/search, ability to have multiple sessions and attach/detach is all I really need. and are a perfect combo. I like the visuals and UX enough to have had this replace . For non-documentation sites, my favorite static site generator is Zola. The template engine is great, and its fairly simple and easy to grok how themes work and can be modified. I use it for this site, as well as several others I’ve made. There are more discoveries this year than I would’ve anticipated!