7 Tools I Use Every Day at Work

Silver Searcher (ag for short) is a fantastically fast searcher, much faster than grep. It comes with ...

7 Tools I Use Every Day at Work

Things to make the every-day better

These are all standalone tools, not Node modules, browser or VS Code extensions.

The Silver Searcher (ag)

Silver Searcher (ag for short) is a fantastically fast searcher, much faster than grep. It comes with defaults which work for the majority of cases. It understands .gitignore files, as well as ignore files for other tools, so it can avoid searching ‘uninteresting’ files.

It’s easy to use to search specific source formats, and it knows to ignore object files and other generated files by default.

Example of ag’s search output, searching rust files
Example of ag’s search output, searching rust files

I’m told ripgrep is also a good grep replacement, but I haven’t tried it.


fd

fd is like ag - it's a replacement for a common tool (find) which does it faster and better. Again, it natively understands .gitignore files and the like. It's also clever enough to understand about things like node_modules or the Rust target directory - for example:

Example of fd ignoring artifact files and returning just source code

The difference is a lot of files in the various target/debug/build/ directories - usually you don't want to be searching there. If you do then of course there’s a flag (-I) to let you do that.

You can also easily use it as input to other tools, like fzf.


fzf

fzf is a fuzzy finder, and it's one of those things that once you've found it you can't imagine not using it. I use it with Ctrl-R in bash, so I can fuzzy-search my command history, which is awesome.

It integrates with Vim (and other editors), to quickly search file lists, and you can also use it with the output of tools like ag, to quickly search the search results:

Animation of using fd and fzf to search filenames.
fd/fzf animation

vbindiff

Visually seeing differences in binary files — maybe not something that everyone is going to need. But if you work with binary files every day then this is a wonderful tool.

You can use it as a diff tool, where it excels, or you can use it as a plain hex editor.

Two binary files open showing a single difference between them.
Spot the difference

tmux

I admit, it took me a while to come across to tmux — I used GNU screen for years. I finally decided I should give tmux a sustained try, and I use it for everything now.

I find it a lot easier to do things like split the current window (into ‘panes’), create new windows in a particular session, stuff like that. The tmux-resurrect and tmux-continuum plugins are awesome for getting back to where you were, even after a system reboot — they can even restore Vim sessions.

Example of a tmux window with three panes.

Zim

Your own personal desktop wiki. Looking at the plugin list I think people also use it for producing static websites and other more advanced stuff.

I tend to use it mostly for working notes, stashing things away that I’ll need to remember another time (like particular command lines), a summary of what I’ve been doing for the weekly team meeting, stuff like that.

Nothing drastically exciting — but it’s cross-platform, and it generally works well and does what it’s supposed to. Nothing to complain about there.


Remake

Last we have another tool, a bit like vbindiff  in that a lot of people probably won’t be using make. If you are, then you’ve almost certainly had the scenario at one point where compilation of an artifact has failed, and it’s not at all obvious why, or even why it was being built.

remake solves those problems, and provides a nice backtrace for build errors. Think of it a bit like gdb for Makefiles. The best recommendation is to go check out the webpage — anything I could add here would be redundant, they’ve got it covered.

Subscribe to Paul Walker

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe