Fatal Error

January 3, 2011

Computer programmers are supposed to be intelligent. So why do I continually come across illiterate, nonsensical error messages? I don’t know the answer to that, but this post is directed at programmers in an effort to get them to think about what they do and correct the problem. If you aren’t a programmer, feel free to do something else for now, normal service will be resumed soon.

Software companies spend millions on ‘useability’ research, getting their user interfaces as good as they possibly can, but the whole effect can be ruined by one application developer who is too lazy to do his job properly. Here are some things developers should think about when handling errors in their programs.

Who will be using the program?

Obviously error messages aimed at pre-school children will be very different from those aimed at post-graduate computer scientists. This is so obvious it shouldn’t need to be stated, but programmers seem not to be aware of this, or have forgotten it in the heat of the moment. Don’t put a message like this in a game, for example:

Error at mem 0xffff17ba: unphased bypass operation. Reset second pulse generator to continue.

(unless the game actually has something called a second pulse generator which the player could be expected to know how to reset.)

Who will read the message?

This is related to the preceeding question, but is not identical to it because often different error messages are generated for different audiences. I work for a large retailer writing and maintaining database applications that are used by employees in the our distribution centres. It is reasonable to display an error to the user of the system that looks like this:

Error 1234 has occurred. Please contact the support helpline on extension 5678.

The same program could have written a different error to a logfile for the support department:

Error 1234: Country code does not exist on the country table. Please escalate to the IT department.

Instead the following error message is both displayed to the user and written to the logfile:


Apart from the annoying capitalization and the adolescent abuse of punctuation marks, this error message is useless because it doesn’t tell anyone what the problem actually is, or how to solve it.

The user cannot read your mind.

A lot of error messages are generated because the user has entered data that is in a format that the programmer did not expect. This is entirely the programmer’s fault unless he made it clear in advance what he expects. For example, in the US dates are usually written in mm-dd-yyyy format, whereas in the rest of the civilized world they are written as dd/mm/yyyy. There can be few things as annoying as entering the date and a message pops up telling you that you have used the ‘wrong’ format. Why didn’t you tell the user in advance what the expected format is?

Date (dd/mm/yyyy):

Being proactive in letting the user know what you expect goes a long way towards reducing frustration.

Is the information you request necessary?

Here’s a gem:

You need to supply a fax number in order for your request not to receive fax notifications to be processed.

Why? This user probably doesn’t want fax notifications because he hasn’t got a fax machine. This programmer clearly hasn’t thought about what he is doing at all. Similarly, why should someone have to give his hat size in order to become a blood donor? If you really want to alienate your customers, invading their privacy in this fashion is a good way to go; if you want this information for some or other reason, like marketing perhaps, then by all means ask for it, but don’t insist that it is provided. I’ve ‘walked away’ from many ecommerce sites because of their insistence that I divulge impertinent information.

Don’t only give the error—give the solution

You’ve told the user about the problem, but what must he do to recover the situation? If you don’t tell him you’ve only done half the job.

Error: software patent violation. You cannot continue to run this program. Please write to your MP or Congressman to get software patents banned.

OK, that’s another hobby horse I don’t want to ride right now, perhaps another day, but the frustration level of not being able to do whatever it is you want to do because of an obscure software error without having the faintest idea of how to fix it is high. Inform the user–give him options that will allow him to progress, or at least recover to the state he was in before the error struck.

All these things can be summed up in two words: good manners. Treat your users with the respect they deserve as your customers. Your error messages should be pertinent, detailed, informative and allow your users to do their jobs as efficiently as possible. I leave you with this hilarious quotation from the Microsoft C# programming manual, which perhaps goes some way towards explaining why error messages are as bad as they are:

The ButtonProperty value is a string that represents the property name used by the installer to retrieve the value of the button group. This property can be referenced by custom launch conditions to make decisions concerning application installation. For example, if the ButtonProperty is set to Buttons, you create a launch condition that examines the value of the Buttons property. If the first radio button is selected, Buttons takes the value contained in the Button1Value property. Likewise, if the second radio button is selected, Buttons takes the value contained in the Button2Value property. Many of the customizable dialog boxes have similarly configurable properties, which allow you to create a rich and complex installation experience for your users.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License

Predictions for 2011

December 29, 2010

This is the time of year when psychics and other riff-raff of the mystical realms emerge from their malodorous lairs to make known their predictions of events for the coming year. I am not a psychic, but I am the proud owner of a second-hand crystal ball, into which I shall now gaze for your benefit.


My crystal ball reveals that the following people will shuffle off this mortal coil during 2011.

Aretha Franklin

Aretha Franklin (1942-2011): Her silver voice stilled at last, although still available on CD. Our loss is the gain of the choir invisible.

Stephen Hawking

Stephen Hawking (1942-2011): English physicist. He will finally succumb to motor neuron disease, but his radiation will go on.

Barry Ronge

Barry Ronge (?-2011): Movie critic. No more shall his fatuous features fill our telescreens, or his unctuous tones drip like rancid cooking oil from our radio loudspeakers, or his silly scribblings take up our newspaper columns. Yay.

Natural Disasters

There will be a powerful earthquake on the Pacific rim this year which will leave thousands homeless.

The year will begin and end with severe blizzards in the Northern hemisphere.

Hurricanes will ravage the Caribbean, Gulf of Mexico and the East coast of the USA in the third quarter of 2011.

My crystal ball is silent on the subject of meteor strikes or volcanic eruptions, so I presume there will be none.


New Zealand will break their world cup jinx and carry home the 2011 Rugby World Cup.

South Africa will regain the number one ranking in test cricket.

Western Province will win the Curry Cup for 2011.


I can’t seem to get anything in focus. It’s all just a blur of interchangeable figures talking incomprehensible gibberish. Therefore just more of what we had this year.


The following numbers will be drawn in the lottery during the course of the year: 3 5 8 13 21 34

We shall revisit these predictions at the end of next year to see how they stand up compared to those of the “real” psychics.

Chill out and have fun in the new year.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License

ABC of Netese

June 20, 2010

A is for AFAIK: As Far As I Know. What follows is invariably false.

B is for BSOD: Blue Screen Of Death. Common on Windows systems. Those who have “upgraded” to Windows 7 may now enjoy a Beige Screen of Death. I understand that Microsoft have trademarked “Burgundy Screen of Death”, “Buff Screen of Death” and “Brown Screen of Death” to cater for future releases.

C is for Crapplet: A badly-written, buggy computer application, like MS Office.


D is for DFTT: Don’t Feed The Trolls. A “troll” is anyone who disagrees with you in any internet forum; if you can’t think of a logical response to an argument, you just label the other person a “troll”.

E is for EOL: End Of Life. In non-Netese this condition is known as “death”.

F is for FUD: Fear, Uncertainty and Doubt. This refers to the deliberate spread of misinformation with a view to achieving some nefarious purpose. An example is Microsoft making vague threats of impending patent litigation against Linux businesses with the aim of dissuading people from using open source software. Uncertainty and doubt are tautological—one of them is redundant.

G is for Godwin’s Law: States that eventually, in any online discussion, someone will compare whatever is being discussed to Hitler or the Nazis. Once that happens the discussion is effectively at an end—no further useful contributions will be made.

H is for HAND: Have A Nice Day. Just as banal and meaningless on the internet as it is in real life.

I is for IANAL: This does not indicate a preference for some perverse sexual activity, it means I Am Not A Lawyer. Always followed by legal advice that is totally wrong and in some cases dangerous, such as: “IANAL but AFAIK(cf) if you plead guilty they can’t give you the death penalty.” Variations exist such as IANAD (I am not a doctor), IANACP (I am not a concert pianist) and so on.

J is for JAHOYFT: Just Ask Her Out, You Fucking Tool. What could possibly go wrong?

K is for KOTL: Kiss On The Lips. What it says, sometimes enlivened as KOTL(WT) (Kiss On The Lips (With Tongue)).

L is for LOL: Laugh Out Loud. Used by bores who enjoy laughing at their own jokes, or wish to inform their readers that their sense of humour is so deficient that they find something that is profoundly unfunny funny. Variations include ROTFLMAO (rolling on the floor laughing my arse off) and suchlike. Do not put LOL at the end of a tender epistle under the misapprehension that it means Lots Of Love—you will surely ruin the mood.

M is for MUSH: Multi-User Shared Hallucination. Netese for the phenomenon known for thousands of years as religion.

N is for NSFW: Not Safe for Work. Usually accompanies email attachments that are pornographic or otherwise iffy and that you would not want your boss to see. Or, to be more accurate, you wouldn’t want your boss to see you seeing.

O is for OMG: Oh My God. Used by those experiencing MUSH (cf).

P is for PEBKAC: Problem Exists Between Keyboard and Chair. A way of saying a problem is caused by user error without causing offense to the user. It assumes the user is too ignorant to know what the acronym means, which really causes offence if he does.

Q is for QFA: Quoted for Accuracy. Why?

R is for RTFM: Read the Fucking Manual. Aimed at those annoying individuals who are too lazy to figure anything out for themselves, but will expect others to go out of their way to give assistance. Yes, I’m talking about you; you know who you are.

S is for SWIM: Someone Who Isn’t Me. A short, snappy way of saying someone else.

T is for TANSTAAFL: There Aint No Such Thing As A Free Lunch. There is, you know. You just have to know where to look and hone those mooching skills.

U is for UTFSE: Use The Fucking Search Engine. This comes into its own when you have told someone to RTFM (cf) and they tell you that the answer they want isn’t in TFM, then you tell them to UTFSE, Which is when they bleat that how to use the search engine was their original question, at which point you pack your bags and leave town.

V is for VEG: Very Evil Grin. Stay away from people who perpetrate this.

W is for WUBU2: What Have You Been Up To. Almost invariably used in conjunction with a VEG (cf). The correct response to this piece of impertinence is STFU & MYOB.

X is for XIT: Exit, used by people too lazy to type the letter “E”.

Y is for YTMND: You’re The Man Now, Dog. What you say to your dog when you want him to start paying the mortgage, mowing the lawn and so on. His response is invariably to ROTFLHAO.

Z is for ZOMG: An extreme form of OMG (cf) used by Moonies, Scientologists, Catholics, Protestants, Muslims, Jews and other assorted nutcases.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License.

Private Bitch

January 18, 2010

Privacy no longer exists. With cheap data storage and lightning fast computer processing private companies and government agencies are able to assemble dossiers on you whose details, were you aware of them, would make your eyebrows curl. Every time you shop using a credit or store card the details of your purchase are recorded against your name for use in targeted advertising, or anything else the diabolical retailer mind can think of. If you visit iffy websites don’t do it while you’re logged into any of your Google accounts (Gmail, Google apps, Google Wave &c) or the web addresses will be recorded against your name by Google. Yes, they have a “privacy policy” which says they won’t divulge the details to anyone else unless they are asked for them by the rozzers or anyone else, really.

This may sound paranoid, but you cannot assume anything is private. When you are talking to someone on the telephone you have to assume your conversation is being monitored (ask Prince Charles if you don’t believe me). Your emails are subject to audit by your ISP and any government agency that asks for them. Every time you leave your home you are likely to be watched on security cameras and your voice is recorded every time you ring a call centre.

What really astounds me, though, is that people don’t care. They hand over all their details without turning a hair. I recently wanted to move my cell phone contract from one service provider to another. I couldn’t believe my ears when they asked for three months’ bank statements. Er, excuse me, bank statements are confidential information. Even (especially) my wife doesn’t have access to them, why should I give them to a bunch of strangers?

I am part owner of a small business and on occasion I trot around the neighbourhood putting advertising flyers in mailboxes. (Yes, I am one of those annoying people. If you don’t wish to know of the enormous benefits that could be yours for a very reasonable price were you to become one of my happy customers, all you need do is put a notice on your mailbox reading “No Junk Mail” and that will be respected, even though I don’t regard my flyers as junk.) What amazes me is that so few people secure their mailbox in any way. I see boxes stuffed with bills, credit card statements, tax assessments and so on all conveniently available for the taking by anyone who wants to steal your identity. People just don’t seem to realize that information is a valuable commodity.

And what about all those forms we have to fill in all the time if we want to get anything done? All want impertinent information. Why should I supply my date of birth in order to purchase a CD online? My policy is to leave out information that is not required, and to lie about anything that is required but not essential to the transaction. I have a second email address for “junk” transactions; my “real” email address is given only to family and friends. I use false names wherever possible (Margaret Thatcher is one of my favourites), fake phone numbers and addresses and if they come up with “This field is required” in something that really isn’t any of their business, I fill in “None of your fucking business”.

I’m seriously considering getting myself a second identity (I may steal it from you), building up a collection of false beards and moving to my own private island staffed with robots (the one Scaramanga had in the James Bond movie would be ideal) and opting out of the plexiglass world.

Creative Commons License
Grumpy Old Man by Mark Widdicombe is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License.