8 January 2014
Facts and Myths of being a (Software) Gunslinger

TL;DR: Software gunslinging isn’t (by far) a dream job.

Being a (software) gunslinger is terrible. There, I said it. Still today, after all that’s been said, there’s the perception that it’s a dream job, full of freedom and never-ending happiness. Most of those ideas are myths, and just a handful ones are true.

Let’s define (software) gunslinger first: a (mostly) independent (software) worker dealing with projects for a (mostly) limited timeframe, setting its own price per hour and/or goal, and (mostly) working completely on his own, (most likely) in a remote fashion.

There’s several, real or truly imaginary, additions to that.

Read More

24 November 2013
On the regular folk learning about the wonders of programming

TL;DR: Keep reading if you don’t mind some cursing about teaching normal people how to code. It may not be the kind of cursing you’re expecting, though.

There seems to be very strong antagonist positions about teaching programming to not technically-aware folk. Depending on your point of view, that’s the greatest thing since the invention of printing, or worse than a nuclear armageddon.

Gunslinger peers tend to be just infuriated by it. Among their reasons are that:

  • Technically-unskilled people don’t need to know how to code at all, as programmers don’t need to know how to fix a broken pipe, they just call a plumber.
  • This is just a push from corporate management and recruitment suits to fill the big gaps in “engineering resources”, because there’s high demand everywhere.
  • The same corporate plot is also intended to cut jobs, displace capable people and replace them with cheaper coders.
  • There’s already too many mediocre software “engineers”.
  • Many, many capable engineers are mostly self-taught, and they’re constantly learning, everyone should be able to do the same.
  • Formal education in computer science is so complex that it’s only for universities and above.
  • Online programming courses are silly, they just scratch the surface, and you’re set to start with programming the wrong way.

I may agree with some of those ideas in a broad sense, but I don’t consider them valid reasons for anything. While online tools and courses -which I don’t care about- seem to be blooming, I’m interested in implementing the more classical, usually ignored approach: include programming in formal education — elementary and high school. Give it the same status that math, physics or literature have.

Read More

24 April 2013
On the hypocritical nature of self-entitled entrepreneurship

TL;DR: In software, current meaning of the word “entrepreneur” is generally tied to an non-technical hypocrite.

In our daily gunslinging tasks, we hired keyboards have to deal with many self-entitled “entrepreneurs” 1. Without putting everyone on the same basket, I’m going to focus on (what seems to be) the most prolific kind: non-technical (or, in all fairness, barely technical) ones.

They usually share the same speech, with small variations, along the following:

"I want my idea to become a reality, change the world for the better, and get rich in the process".

Let’s dissect the phrase. It is, at the same time, so widespread and hypocritical that I can barely hear it anymore without laughing maniacally or being overwhelmed by profound, true gunslinger hatred. Still, people I talk to is happy to say the words in a daily basis without the most basic sense of absurdity.

Read More

17 April 2013
PHP is meant to die, continued

TL;DR: PHP is still a poor choice for continually-running processes. See this post for context. Read on for more proof.

There’s been some reaction to the previous entry. Some people agreed, mostly seasoned PHP folks, some others just didn’t. Yeah, apparently it pleased or infuriated more than two folks in the entire Internet.

First and foremost, a correction to previous statements: PHP’s 5.3+ enables garbage collection by default, it’s an opt-out feature, not opt-in. So it’s probably enabled in all your scripts, even the fast-dying ones, if your PHP version is recent enough and you didn’t do anything funny to your php.ini file.

Yes, I already acknowledged that PHP has a garbage collection implementation starting 5.3.0 and up (opt-in or opt-out, that’s not the problem). I also acknowledge that garbage collection works, and is able to take care of most circular references just fine. However, if you’re one of the many that think “hey, no one should be using anything below PHP 5.4 nowadays”, you’re clearly too young to remember how much blood, sweat and years it took to get rid of PHP 4, even when PHP 5.0 was reaching end-of-life, 5.1 was healthy, and 5.2 was already in the works.

Anyway, as previously stated too, garbage collection is a great thing, but not enough for PHP. It’s a borrowed feature that does not play well with old fundamental decisions inherited from the original design. Garbage collection is not a magical solution for every problem, like many tried to argue about. Let’s illustrate with another example.

Read More

4 April 2013
PHP is meant to die

Disclaimer: I’ve got 10+ years on my back as a PHP developer. I started using it when PHP4 was a little boy and PHP5 only a dream in Zend’s mind. I did a lot with it, loved it, cursed it, and saw it grow and evolve, sometimes with great shame. I still use it for some legacy projects, but it’s been a while since it’s not the language of my choice anymore. Also, I’m not affiliated with any framework or tool mentioned here.

TL;DR: If your project will rely on continually-running processes to function, avoid PHP.

In my opinion, a lot of the hatred that PHP receives misses the utter basic point: PHP is meant to die. It doesn’t mean that a perfectly capable (to some extent) programming language will disappear into nothingness, it just means that your PHP code can’t run forever. Now, 13 years after the first official release in 2000, that concept still looks valid to me.

Read More