Hex Code

Well I suppose I’m a programmer now. Of all things.

It’s not what I expected, to be honest. I still associate the word with men in lab coats and bow ties in front of banks of flickering lights, doing arcane things at rattly teleprinter terminals. Something to do with rockets probably. Robots even. And punched paper tape!


Punched paper tape was amazing, I used to collect discarded lengths of it from offices where my mother worked as a temp. Its perforated patterns are the perfect metaphor for the state of computing when I was a child. Pretty, delicate, clearly meaningful and yet profoundly mysterious.

These days? It’s writing really. You’re using language, a kind of language, to convey your intended meaning. Like much writing it’s part creativity, part drudgery and repetition. Long-separated senses of the word “hack” meet by surprise in a foreign city.

And like their natural counterparts, programming languages are a pretty diverse bunch. But you’ll hardly find two more different than the ones I just certified in – SQL and PHP. They’re like Choctaw and Chinese. Or more helpfully, Latin and English. One is (relatively) ancient, dusty and rule-bound, the other young and a bit anarchic.

Strangely though, it’s the old one that was actually designed to be English-like. And in the time of the lab coats I guess it seemed like it. A SQL command is called a “statement”, and is constructed much like a sentence:

Select roses, tulips from basket join bouquet where colour = "red"

Sounds almost like the real thing, doesn’t it? But…

Select camel, serendipity from D547 join moonslip where fandango = "buttocks"

…is equally meaningful. The resemblance to human language is superficial for a reason: In SQL there is only a handful of verbs, representing the very limited set of things you can do with items in a database. Its ‘nouns’ are little more than arbitrary labels. Real language is almost immeasurably more complex than that.

The thing that makes SQL seem completely unnatural though is its obsession with data types. These are important up to a point of course. You need to know what kind of data you’re dealing with, whether it’s numbers, “string” (which is what programmers like to call written words), dates and times, or more exotic stuff. You can’t add a word to a number or multiply a date.

But in SQL these break down into seemingly endless subtypes: For a number you need to know what the base is, whether it has a decimal point, if it’s positive or negative. With words it matters what the language is so that the right characters are used, plus you need to know what alphabetical order is for those characters, whether case is significant and so on. Dates and times are available in a mind-bending range of formats, depending on, say, whether you’re more interested in events since 1,000 AD or 1970.

Where it gets ludicrous is that there are still further subdivisions, into units of different size. (My favourite is called the Binary Large Object – or for short, BLOB.) The idea was to set aside only as much space as your data is going to need. If you have a column wide enough for six-figure sums and then enter numbers in the hundreds, you’re effectively saving blank decimal places to your hard disk. In the ’70s, disks were expensive. There was no room for empty space.

Compared to this, PHP seems like it was invented by hippoes. (I meant to say hippies there but I’m going to leave the typo in.) It’s just so… relaxed, skipping lightly over the very things that make SQL tedious. It seems to just guess what your data type ought to be. “You’re trying to add a number and a letter together? No problem, let’s see what happens.”

What makes it even more like human language though is the fact that it’s “Object Oriented”. This is a big idea so I’ll leave the details for another post, but suffice it to say that like real nouns, an object in OO programming is meant to represent something in the world. As such it comes with its associated “verbs” (known as methods) that represent the actions characteristic of that object. So the things that exist in your program have hidden powers that you can call upon if you know the right words. Cool.

Perhaps the best comparison then is not with different natural languages, but with different specialised jargon. Moving from SQL to PHP feels a lot like leaving contract law to take up alchemy.

I Get Certified

2015-07-22 22.36.53
I’m too wrecked to go out so I am having a small party at home. Here is my invited guest.

As of 5.15 pm today, I am an Oracle-certified MySQL developer!

Somewhere in the distance, a dog barks.

Yeah, OK. Boasts that you have to explain are not good boasts. For the last four months I have been studying hard for a qualification in something most people have never even heard of.

Which is a shame, because it is actually the secret language that runs the world.

But first, let me tell you about my day. This was… a tough day. Not only did I take a two and a half hour professional exam, I attended a two hour public meeting right after. The way it began though – well that was even worse.

You know when you know you’re doing something wrong? I mean, when the front of your mind thinks everything’s all right but the back of your brain is waving frantically to get your attention? The feeling you’re forgetting something that you decide to ignore. The nagging awareness that you probably shouldn’t blog while drinking a bottle of wine. Sometimes you know deep down that you’re making a mistake but it just doesn’t seem to reach the surface. So yesterday evening I was being very organised for my exam. I did all the little things, like making sure the car had petrol and water – even that the windscreen washers were working properly. Yet even as I did it I thought to myself: “You know, there’s a danger here. This is breaking my routine. If I break my routine to do all these checks, I could forget one of the important things I do routinely. Fortunately though, I haven’t forgotten anything this time.”

So I finished checking the windscreen washers and went peacefully to bed. Leaving the the car electrics switched on.

This morning an hour went on trying to charge, shove, and sometimes swear the battery back into life before I eventually got a jump start off a neighbour; hardly the calm and collected pre-exam preparation they recommend. Perhaps it was for the best though. Had I time I would probably have indulged in some last-minute panicky “study” as likely to confuse as to clarify. And the record shows I actually seem to do better in exams when faced with non-starting cars. It wasn’t déjà vu, this did happen before.

Outside the venue I met up with Nick and Diarmuid, two of the best students in the class, and was relieved to find that they seemed at least as nervous as me. Because we were (for no readily apparent reason) doing the exam in batches of three, we had feedback from those who sat it earlier in the day. The news was… mixed. On one hand, almost everyone so far had passed. On the other, they had all said it was harder than they’d expected. You can imagine which of those hands seemed more significant to three people about to walk into an exam.

Or about to try. We went to the front door only to find a sign saying to use the side door. We went to the side door only to find it locked. We rang the intercom, only to get an answering machine. I hope I didn’t actually leave the message that went through my head at that point.

But they let us in eventually, and when they’d done with mugshots and fingerprinting (well, almost) they sat us at the consoles. The exam is a computer-based, multiple choice affair not dissimilar to the driving theory test. Except instead of being about stuff everyone needs to know, it’s about stuff nobody in their right mind wants to even think about. I had a tense moment when the very first question was completely unintelligible to me, another when I came to one that, I will swear to my dying day, did not have any possible correct answer. But mostly I felt like I was doing OK. Afterwards Mark our tutor asked me on Facebook how it had gone. I said I thought I’d got about 3 in 4. When the results came through – in only about 15 minutes, mercifully – it transpired that I had 78%. The passing grade is 64. I am a Certified MySQL Developer.

Which is what, exactly?

It’s like this. Once all the important knowledge was kept in wise old people. That’s what the word “wizard” originally meant: Old guy who knows things. Later, with the invention of writing, far more information could be kept within books. But in this information age in which we’re living, the vast (vast vast) majority is kept in databases. They are the electric libraries, the quiet machines behind the scenes of every modern technomarvel. And that’s how I ended up here, basically. MySQL is as important to modern Web design as HTML itself.

And on the way home I attended a public meeting about technology and the arts, part of the campaign to make Galway the European Capital of Culture in 2020. Asked for suggestions on the theme of a digital city, I sketched out an idea for an app so spontaneously that it took even me by surprise. A good idea? I can’t tell. I was very tired by then. Some great ideas come when you’re tired, but so do some great hallucinations. I can only say that it’s simple – so simple that it has to be either brilliant or obvious. The difference, I guess, being whether someone else has done it already. Such is the fine line between stupid and clever.

But it would be great to do, I hope they take me up on it. And why wouldn’t they? I’m an Oracle certified database developer. That’s like a wizard from the future.

Picture Puzzle

Sources: Left Irish Left Review, Right IMF

OK it’s way past my bedtime but I couldn’t resist showing you this. I was researching something when I was struck by the similarity between these two diagrams. On the left we have income inequality – roughly speaking, the difference between the richest and the poorest fifth of each society. On the right we have the amount of debt that countries across the EU have gotten into in the last few years.

Broadly speaking, it’s the most unequal countries that are also the most indebted. How does that happen? The ‘liberalisation’ of many economies in the past decades was ostensibly meant to make them richer. The effect though has been very different. Low-tax countries are having to borrow in order to meet expenditure, particularly when times get tough. Meanwhile their lack of redistribution means that citizens are encouraged to borrow in order to compete socially – sometimes even to meet basic expenses. This private indebtedness tends quickly to become public when lenders collapse.

In short, trickle-down economics is really trickle-away. Though a minority of individuals within them are of course better off, countries that cut back on tax and expenditure end up impoverished over all. People seem to vote for such policies in the optimistic hope that they will somehow get into that ever smaller, ever richer minority. The odds suggest that they should buy lottery tickets instead.



So what was the Vatican’s response to Ireland’s historic vote for marriage equality?

Slightly muted, somewhat bitter, and more than a little enlightening.

The Pope himself said nothing publically, presumably not to appear fallible. It was left to close deputy Cardinal Pietro Parolin to make this odd but revealing pronouncement:

The Irish vote, he declared, was a “defeat for humanity”.

The decision of a majority to accept and cherish a minority? To me, that is the triumph of all that is best about people, humanity at its absolute finest. It seems that when the Catholic Church uses the word “humanity” it means something quite different.

Itself, I suspect.

A 2,000 year old all-male global institution. For sure that’s an organism of a sort, able to preserve and replicate itself successfully. But its goals and its needs, its triumphs and defeats, are not humanity’s. Life, but not as we know it.