These are the tools I use for my day to day work, it’s an accurate if incomplete list as of November 2024.

Organization

I use things 3 as a todo list. I really like that I can use quick entry to create a todo item without leaving whatever application I’m looking at. This makes jotting down a quick todo list item during a meeting, or while deep in some code easy to do without losing focus.

Separately, I use bear to keep a single list of ‘initiatives’ that I’m keeping in mind at the back of my head. I try to keep this to a small list of open ended things on my mind. If/when I have an hour or so of free time, I’ll pull an item off this list.

I use excalidraw to jot down diagrams. I really appreciate that Excalidraw is almost completely unstructured (it’s just squares, text, and lines). So you can draw pretty much anything, and the UI is dead simple. Live collaboration on Excalidraw diagrams is also really easy.

I use Slack at work. I heavily use the ‘remind me in N hours’ feature and try to keep the ‘later’ tab at close to zero messages at all times. I also use channel groupings aggressively.

We use the google office suite at work. I keep a single google doc with all my meeting notes. Google docs can generate meeting notes for you which gives me a handy way to organize the notes by meeting.

I’ll also color code my meetings in Google calendar – a different color for 1:1s, external calls, focus time, and everything else. If you color code your meetings, google calendar will give you a handy breakdown of how much time each ‘category’ of meeting is taking.

I don’t go too crazy with gmail labels. The only label I really use is one called ‘followup’ which is colored the brightest red available. I (sparingly) will manually mark emails with ‘follow up’ and make sure to read any new replies to threads thusly marked.

Coding stuff

I use JJ for most of my git work. JJ is a new version control system with a really smooth compatibility layer on top of git. It has a design that does away with git’s staging area. In effect, this makes it really easy to context switch without discarding half done work.

Editors (vim)

I usually have at least one vim screen open. Vim is rarely what I use for writing code, but I often use vim to browse code when I don’t want to deal with setting up/spinning up a whole IDE.

My vimrc mostly sticks to small tweaks. I use some of the interesting stock features very frequently:

  • Vimdiff is great for seeing the difference between two files with nice features like folding similar blocks
  • I use suspend and resume quite frequently. This isn’t actually a vim feature, but a posix thing. You can hit ctrl-z inside vim to put vim in the background (and return to your shell). You can type fg to get back into vim. This is great for swapping between your shell and editor.
  • Vim has a nifty feature that lets you pipe the current file into a shell script and overwrite the current pane with the results. This is really handy for cleaning up unwieldy plaintext files where I have to craft a jq, awk, or grep filter that might take a few tries.
  • The one plugin I can’t do without is fzf.vim which gives you a fuzzy file finder.

Editors (non vim)

I’m a big fan of Jetbrains IDEs. Most of the code I write is in Go for which I use Goland (stock, except for vim emulation).

For other languages I don’t use enough to justify purchasing an IDE, I use VSCode where the language server support is very impressive!