Scarcity is no excuse for being a dick

This is going to be one of those cathartic posts. It will appear to be laden with humble-brags, but I’m trying to get some thoughts out of my head. Bear with me here.

My father is a 61-year old handyman. He works hard every day, breaks a sweat on an hourly basis. He pinched a nerve in his back once, and another time damn-near cut three of his fingers off while repairing a forklift.

I’m 25, and I sit in an air-conditioned office for 10 hours a day.
My salary is higher than my father’s has ever been.

I’m a member of a modern, snot-nosed, entitled minority called “computer programmers”. We are highly scarce and highly in-demand. We skip merrily from opportunity to opportunity, headhunted for our abilities and offered better money, better benefits and better working conditions than our parents have ever enjoyed. Yeah, we’re those punks that respond to offers of gainful employment by recruiters with tired exasperation, with condescension and – more-often-than-not – a smug attitude. We work in an ever-evolving industry that only knows one constant – growth, and it’s trending upwards. We’re in pretty-much one of the only future-proof industries out there.

I am filled with deep shame sometimes to call myself a member of this minority.
Scarcity is no excuse for being a dick.

Over the past few years, I’ve encountered many programmers who have this almost sadistic attitude towards recruiters and the Human Resources faculty in general. I have seen LinkedIn profiles openly requesting to not be “bothered” by recruiters. I have spoken to developers who have claimed to ridicule recruiters for their “n00bish” mistakes – for offering Visual Basic positions to seasoned enterprise software developers, and things of that sort. I have been one of these people in the past. I think we all need to take a step back and get over ourselves.

I think that we forget what a cosmic accident of history it is that we are where we are. We should all be, daily, contemplating our incredible fortune that our buttocks are not allergic to butter; we have all fallen into it ass-first.

When did we start to feel that we had the right to be such spoilt brats, that take such glee in vanquishing the innumerable invitations on LinkedIn from recruiters who want nothing other than to give us amazing jobs?!

I received this email a little while ago from the HR Manager at a company I had once wanted to work for, in Germany – a country where I would love to live & work in one day:


It’s emails like this that make me hope that I never forget what an ineffably lucky bunch of spoilt cunts we have all become.

I responded (I feel) quite politely and cordially, saying that I was not interested in the position at present, and thanking the person for their kind offer. I’m really happy where I am now and can’t imagine working anywhere else for a good long while. It made me reflect on what a privileged life we as programmers live, and we’re sometimes incredibly shitty human-beings because of it.

I’ll say it again: Scarcity is no excuse for being a dick.


I love what I do. I deeply love coding. I think about coding when I’m making the beast with two backs. I think about code in the shower, and in the car. I code in my free time. I never want this to end, but one day it will – and I hope then that those same recruiters will still take my calls if I’m looking for handyman work at 61.

Being a programmer in 2014 is like being a happily-married man, imprisoned in a bordello. There is so much temptation around, and it’s really exciting – and sometimes a little intimidating. It’s a truly wonderful, wonderful thing, this thing of ours – and I wouldn’t want to be doing anything else, ever.

Long live coding! Be kind to each other.

Announcing Infomaniac-AMF

I recently gave a talk at the second PHPSouthAfrica conference in my hometown, Johannesburg. The topic of the talk was AMF – a binary data serialization protocol; it is a data format that was very popular back with the Flash kiddies (full disclosure: I was such a kiddie), and I wanted to show it off to the larger PHP community. It has some wonderful features such as support for a wider range of data-types, as well as object, string & array references (even circular references!) and many other little goodies.

It is with great pleasure that I announce the release of two new open-source projects under the name of Infomaniac-AMF:

These two libraries have been built to be completely symmetric, and will allow you to use the AMF data format in your modern web applications. It is true that other libraries for both PHP & JavaScript exist which can produce and process AMF-encoded data, but – as far as I am aware – no-one has built two libraries that are completely interoperable between client & server; which is what Infomaniac-AMF promises to do.

There is a detailed README in both projects to get you started & convinced, and I am really hoping some of you will find this interesting enough to collaborate with me.

There is also a sample project which I built for the conference, and demoed live – it is essentially a Lanyrd clone and is built with Doctrine2, Laravel 4 & AngularJS.

Adding Doctrine2 binary as Command Line Tool in PHPStorm 6

If you’re loving PHPStorm 6 like I am, you’ll have seen that you can create your own Command-Line Tools. These are basically just in-IDE command aliases that make your life just a little bit simpler.

The Composer support is excellent – if a little flaky to setup sometimes, and I wanted to do something similar for Doctrine2.

PHPStorm 6 does not come with support for the Doctrine2 command-line tool out of the box like Composer, so you’ve got to open up the Preferences, navigate to Command Line Tool Support and hit the little + icon to create a new Custom tool.



…and then fill in the values as have here:


The $ProjectFileDir$ expression is a macro that can be used in PHPStorm and other JetBrains products.

All that’s left to do is try it out!
Pull up your Command Line Tools Console  in PHPStorm 6 and type “doctrine list


…and here’s the output:



Small update to Spore

At the polite behest of one of Spore‘s users, I’ve pushed a small change to the library:


What this change will allow you to do is to check the Request and Response objects directly in the authCallback function. This can come in handy when checking rate-limiting headers in the HTTP request, or even denying data to users who stubbornly continue to use IE6!

If you haven’t heard about Spore – here’s a quick summary: Spore is a small library which rests on the mighty (if slight) shoulders of Slim framework. It provides some very handy features, such as:

  • Composer integration
  • Annotation-based request routing
  • First class templating support
  • Automatic deserialization and serialization of data
  • Simple, but effective authorization mechanism
  • Minimal restrictions
  • Easily configurable
  • Simple to use

There’s a metric fuck-tonne of documentation available (not really, I just like mixing SI units and coitus):


New blog

This is my new blog! Hope you find some of it useful