Draconian Overlord

Oppressing software entropy

Tools

A misc collection of tools I find useful. WIP.

I had a more lengthy introduction, but moved it to it’s own post: Tools, Productivity, and Investing in Yourself.

Key bindings

Side stepping a flame war, whether you prefer vim bindings or Emacs bindings doesn’t matter, but in my opinion all professional programmers should pick one or the other and then use your preferred bindings as much as possible.

Your job is basically editing text all day, and so you should be extremely proficient at it (as attribution, I saw this first articulated in The Pragmatic Programmer).

Once you pick one (either vi or emacs), then try to use those bindings everywhere, e.g. if you pick vi bindings, use vrapper in Eclipse, and vi mode in bash/readline here, and vimium in Chrome. Get the same bindings in as many places as possible so you can reuse the muscle memory in as many places as possible.

Also learn more than just the basic movements, e.g. if you use vim, learn vim macros. Get beyond just h/j/k/m.

Browsing

  • Vimium - vi bindings for forward/back/etc.
    • One semi-hidden feature is a “search mode” for links, e.g. type f to switch to “search mode”, start typing the text of the link you want to navigate (e.g. if you want to click the Login button, start typing “log”), and vimium will incrementally match/highlight links, until you’ve got it narrowed down and can select one. This sounds tedious, but f p u <enter> are my 4 keystrokes for hitting the “Publish” button in a webapp.
  • wasavi - vi bindings in textboxes
  • Quick Tabs - Chrome plugin that maps “Alt + o” (or that is what I set the binding to) to open a quick list of your open tabs, so you can switch from tab 20 to tab 3 by typing “Alt + o + (title of tab 3)”. It does incremental search + fuzzy matching.

Shell

  • Fish shell
    • I switched to this in 2017 and prefer it over bash, great autocomplete out-of-the-box
  • Bash shell
    • See my .bashrc and .inputrc for various customizations I setup over the years, e.g. for vi bindings + control-j/k/incremental history search
  • A fuzzy finder, e.g. fzf
    • You can/should hook this into bash/fish/vim, which once hooked up, was described by one programmer I work with as “life changing”
    • Note: To get fish-fzf and fish-vi-mode ot play nicely, I have a few lines in my config.fish
  • tmux+mosh for remote sessions
  • ack or ripgrep for search in files

Version Control

Misc OS Tools

  • I’m a fan of tiling window manager, e.g. i3