7 Tools I Use Every Day at Work
Tags: programming, tools, daily
Published: 2021-04-01 09:55:10

---
title: 7 Tools I Use Every Day at Work
published: true
date: 2021-04-01 08:59:11 UTC
tags: programming,tools,daily
canonical_url: https://www.solarwinter.net/7-tools-i-use-every-day-at-work/
cover_image: https://www.solarwinter.net/content/images/2021/03/tmux-example.jpg
series: Things I use
---

#### Things to make the every-day better

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

#### [The Silver Searcher (ag)](https://github.com/ggreer/the_silver_searcher)

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.

![7 Tools I Use Every Day at Work](https://cdn-images-1.medium.com/max/800/1*D53qt3npZEUb_H3BtaIFDA.png)<figcaption>Example of ag’s search output, searching rust files</figcaption>

I’m told [ripgrep](https://github.com/BurntSushi/ripgrep) is also a good grep replacement, but I haven’t tried it.

* * *

#### [fd](https://github.com/sharkdp/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:

![7 Tools I Use Every Day at Work](https://cdn-images-1.medium.com/max/800/1*WnCInoRgXFqBRRiSWUzbDg.gif)

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](https://github.com/junegunn/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:

![7 Tools I Use Every Day at Work](https://cdn-images-1.medium.com/max/800/1*kOeS7gzEFoiicYOKlT0JXg.gif)<figcaption>fd/fzf animation</figcaption>

* * *

#### [vbindiff](https://www.cjmweb.net/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.

![7 Tools I Use Every Day at Work](https://cdn-images-1.medium.com/max/800/1*JzXdaDcCncCVw2c2j13mDQ.png)<figcaption>Spot the difference</figcaption>

* * *

#### [tmux](https://github.com/tmux/tmux/wiki)

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`](https://github.com/tmux-plugins/tmux-resurrect) and [`tmux-continuum`](https://github.com/tmux-plugins/tmux-continuum) plugins are awesome for getting back to where you were, even after a system reboot — they can even restore Vim sessions.

![7 Tools I Use Every Day at Work](https://cdn-images-1.medium.com/max/800/1*6MX2ib6CANn69teHs3WDig.jpeg)

* * *

#### [Zim](https://zim-wiki.org/)

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](http://bashdb.sourceforge.net/remake/)

Last we have another tool, a bit like vbindiff  in that a lot of people probably won’t be using [make](http://make.mad-scientist.net/). 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.