Vince Rants

The Most Popular Screwdriver

What is the most popular brand of screwdrivers in the world right now? How has this trend changed over the past 12 months? What are the newcomers? Who has been knocked off the top-10 list?

WHY DOES IT MATTER?

We're talking about a tool to get the job done. Would you use a flathead on a phillips screwdriver? What about trying to unscrew the proprietary tri-wing screws on Nintendo devices? How about security screws with the little nub in the center? And what about torx?

These questions all have the same simple answer: the best tool for the job.

So then, why is it that in the tech world there is a constant barrage of articles pitting programming language popularity against one-another? Shouldn't the case still be the best tool for the job?

OF COURSE!

I've personally worked in over 50 different computer languages in over 20 years of programming. To be blunt honest, I don't give a damn about popularity one bit. What language will solve my needs as simplistically as possible, while allowing for future expansion, compatibility, maintainability, and ease of use?

Recently, I've started a new software project, a service daemon that runs continuously monitoring text conversations for trends and allowing moderators to step in and block unsavory messages. This is a real-time daemon process. The kicker? This is being written entirely in PHP, a language not even remotely designed for this task. But then, WHY use it?

There are two parts to this answer.

Firstly, who remembers the early days of Node.js? Turning the slow and wonky language of JavaScript into a continuously running service daemon seemed like the most bizarre idea out there at the time. Now, today, it is one of the most widely used tools available. Node.js filled a gap that none other before it could. JavaScript was easy to write and maintain. There is no compilation process. There is no complex environment to setup. Simply install Node.js and execute your JavaScript files. This also turned out to be extremely well suited for a large number of persistent TCP connection, scaling very well. I'm now doing the same thing with PHP, turning a simple language into a full service daemon.

Secondly, and the main reason, is that I have over a decade worth of investment into libraries, especially ones around specific types of data processing. The data this service daemon handles is nearly identical to what these data processing libraries are intended to work with. All that was needed was to tokenize a couple strings, and then pass the results directly into the libraries. Everything else simply just WORKED!

This is what is most important: knowing your tools, knowing their capabilities, and knowing when they can be extended with ideas from other tools to make them better. In my case, daemonizing PHP turned out to be a trivial process that only took a single night of free time worth of research and development to get it right.

There are certainly more popular tools available. There are tools that already have pieces put together for the specific task that I'm working on. However, they lack support in other areas. On the areas that PHP is lacking, mainly daemonizing support, it was trivial to implement. Moving forward from that point was an absolute breeze. 

Remember that the next time someone attempts to convince you that your tools are wrong simply due to a popularity contest, ask them what brand of screwdrivers they own at home.