My top 10 development tools
I have been designing and writing code for more than ten years now, and over the years I have used a wide variety of tools. Here I listed the tools that improve my productivity and that I use on daily basis.
Flycut is an open-source tool that provides a simple clipboard manager. It was based on Jumpcut. I use it to navigate through my clipboard history to speed up repetitive tasks. It is on the top of my list because it saves me tons of time.
Lazygit is a tool written by Jesse Duffield that provides a terminal UI for git commands. Its interface is intuitive and by typing `x` you can checkout all the shortcuts available. I often use it to organize my commits to improve my PR flow. As it is a terminal tool I end up using it on server-side, on machines that I use to support my software development.
Even though with this tool you don't need to remember all git commands and options, I highly recommend to you to know git deeply to avoid messing up the tree.
Even though most of my coding is done on tools like IntelliJ and Visual Studio Code, Atom is part of my daily routine. I use it to write small scripts and edit multiple lines at same time with the `CMD + D`short cut.
Atom is an open-source alternative to sublime.
I have to say that I abuse a bit of this tool, using it in a way that is not intended for. But as soon I start a project I add a Makefile at the root of the project, and I add targets as I go. Any command that I notice that will be repeated often I add to my Makefile.
I use docker on all my personal projects and at work. It is an amazing tool that speeds up the development process. With it, you can avoid installing project dependencies on your machine, for instance. It is also very helpful to quickly check a project, you don't need to go through docs and tutorials to start an application if you have a docker image ready.
VirtualEnvWrapper is a tool that helps you to interact with virtualenv. It allows you to switch between python versions and isolate project dependencies from each other and from your system.
mkvirtualenv -p python3.x my_env_name
jq is like
sedfor JSON data - you can use it to slice and filter and map and transform structured data with the same ease that
grepand friends let you play with text.
8. Tuple (Mac)
This is the most recent tool that entered my top 10 list, and that was mainly due to me working full time remotely. Tuple is the best tool I know for pair programming on a remote setup.
9. Rectangle (Mac)
It is a shame that Mac OS does not allow you to easily split your screen natively. To do that I used to use Spectable, but it was brought to my attention that this project was not being maintained anymore. An (better) alternative to it is Rectangle, it even provides the same shortcuts as Spectable for a seamless migration.
10. Firefox containers
Firefox containers allow you to isolate a group of tabs, so it does not share cookies between different groups. In beginning, I used it to make it harder for Facebook to track me, but I quickly adopt it to login into multiple accounts of Dropbox for instance (personal/work).
tmux allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time. It can also be used to detach processes from their controlling terminals, allowing remote sessions to remain active without being visible.
It is very useful when you are running a script on server side that will take some time to finish, you just start a tmux session, start your script and use the shortcut `CTRL+b d` and you can disconnect from the remote server.
There are a lot of other tools that are present on my daily routine, but I think I was able to pick the ones that make the difference on my daily work.