Nathan Hoad

Software I Use

July 4, 2020

I figured I’d do a write up of software I use these days.

OS

I was originally a full blown Linux Person ™️ for a long time. I still consider myself one, but the reality is that’s not a viable option for my work laptop. I recently used a 6th Generation X1 Carbon, but after about two years it became… basically unuseable. I couldn’t run Docker+Firefox+WSL without my laptop getting hot enough to burn my hands. So now I use a 16" Macbook pro. It’s pretty great, and everything works as I expect it to.

For Linux, my distro of choice are Arch Linux. Not because I’m a snob or anything, but because I just find it the easiest to use and configure. pacman the package manager is also really simple, especially compared to apt-get/apt-cache.

Shell

I use zsh. I believe the reason I originally started using zsh was that it provides $RPROMPT, which provides a prompt on the right side of your terminal that can be configured. There’s other stuff too but I can’t remember.

I did briefly play around with using xonsh, because it’s an awesome project, but the startup time was a killer - 360ms is far too long for me. I worked on fixing it, but ultimately I stopped using it due to instability - it didn’t play nicely with capturing output of some processes, meaning they’d completely break, which was very annoying when I’m in the middle of trying to do something. I submitted a PR to fix it, but the original authors weren’t open to the change. No hard feelings, but it did mean that xonsh was inherently going to cause issues for me, so I stopped using it.

One day I would like to implement my own shell that integrates a normal shell experience with Python, because it seems like an awesome idea.

Window Manager

I use Tmux! I find that terminals are really the only thing I need to manage. When I was using Linux, I used i3, so having a tiling window manager was something I really needed. I used tmux inside i3, so it was pretty natural for me to switch to just using Tmux.

I really like bspwm for reasons I can’t fully articulate or understand, but it’s something I’ll probably dedicate myself to using at some point.

Password Manager

I use Bitwarden, paid option. It’s great and just works. My favorite feature is being able to store two factor authentication information, so I can sign into services on my computer or whatever without having to touch my phone.

I used Lastpass for a few years, but after one frustration or another I decided to stop using it - it was, sorry to say, a mess of bugs and annoyances.

Browser

Firefox is where it’s at. It’s faster than Vivaldi, and slow software drives me nuts.

I used Vivaldi for a bit, but after a while of using it it started to really slow down, and I didn’t want to put any effort into fixing it. But otherwise it is a fantastic browser and everyone should at least give it a try.

A brief aside, I did write my own webkitgtk based browser - Roland. It’s another vim-binding based browser, but it’s implemented in Python. Fun project.

Text Editor

I use Kakoune. Kakoune has a nice editing model that feels really natural. If you’re someone who uses Vim, I recommend giving it a go for a couple of weeks.

Prior to using Kakoune, I used Neovim and Vim. They’re basically the same, except Neovim introduced asynchronous job support. Prior to this, using vim with a linter plugin meant your editor locking up for 200-400ms while waiting for a linter to run.

Random stuff worth a mention

pyopen

I mention this because I use it a lot, and I find it really useful. I find myself often wanting to know how a piece of Python code that isn’t mine works, and for that I use pyopen. It makes it pretty quick to view the code for specific functions, e.g. pyopen.py pathlib.Path.iterdir to run kak /usr/lib/python3.7/pathlib.py +1084.

fzy

If I need to find a something by a particular name, fzy is a good tool to have. I use it for the following: