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.
1. Flycut
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.
2. Lazygit
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.
3. Atom
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.
4. Makefile
Make is a build automation tool that automatically builds executable programs and libraries from source code by reading files called Makefiles which specify how to derive the target program.
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.
5. Docker
Docker is an open-source project for automating the deployment of applications as portable, self-sufficient containers that can run on the cloud or on-premises.
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.
6. VirtualEnvWrapper
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
7. jq
jq is like
sed
for JSON data - you can use it to slice and filter and map and transform structured data with the same ease thatsed
,awk
,grep
and 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).
10. tmux
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.
Conclusion
Follow me please would you help me a lot.