<-- home

Traits of my posture on software

This is an attempt to improve my actions over the opinions (that I’m about to elaborate here) in the unceasing pursue of becoming a more coherent person.

The web movement I fully embrace the open web movement.

Here are some reasons you should too, independently if you are a computer scientist or not. By doing so I completely refuse the native approach. So Android and IOS apps are totally incoherent with my visions - either for software creation or consuming.

Creation vs Consuming

I realize, from my software experience, a pattern emergence about creation and consuming of software. Practically all software I use to create content are hosted in my computer; in the other hand, basically all software I use to consume content is hosted in the web. This was exactly the vision of the ARPA’s pioneers: the Internet as a medium for researchers to share their knowledge and consume the others.

Having established this axiom, all consuming software hosted locally simply does not make sense; away with feed and mail readers, etc. The same applies to creation software online, like: Google docs, markdown editors, OpenShift etc.

Obviously there are exceptions, anyway this is a good trait to visualize if a software usage is going to endure or not.

Fundamental software vs Software Helpers

Another distinguishable trait is that all fundamental software must be at least Open-Source. By fundamental software I mean all those that without I would not be able to create or consume content that is important for me, or it would possible but in a poorly way in a point of not worthing the cost. Some examples are: operational systems, text editors and web browsers.

This kind of software certainly will never be crafted with mastery by a single person or organization; they must be managed as a community endeavor. This kind of software are like cathedrals - not in the exact same sense as Raymond’s - they are so because they are built in large periods of time, by different people, that probably will never meet each other, each one responsible by little improvements in the hole wonder. Vim, Firefox, the Linux Kernel fits perfectly on this case.

On the other hand are there the software helpers, they include the vast majority of software; can be online tools or local ones. This kind can be crafted as a one man concern or driven by a software vendors, or even a community one. This kind vary vastly over time and is improbable that one will ever became an specialist on them.

Mechanics over Politics

The last trait worth mentioning is mechanics over politics - also known (or at least a subset of) The Unix Way. This axiom basically states that politics of software tend to change over time, but mechanics usually remain the same. That said, is preferable to choose tools that maximize mechanics. And actually the better ones that achieve that are the ones that compromise by doing only one thing, and doing it well. Examples are: ack and grep for searching, sed for replacing, vim for text editing, etc.

So if you have a tool single tool for programming you are DEAD wrong (according to the Unix Way). Beyond the problem of this kind of solution has the tendency of changing over time, because they are not specialized, they will never be able to do certain things that the specialized ones does. For example, once you master ack you will never more have to bother about searching on text (programming or not), you will be a master of it; on the other hand, once you learn how to search on PHPStorm you will only be able to do simple searches on software projects files.

The Unix approach is a wisdom that we should embrace in each aspect of our computer lives. It really puts one beyond the crowd, as said somewhere by someone that I don’t quite remember: “button pushers are easy to find, craft your own tools!”. And the way of doing that is by knowing mechanics.

This is it. It seems that my software choices are quite aligned with my opinions. Currently I’m using Linux, Firefox, Vim, Ack and lots of shell scripting to do my job (this is obviously a simplification), its being a quite awesome experience. I really recommend you to take the time to align your software usage with these patterns if you thought they are somehow valuable.