We are living in the age of highly accelerated technological development. Every day, we see the release of innovative machine learning and artificial intelligence applications. No single human can comprehend these advancements and the associated impacts on the industry as well as society.

Concentrating even on the available open-source tools and applications is difficult; there are several available options, a significant number of them yet to be explored, analyzed, and verified whether they meet our various requirements. We do not even know some requirements until we hear about a particular tool or an application for the first time. Sometimes, our keyword search terms do not return the tool that we are looking for. The time spent searching, analyzing these tools and applications, and finally deciding whether to continue with our choice is sometimes very high.

What purpose do tools and applications serve? In my opinion and looking into the applications that I use, the main purpose of any tool is to simplify the day-to-day tasks. Nevertheless, simplification is a subjective opinion. A better definition would be that a tool must help me to reduce the time that I take for achieving a task. The lesser the time, the better. I should be able to achieve more in less amount of time. This includes any possible options to avoid repetition and automate routine tasks. The ease of use is another option that I would like to have. Probably, this explains that I particularly like tools that help me use text-based input like the command-line tools. Recently, I have discovered minimalistic tools with very few features that allow us to focus on one task at a time.

I do not think I can call any tool the 'right' tool. Yet there can be several parameters to make comparisons among tools. The number of menu options and sub-options in a graphical user interface. In the case of command-line tools or applications, I consider the effort required to achieve a task. This includes the length of commands, options, and the possibility to create new aliases for frequently used commands. I like tools where the learning curve is not very steep, i.e., I could jumpstart using a tool in a few minutes. I often wonder whether I would love an application with several features. I would say more features do not mean a better tool. Based on my personal experiences, I recall seeing others using applications with much ease whereas I struggled to use them. Therefore, it is hard to judge an application.

However, I like applications that are easily customizable and extensible. I prefer lightweight applications with the possibility to extend them with more options and features. The best examples I could give are the command line and web browsers. A minimalistic version of a command line must run a command, and a web browser must render a web page correctly. Options like piping in the command line help us to perform complex tasks. I do not have any particular preference between graphical user-interface tools and command-line tools. In the case of GUI, I have observed lately that I prefer web interfaces to desktop-based applications.

Despite all the technical advancements, I prefer that we have a multitude of options to choose from and let the users decide what works best for them.


  1. Programming Tool