Shared tools are often our focus when we discuss engineering productivity, such as Docker, CI/CD platforms, or monitoring tools.
But engineers also use smaller, local tools to configure their own environments to their specific preferences. What makes these tools “good” is more a case of personal choice than with the larger, shared tools, but they can still massively boost efficiency.
Here are our favourite tools for when we’re working on production machine learning projects.
The list of tools
- K9s: manage your Kubernetes clusters interactively;
- Tmux: control multiple panes with terminal multiplexing;
- Tmuxinator: configure your Tmux with YAML;
- Guake: drop-down a terminal window from anywhere;
- McFly: search your bash history;
- Autojump: intelligently cd to your favourite folders;
- Jrnl.sh: take notes and journal from the command line;
- Peek: record gifs of your screen;
- Lightshot: take and annotate screenshots;
- Grammarly: fix your grammar and spelling;
- Krisp: remove background noise in video calls;
- Karabiner: create complex keyboard shortcuts on your Mac;
- F.lux: adjust your screen colours on your Mac by the time of day;
Kubernetes tools
Kubernetes is affectionately referred to as “K8s.” But it can be hard to manage and monitor clusters, and typing out long kubectl commands can get tiring.
K9s
K9s gives us a more interactive view of our clusters. We can view logs and control pods more interactively than through Kubectl.
K9s is a command line tool that provides a convenient overview of which cluster you’re connected to. It lets you navigate and select pods interactively using keyboard navigation instead of having to type out the full name of a pod to interact with it.
Terminal tools
We all set up our terminals slightly differently, but many of us use Tmux. This lets us do everything from splitting a single terminal window into multiple virtual panes, to keeping tasks running in the background.
To add to Tmux, we also use Tmuxinator. This lets us define complex Tmux sessions, including the layout, using YAML files. Instead of taking several minutes to set everything up, we can run a single shortcut and have our development environment exactly as we like.
Tmux + Tmuxinator
Tmux + Tmuxinator + OhMyBash
Tmuxinator is great for efficiency. But adding OhMyBash adds more useful information to our terminals. This lets us easily see information about git, such as which branch is checked out, and adds more colours and themes to highlight the most important information.
Guake
Guake means that a terminal window is always only a single keystroke away. Instead of alt-tabbing to find the terminal among all open applications, or opening a new window every time, Guake provides a drop-down terminal on a keypress. This drops in from the top of the screen, overlaying any other open windows, so we can execute commands as quickly as we can think and type.
Command line tools
There are dozens of command line utilities that help us save keystrokes. Here are some of our favourites.
McFly
Often it takes minutes or even longer to build up a complicated command, such as a sed command to quickly replace a string across dozens of files. If you lose a command you previously designed, recreating it can be a huge time sink and a frustrating experience. Most shells have some basic history built in, so you can scroll through and search for previous commands.
Caption: McFly means you don’t have to scroll through your command history one item at a time
But McFly makes finding that command so much easier. It replaces the default Ctrl + R search and uses fuzzy matching and a ranking algorithm to quickly show you all matching or partially matching commands for a given search. You can then interactively select a previous command and run it immediately or edit it first.
Autojump
Autojump is similar to McFly, but to navigate your directory structure. Instead of typing out a full file name and directory, you can type out a piece and Autojump will intelligently take you to the correct place, analysing your history and using fuzzy matching.
So instead of typing something like:
cd /home/me/projects/phoenixproject/zeus-app
With Autojump you can do:
j zeus
And it’ll take you to the directory you want.
Jrnl.sh
Scientists keep lab books so they can always go back in time. For machine learning experiments we use MLFlow, but for day-to-day bugs or quick notes, jrnl.sh is very helpful. It lets us quickly take a note from the terminal and ensures everything is timestamped. It also supports tags using an @ symbol, making it easy to search through past entries.
Screenshot and recording tools
Our team’s strong culture of documentation means we take lots of screenshots and gifs.
Peek
Peek is great for creating quick gifs to demonstrate something that’s too complicated for a single screenshot. It’s open source and runs on Linux. We use it for adding demonstrations to documentation or helping each other out over Slack.
Lightshot
Lightshot lets you take quick screenshots of specific areas, then annotate them to highlight particular areas or add text. It works on MacOS and is more convenient than the built-in tools on most operating systems. We use it to create screenshots for documentation or to explain things quickly over Slack.
Miscellaneous tools
We use a few more tools for productivity boosts and general comfort.
Grammarly
Even though writing is a core part of our team culture, it’s nice to have an automatic editor to improve grammar, spelling, and sentence structure. Grammarly integrates nicely with our other tools and its suggestions always help to ensure smooth written communication internally and when we correspond with clients.
Krisp
As a globally distributed team, many of us are often on the move. While we usually have a quiet place to work, we sometimes need to take calls from coworking spaces, or other places with background noise.
Krisp.ai is a life saver. It blocks out all background noise, whether from a noisy cafe, a barking dog, or traffic, and it means we can interact with each other and our clients without any worries.
Karabiner
Karabiner lets you customise your keyboard on MacOS. You might simply remap one key to another or you could set up more complicated rules to define what keys should do in various settings.
F.lux
F.lux slowly removes the blue light from your screen as the day progresses, which can save eye strain, especially for night owls.