9 tools, libraries and extensions our developer can't live without (and why)
Tags: tooling, productivity, development, coding
Published: 2024-06-17 18:05:03

I asked our developers at [DevZero](https://devzero.io) to give us the tools the tools they are in-love with and that started a long thread of opinions and debate. We summarised it for you here.

## FZF
[fzf](https://github.com/junegunn/fzf) plugs into almost every alias I have including shell history, which allows me to operate in the CLI using 1-5 keystrokes instead of typing out extremely long commands. Here's a good [tutorial](https://youtu.be/qgG5Jhi_Els) of using FZF.

## Silver Searcher
There are other CLI search tools for code: grep, ripgrep, etc. or actual search tools (Sourcegraph, Github, IDEs), but I always reach for [Silver Searcher](https://github.com/ggreer/the_silver_searcher)/Ag. Ag is a code-searching tool similar to ack, but faster. The syntax is pretty good and it’s very helpful when I just want something basic such as  when I’m just looking for the string Config (I don’t use complex regex).By the way [fzf.zsh](https://github.com/issmirnov/dotfiles/blob/master/zsh/config/fzf.zsh#L166), combines ag with fzf to do instant full text search recursively over the current directory, and then pops you into vim at that exact file line.

## VS Code
[‍VS Code](https://code.visualstudio.com/) just works, and the marketplace is great and while the software can get a bit degraded from time to time, even "bad state" is more than good enough

## Tailscale
‍[Tailscale](https://tailscale.com/) simplifies network management, enhances security, and facilitates remote collaboration, ultimately enabling them to focus on their core development tasks without worrying about networking complexities.

## K9s
Typing out all the kubernetes commands is so annoying, and I find that [K9s](https://k9scli.io/) is actually better than most visual kubernetes interfaces. It also works everywhere.

## Graphviz
‍[Graphviz](https://graphviz.org/) is a graph visualization tool - useful for visualizing things such as flow charts. You write out the graph in a special language called the "DOT language" where you specify what's in the graph, and graphviz handles all of the layout / visualization for you. It is insanely easy to programmatically create directed graphs and I use it when debugging complex state machines. I have a CLI shortcut to render those graphs in my command-line. It is also really useful to map out network topologies.
It helped me plan out network topologies for datacenter deployments, as well as help save me countless hours debugging complex code with lots of state flying around.As a bonus, here’s the code behind Graphviz.


![Graphviz](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bx25wl1v4v2g85rojf49.jpg)

## Emacs
While [Emacs](https://www.gnu.org/software/emacs/) has been around since the 70s. Its extensive library of add-on packages, which allow me to tailor the editor to their specific workflow and needs. Syntax highlighting, code completion, version control integration, and a built-in terminal emulator, making it suitable for me for a variety of programming tasks. 
‍
![Emacs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uh1p2hifnsthckfeq54i.png)

## Strace
‍[Strace](http://man7.org/linux/man-pages/man1/strace.1.html) is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. it provides detailed insight into the behavior of Linux processes, helps diagnose issues, and aids in performance optimization. Its versatility, compatibility, and ease of use make it an indispensable tool for Linux developers.

## KubeShark
Debugging Kubernetes nodes is a nightmare. The amount of information is vast and the granularity isn’t great. [Kubeshark](https://github.com/kubeshark/kubeshark) is an API traffic analyzer for Kubernetes providing real-time K8s protocol-level visibility, capturing and monitoring all traffic and payloads going in, out and across containers, pods, nodes and clusters.

![KubeShark](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jjloszkx2cnda9uu6shy.png)