A List of my Favorite Tools
May 2022
A list of (mostly software) tools that I use more than once a week, and that help speed up my work. I recommend most things on this list to friends so often that I decided to write them up.
Avoiding configuration
I’m averse to tools that require complex setup, like editing endless config files or learning confusing shortcuts. In my experience, if the benefit of some tool is not obvious immediately after I install it, it’s probably a bad tool, and configuring it will be a waste of time.I do use vim and a custom keyboard layout, but looking back I’m not fully certain the time to learn them was worth it. Additionally: Complex configurations tend to result in crashes that are the result of complex interactions between settings and are therefore frustrating to debug and non-googleable.
Browsing
- AdBlock: uBlock origin, duh. A particularly useful feature is the Element Picker which allows quickly and permanently hiding website elements, like StackOverflows distracting and useless Hot Network Questions.Accessible under this icon:
Yes, it also gets rid of Youtube ads.
- Site-specific search shortcuts: I assume this saves me >10 minutes every day and takes just a few minutes to set up. For example, I set up a shortcut for Google Maps and called it
gma
. Now I typegma home to <some restaurant>
into the Browser’s address bar, and upon pressing enter, Google Maps opens with the route. Most commonly used searches: StackOverflow, HackerNews & Reddit (for recommendations), Anaconda (Python packages). I’ve compiled a list of all my search shortcuts here.Bonus tip: Some sites have bad search engines, like StackOverflow. Instead I setup a shortcut for a Google search specific to that site, likehttps://www.google.com/search?q=%s%20site:stackoverflow.com
- Web Archives extension: For quickly getting a cached version of some website that went down or was removed. Supports the Google site cache (fastest), as well as the Wayback machine.
Coding
- Dash (Free alternative: Zeal): Searching through documentation. Much quicker than using Google. A lot of docsets are supported, I most commonly use C++, PyTorch, and Numpy.
- Excalidraw. It’s a web-based drawing tool. It’s super quick to use, and the resulting sketches look great.A drawing I made for explaining a distributed caching strategy. I often just screenshot the results to paste them somewhere.
I’ve used these sketches in academic papers, and frequently add them to pull requests.
- VSCode’s Github Plugin: It allows me to review pull requests without leaving the editor, giving me access to IDE features like Go to definition, which makes working more convenient.
- Github Copilot: Autocomplete powered by OpenAI’s Codex model. It’s a perfect productivity tools, making you faster without requiring any learning or setup. It costs 10$/month, which is clearly worth it IMO.
- Docker: This may sound like a strange inclusion, but having common docker commands memorized to quickly try out some environment configuration or spin up a database has saved me lots of time.
- Dropdown terminal (Linux: Guake, MacOs: iTerm2): Hiding/Showing the terminal with a single key combination, globally. No more searching for the terminal window, particularly useful for starting daemons or long-running commands.
- Clipboard managers (MacOS: Clippy, Linux: Greenclip, Windows: builtin): A clipboard manager will keep a history of copied items, instead of deleting the current clipboard content when you copy the next thing. Useful for: Copying large amounts of code, copying screenshots from Excalidraw for later use, keeping my Zoom link quickly accessible.
- Command line tools:
- fzf: A fuzzy text search engine. I use it to search through my command history (CMD+R) and to find files in the current directory recursively (CMD+T).
- autojump: It learns from your
cd
-history and allows you to quickly jump to directories you’ve previously visited. - zsh-autosuggestions: Provides suggestions for commands based on the command history. Particularly useful for long commands like
docker run ...
. - ripgrep: Fast file-content search, a replacement for
grep
. There’s also a related tool for searching through PDFs. - Writing your own shell scripts: After I learned bash using this book, I started writing small functions for commonly used tasks. Example: Use py-spy to look at the frame stack of a Python process that’s taking longer than expected:
pytop() { # List all Python processes, use fzf to select one by name PYPID=$(ps -ux | sed '1p;/python/!d' | fzf --header-lines=1 \ | sed 's:[[:space:]]\+:\n:g' | sed -n 2p) # Call the profiler sudo /home/simon/miniconda3/bin/py-spy top -p $PYPID }
Just having such functions easily accessible means I use them much more often.
- MacOS specific:
- Alt-tab for a sane window switcher, because the default “shortcut” for switching to a minimized window is fairly mental, to say the least.
- Bluesnooze for switching off Bluetooth when the computer sleeps.
- Rectangle for window moving and snapping.
Hardware
- Earplugs: I almost always wear earplugs when working. Removes distractions, creates a good work/play boundary, and signals to coworkers that frequent interruptions are counterproductive. I like these from Amazon.
- Keyboard: I have a cheap-ish mechanical keyboard from Keychron, called K2. I’ve owned it for >1.5y and it’s much more fun to type on than standard keyboards.
- Avoiding wireless hardware:See Ben Kuhn’s blog post on the topic I have a strong dislike for wireless peripheries. It adds a new source of failure, and the latency penalty is much higher than people expect. For Zoom calls, I use wired Bose headphones, a LAN connection, and a wired microphone.The only exception is a Logitech MX Master 2 mouse. I measured its latency using an iOS app, and it has the same latency as my Laptop’s built-in keyboard so it gets a pass.
Others
- Vorta backup (MacOS, Linux): For me, this required a one-time setup, which took maybe 2h, including renting a Storage box from Hetzner. Now I have an encrypted & compressed backup running in the background for all of my files, every 4 hours. Costs: 3.50€/months for 1TB.
- VSCode’s Grammarly plugin: Spell-checking, commas, and sentence-rewording inside the editor. I use this extensively while writing Latex, or Markdown posts.
- Local search: I like having a way to quickly search through all my local notes, books, and any blog posts that I’ve archived through archivebox. On Linux I wrote use Recoll for thisI wrote about this setup in more detail previously., on Mac the built-in finder search works just fine.