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:
- Finding files in a large repository
- Jumping between buffers in my text editor (similar to Control-P in Sublime)
- Previously for finding shell history, though I found this less useful over time.