The Week of Balls

Early this week, I’ve spent quite a bit of time knee deep in the guts of Phusion Passenger (which remains one of the best deployment strategies for Rack applications, in my mind), trying to work out why a particular application I’d been working on wouldn’t deploy properly after a few upgrades and optimisations on the development server. Ultimately, I found the problem, but for a few hours there there I thought I was losing my mind.

This lunchtime, I decided to pull out all of my instant messenger logs (being out of the office, my co-workers at SmartData and I do a lot of talking via an IM system). I’d had a hunch that, so far this week, “balls” would be amongst my most-frequently typed words, chiefly uttered as yet another hypothesis about why the development server wasn’t behaving itself was blown out of the water. A few regular expressions (to strip it down to just the words I typed) and a run through a word-counter, and I had some results!

Here’s my top words of the work week so far:

Position Word(s)
1 – 18 the, to, I, a, it, that, of, in, and, on, but, have, what, is, you, just, so, for
Positions 1 through 18 contain some of the most-common conjunctions and pronouns that I use on a day-to-day basis, as well as some common verbs. Nothing surprising there. So far, so good.
19 Rails
Between the projects I’ve been involved with and those my colleagues are working on, there’s been a lot of discussion about (Ruby on) Rails around the office so far this week.
20 IPN, do
One of the projects I’ve been working on this week has used a payment gateway with an Instant Payment Notification service, so it’s not surprising that “IPN” appeared in the top 20, too…
22 was, this
24 my, know, at
27 up, don’t
Over 50% of “don’t”s were immediately followed by “know”: Monday was one of those days.
29 I’m
30 yeah, be, [name of troublesome web app]
Not unexpectedly, the name of the project that caused so much confusion earlier this week came up more than a little.
33 there, one, if
36 we, see, problem, get balls, back, all
These seven words never all appeared in a sentence together, but I sort of wish that they had. There’s the key word – balls – apparently the joint 36th most-used word by me between Monday morning and Wednesday lunchtime.

Other common words this week so-far included “jQuery“, that great JavaScript library (there was some discussion about how we can best make use of the new features provided by version 1.5), “payment” (again; a lot of talk of payment processing, this week), “means” (mostly where I was explaining the results of my investigations into the troublesome server), “tried” (a disappointing-sounding word), “error” (I saw a few of those, to be sure!), and “somehow” (not a reassuring thing to catch yourself saying).

Also pretty common this week was “boiler”, as I explained to my workmates the saga of the boiler at my house, which broke down at the weekend, leaving us with no hot water nor heating until it was repaired on Tuesday. On the upside, I did get to poke around inside the boiler while the repairman was taking it to bits, and learned all kinds of fascinating things about the way that they work. So, a silver lining, there.

Bits of our boiler: the hip bone's connected to the... leg bone.

With the boiler fixed at home, and the development server fixed at work, it finally feels like this week’s turning into the right kind of week. But for a while there, it didn’t look certain!

×

The Modern Programmer’s Dictionary

In the field of  software development, there’s always something new to learn. Whether it’s a new language, framework, API or methodology, your need to study is never through – even if you’re a FORTRAN developer. But one of the more esoteric areas of your education will come in the form of the language programmers use, and I don’t mean programming languages.

And so I present to you a dictionary of modern programmer language (much of it shamelessly lifted from a discussion on Stack Overflow):

Ajah

Ajax, but returning HTML rather than XML (e.g. using jQuery‘s $.load method). Similarly, Ajaj, when you expect script to be returned (e.g. $.getScript).

Bicrement

Adding 2 to a number.

Boolean Zen

A principle of programming lacked by those who perform expressions to compare variables to boolean constants. For example, if (userHasLoggedIn == true) lacks Boolean Zen, because the == true at best does nothing at all, and at worst results in an unnecessary evaluation.

Classtrophobia

When someone chooses not to use the obvious object-oriented approach when it is available.

Common Law Feature

A bug in some software which has existed so long that it has begun to be depended upon by the users, who will complain loudly when it is “fixed”.

Doctype Decoration

In web development, the practice of putting a Doctype Declaration (e.g. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">) into the document despite not actually writing standards-compliant code. Often accompanied by putting a “Valid HTML & CSS” link on the site, but never actually checking that the site passes the validator’s test.

Egyptian Brackets

That style of coding which puts the opening brace { of a block on the same line as the expression (wrapped in parentheses) before it, e.g.:

if (expression){

So called because the ){ sort-of looks like a stereotypical ancient Egyptian pose, depending on your preferred coding font:

Floater

A bug that sits at the top of the bug tracking system, but nobody claims responsibility for it. Everybody just works around it.

Flock of Geese Code

A block of deeply-nested and heavily-indented code forming a tight V-shaped wedge. Often occurs when adding functionality to a complex block of evaluations, by a developer who hasn’t noticed that perhaps a return statement, exception-handling, the && operator or even a goto statement might be more appropriate! Especially poignant when using a bracketed-block language, where you’ll see a string of closing braces flying away at the end of the code.

Hi-Driven Development

A variety of printf-debugging where you pepper your code with alert('hi'); in order to find out where it’s going wrong, rather than breaking out a proper debugger. Other acceptable string literals include “hello”, “here”, “xyzzy”, etc.

Higgs-Bugson

A bug that you believe to exist based on sparse log data and theoretical examination, but you have no evidence to support the idea that it has ever actually been observed, except perhaps vague anecdotal evidence from users.

Hindenbug

A catastrophic bug resulting in a devastating loss (typically of data). “Oh, the humanity!”

headlessCamels

CamelCase words lacking a leading capital letter, as required or recommended for various languages, frameworks, and styles. As opposed to ProudCamels.

Heisenbug

First noticed on Usenet in the 80s, but still awesome: a bug that defies investigation because, during debugging (when you’re observing it), it behaves differently.

Hydra Code

Code so bug-riddled that killing one problem results in two more in it’s place, like the mythological Lernaean Hydra‘s many heads.

IRQed

Interrupted while you were trying to program. Not necessarily by somebody with an actual flag.

Loch Ness Monster Bug

An important bug, if ever it could be proven to exist. Only ever observed once or twice by users who were unable to back up or reproduce their claims. These users often go on to swear by the existence of the bug, blaming it for all kinds of unusual phenomena even in completely unrelated systems for years to come.

Ninja Comments

Comments which are so stealthy that you can’t see them at all. It’s almost as if the code weren’t documented at all!

NOPping

Like napping, but what programmers do while they’re downtiming while waiting for a computer to finish a task. Based on the NOOP or NOP operation found in many low-level languages.

NP Hilarious

An algorithm whose complexity is a joke, whether deliberately (e.g. Bogosort, but not Quantum Bogosort) or not.

Object Oriented Pasta

Spaghetti code wrapped up into classes to look like proper object-oriented code. Also Ravioli.

Pokémon Exception Handling

For when you positively, absolutely, “gotta catch ’em all.” I’m talking about hideous code like this:

try {
MessageBox.Show(message);
} catch(Exception exc) {
MessageBox.Show(exc.Message);
}

See also Try, Catch, Forget.

Refucktoring

As defined by Jason Gorman: refactoring code in such a way that you are now the only person capable of maintaining it. E.g. stripping all comments and whitespace from an arcane bit of code that you wrote in order to give yourself the illusion of being indispensable. Results in Mortgage Code (code which pays your mortgage because you can’t be fired while it exists).

Rubberducking

Sometimes you’re working on a problem and what you really need to do to solve it is to talk through the problem with somebody else. The other person doesn’t even need to be a developer: often, they don’t even need to listen – they just need to be there while you talk your way to your own solution. So much so, that they might as well be replaced with a rubber duck, sat atop your monitor. A name come up with by a programmer who apparently actually did this.

Scar Tissue

Commented-out blocks of old code, after refactoring, that have been checked in to the main codebase.

Shrug Report

A bug report which contains no reproducible information whatsoever, or is so unclear as to be ambiguous. Often contains phrases like “doesn’t work”, or doesn’t show how the anticipated behaviour differs from that observed (e.g. “when I click the print icon, the document is printed onto A4 paper from the feeder tray of the printer”).

Smug Report

A bug report submitted by a user who acts as if they know more about the system than the developer does.

Stringly-Typed

Use of strings for all kinds of inappropriate variables, like strings containing the words “true” and “false” for use in comparisons (not helped by the fact that some languages, like PHP, will let you get away with boolean comparisons on these). Also common among inexperience database developers, who’ll make an entire database of VARCHARs because they’re then able to store whatever they want in there, right?

Troolian Logic

Using a boolean variable to deliberately hold three states of information: true, false, and null. Often requires the use of the === operator to function properly.

Try, Catch, Forget

An exception handling strategy based purely on catching exceptions and then doing nothing with them. In other words, telling your program “if something goes wrong… carry on anyway!” Sometimes also seen as a Trynally – a block of code with a try and a finally block, but no catch blog at all. See also Pokémon Exception Handling.

Unicorny

Adjective used to describe a requested feature that’s so early in the planning stages it might as well be imaginary. Used by Yehuda Katz to describe some of Rails‘ upcoming features.

Yoda Conditions

Expressions that test for (literal == variable) rather than the more-common (variable == literal). The former is preferred by some programmers because it reduces the risk of accidentally using a single-equals rather than a double-equals (this mistake would produce a compiler error rather than simply misbehaving). So-called because it results in Yoda-like phraseology (e.g. “has no errors, the form does”).

×

Pudd

pudd /pʊd/ (verb, third-person singular simple present pudds, present participle pudding, simple past pudded, past participle pudd)

  1. (transitive) to cause an observer to interpret meaning where none exists
    “The beauty of the sunset pudds me into believing that it was put there specifically for me to enjoy.”
    “Interpreting the lyrics pudded Dan with ideas far beyond those intended by the songwriter.”


  2. (intransitive) to interpret meaning (esp. into the meaningless)
    “Though I don’t understand your grunting, I pudd that you are angry about something.”
    “Despite the emptiness of her life, Mary was pudding.”

pudd /pʊd/ (noun, pl. pudds)

  1. The meaning or purpose of something, as understood through individual interpretation, without specific indication any such meaning exists.
    “His pudd is that life is for having fun while it lasts.”
    Pudds are easy to find when you’re looking for them.”

You know how in How I Met Your Mother season 5, episode 3 (Robin 101), Ted says “Anything sounds weird if you say it a hundred times,” and proceeds to say the word “bowl” over and over until it begins to lose all significance for him, becoming a meaningless vocalisation? The phenomenon is called semantic satiation, and the other day I experienced something a little like it, and then – as is my way – went one step further.

For some reason – perhaps saturation of the word in my brain that mirrored the saturation of the food in my stomach at and following last weekend’s feast – I lost the meaning to the word “pudding”. I’d stare at it, but it didn’t make any sense – it was just a collection of letters. I’m sure you’ve experienced something similar at some point in your life.

But then an unusual thing happened: my brain began to see it in a different way, almost adding meaning to it. My imagination whirred. The part of my brain responsible for recognising the components of language, which has recently been spoiled by the regularity and predictability of Esperanto, began to see the word “pudding” as the present participle form of a verb, “to pudd”. I pudd, you pudded, we’re pudding, everybody pudds.

There’s no English verb, “to pudd”, that I’m aware of, so I’ve invented one. The definition is based on the experience that lead me to inventing it, and as a result it is at least a little bit recursive. The definition is as above. I’ve invented an accompanying derivative noun, too. I anticipate that the intransitive verb form is the most useful of the three definitions: in fact, I’ll be using it in this very article.

I don’t pudd that I was somehow supposed to do this; that my temporary inability to comprehend a word was destined to have me invent one: and if you’re pudding that right now, you’re mistaken. But if you must find pudd in this whole jolly story, perhaps you can just settle on that I am a fan of language, and at least a little bit eccentric. Isn’t that enough?

Foods That Begin With The Letter Q

To mark the second anniversary of QParty, I thought I’d cook Claire and I a meal consisting of foods that begin with the letter Q. How hard can it be, right? Turns out it’s more difficult than you might first expect.

My first thought was quails with qvark dumplings, but, would you believe it, both of these things turn out to be hard to get in Aberystwyth. Not wanting to have to resort to Quorn™, we ended up having a quirky mixture of foods that have probably never before been seen on the same plate:

  • A quarter-pounder burger
  • Pasta quills
  • Quesadillas
  • Quiche

I’d have liked to have put quinces in the desert somehow, or else flapjacks made from Quaker oats, but in the end we just had cherry pie and cream, which I insisted on calling queam.

Aside from those listed above, and quinoa, of course, what foods have I missed? Is there anything that you can eat that begins with a “Q” that I haven’t thought of?

How To Make Money, You Hobo – A Cautionary Tale

Last night I had a particularly vivid and unusual dream:

JTA and I were homeless and living on the streets of some foreign city (it was somewhat reminiscent of London, but most folks spoke French, so I guess it wasn’t); jobless, hungry, and generally sleeping in the central railway station, except when the police or station staff moved us on.

In order to make some money – and as much to give us something to do with our time and to keep our spirits up – we decided to put together a piece of musical street theatre. For some reason I was carrying a concertina (Claire‘s?) and was quite able to play it, and JTA had a reasonable singing voice, so we began to put together a cautionary tale that we would perform, telling the story of JTA’s life and how he got into the unfortunate position that we were now in.

In our story, JTA was bullied into going out and getting a job by his mother and sister in order to bring money into the family house, but he is lazy and he cannot hold down a job. Looking for a quick (and easy) solution, he turns to crime, and, after he accidentally murders a man he intended to rob, he flees the country to escape arrest.

Later, we went back and made some artistic adjustments to the story, in order to hammer some extra morals home – our adaptations included JTA’s introduction to a life of crime being through a shady character who accosted him on his way back from his first stable job (a cleaner at a zoo), and tempting him with “easier work,” and a change to the story of his family to make them seem less demanding and more tolerant (making his inability to support them comeacross as more shocking).

Through a variety of makeshift costume changes, I would play a number of secondary parts  – JTA’s mother (who didn’t look anything like his mother actually does, and even less so when played by me), an employer, the shady character – and narrate his downfall, while JTA would play himself: initially a cheery but lazy “country bumpkin” character who feels wronged by his bad luck and eventually comes to resent the world around him.

At the point I woke up, we were still tweaking songs and hadn’t actually performed it. But it had cheered us up no end.

There was a particular song I’ve been trying to remember a line from all morning. Early on, after JTA has “lost yet another job” and is walking home, we had a line that made a clever pun on English pronounciation of the French word emploi (employment) -much of the play was done bilingually – but all I can remember is the time signature of the song and the general theme. I remember that when I woke up, I knew what it was and thought “Wow; that’s brilliant – when I blog about this dream, I must include that!” But by the time I got to a computer I’d forgotten it. Ah well.

Most Annoying Habit In The World Ever

Statto‘s not the only one to get pissed off at some of the ways people abuse and misuse their language. I’m not perfect myself (contrary to my bedpartners’ claims), but there’s one form of linguistic butchery that really gets my goat.

The thing that really gets to me is the persistent and habitual misuse by some people of the word literally… to describe something which is not literally the case and is, in some cases, even a metaphor – quite the opposite of a literal. What these people mean to say, of course, is probably really (which has a double meaning – being real, which is virtually the same as literally – and as a term of exaggeration). Occasionally they mean particularly, in order to differentiate between other metaphor-inducing events. But usually, their needs would be serviced with a simple exclamation mark. Now it’s not to say that I haven’t made this mistake – I have – but somehow other people’s mental self-torture over their mistake never seems to atone for their sin.

Now comes a new torment, fresh from the habits of a co-worker of mine. He shall remain nameless, but how he infuriates me shall be known to all – having finally learnt what the word literally literally means (see what I did there?), he’s instead substituted it in his sentences with physically.

Sometimes, this would be okay – after all, sometimes he’s talking about things which are physical events and trying to exaggerate them. But he and I work together as software engineers, and so we spend a lot of time talking about virtual concepts such as variables and program code. Have you any idea how annoying it is to be stuck into a debugging session and be interrupted by a guy saying “I know I can use dot-clone, but can I physically copy an object structure in memory?”

It literally makes my blood boil.

April Fools Day

April Fools Day has always been an oppertunity for me to get back at the ineffective dickheads that are the management of Penbryn Hall at the University of Wales, Aberystwyth. This year was no exception. Building upon the success of my last big prank, Penbryn-Hall.co.uk, a spoof ‘official’ site which almost got me expelled from the hall, this year I worked with Kit, Bryn and Claire in order to cause yet more chaos.

We had a plan in mind already, but when Penbryn sent out the following message on the internal e-mail system, we couldn’t help but pounce on an oppertunity:

From: Eiryls Evans <eee@aber.ac.uk>
Date: 28/03/2003 13:46
To: hall-penb-4@aber.ac.uk
Subject: Re: Maintenance Checks

Dear Student

On Tuesday 1st and Wednesday 2nd April, Mark and I will be doing a maintenance inspection in student rooms.

This will involve checking for repairs and lights which are not working.
We will be starting in Block 1 at 10.30 am

If you have any problems e.g. desk lamp not working and would like a new bulb, please call at Reception.

Margaret Woodliff
Deputy Manager

A few things immediatley stand out in this e-mail. One is that the name at the bottom is not the same name as the person it appears to come from. A second is that it is not provided in Welsh, and is therefore in contravention of the University’s billingual policy…

…the third, and stupidest of the lot, is that they arranged to do room inspections on the first of April.

So, we thought… all we have to do is spread some more convincing (not difficult, considering) counter-publicity, stating that this e-mail was actually a student prank, and that there will not be any room inspections after all. We could even go so far as to state that we suspect that this e-mail may be the prelude to an attempt to gain unauthorised access to student’s study bedrooms. Mayhem in the making.

We came up with a poster that expressed pretty much this, and stuck copies up all over the hall. And it worked! People were absolutely convinced that our posters were real and the real e-mail was the hoax. In the end, the management had to spend their Sunday walking round from room-to-room knocking on student’s doors and assuring them that the e-mail was the genuine article. Oh; how I laughed.

The poster is available to download as an Adobe Acrobat file, below.

Download The Poster
Adobe Acrobat (PDF); 22KB.
The actual poster which was put up around Penbryn Hall for April Fools Day 2003.