Nathan Hoad

Software I Use

September 11, 2019

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 Windows is easier to manage at work, so that’s what I have, although I basically live in WSL. It’s pretty great, and everything works as I expect it to. Except for mounting volumes in Docker. I say this as, again, a Linux Person ™.

For both WSL and 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.

Personal Dashboard

I use wtfutil as a dashboard, which is good because that’s what it’s for. It’s pretty neat. I can use this to tell me about upcoming appointments, weather, time in different timezones, etc. Thoroughly recommended.

Shell

I use zsh. I believe the reason I originally started using zsh was that it provides $RPROMPT, that is there’s 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 use WSL exclusively now so I needed to manage terminal windows in a way that wouldn’t drive me insane. 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.

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: