close-icon
Subscribe to learn more about this topic
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Productivity tools our machine learning engineers use

What software does our team use to keep knocking down the efficiency barriers?

datarevenue-icon
by
Markus Schmitt
Markus Schmitt

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.

An image showing K9s – a table with a list of pods and headings such as status, cpu, name, node.
K9s lets you interact with Kubernetes without typing out long commands. Source

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

Tmuxinator – showing a big horizontal pane with four small panes below, having 1:server, 2:tasks, 3:vim, and 4:zsh.
Tmuxinator is Tmux on steroids. Source

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.

Four tmuxinator panes, with annotations from oh-my-bash, including the current git branch.
Oh My Bash adds some colour to our terminals. Source: Data Revenue

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.

A drop-down terminal split into two panes with the Desktop still visible at the bottom.
Guake means that a terminal is always only a single keystroke away. Source

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

A comment showing a programmer repeatedly pressing the up arrow to find the “ls” command in his history.
Source

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.

 A terminal showing the McFly status bar and nine matching history commands to select from.
Searching through commands with McFly’s fuzzy matching. Source: Data Revenue.

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.

An example of someone typing a short note at the command line using jrnl.sh.
jrnl.sh means you can take a quick note before the thought leaves your mind

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.

Peek recording a screenshot of Peek.
Using Peek to demonstrate Peek. Source

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.

An example of using Lightshot to capture a screenshot using a custom rectangle tool. Various annotation tools appear.
Lightshot makes annotating screenshots quick and easy.Source

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. 

An image of an email containing errors. Grammarly suggests changing “told me year ago” to “told me a year ago.”
Grammarly helps us fix everything from small typos to hard-to-understand sentences

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.

The Krisp menu showing options to choose a microphone, turn noise cancellation on or off, and some information about what programs are currently in use.
Krisp lives in your toolbar and lets you turn background noise cancellation on or off with a toggle.

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.

The import view from Karabiner showing a complex rule that remaps the Capslock key to behave differently in different settings.
A complex rule example in Karabiner. Source

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. 

The F.lux settings page, showing information about the sunrise and brightness of the screen.
Setting the screen adaption settings in F.lux. Source

Get Notified of New Articles

Leave your email to get our weekly newsletter.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.