« November 2005 | Main | January 2006 »

December 29, 2005

Mastercard: Web and Marketing need to chat.

Ding ding ding.

Mastercard's South African website team and the marketing team are sorely in need of some liaison.

Mastercard's marketing people are currently spending a lot of money on a television campaign promoting a competition for a ZAR100 000 holiday, where you enter online. Nobody told their website team though. Their website has said "The page you have requested is unavailable at this time. We apologize for the inconvenience. Please try again later." for the last few days.


You would think this kind of marketing blunder would happen seldom, but seeing a properly functional website is now the exception rather than the rule.


Yes, websites do give problems from time to time, but here it's clear that everybody is on holiday, and nobody thought to take the laptop to keep tabs on things.

Time to get a new webmaster?

December 27, 2005

Get your Ofni here!

I'm still trying to work out whether this is a joke or not.


An old hole in the wall left by what was the DVD rental machine, is now an Info kiosk courtesy of Drake and Skull at the Standard Bank head office in Johannesburg, South Africa.


Or it could be an Ofni kiosk, not sure yet.

December 21, 2005

Sun Microsystems: Breaking the Stupid barrier

In what I do I get to evaluate a lot of software. I get to install it, test it, see if it meets the needs of my clients, and I get to decide whether the software is worth the bits it's written on. Disturbingly often, I run into software that just plain doesn't work. And in a depressingly large number of cases, the software doesn't work because the software design was just plain blindingly stupid.

Take Sun Microsystems' Java System Directory Server as an example. This software has been around in various forms for in excess of eight years, and can cost big bucks if installed on a large server. You would think they would have got it right by now. You would think that they got at least their install process right.


First, the installer

After waiting a day for the 120MB worth of download to come down (the Linux version, we're bandwidth challenged down this way), I unpack the software, and Lo! a program called "installer". I run it, and up comes a beautifully rendered splash screen and install wizard, Windows style. Oooh. Looks expensive.

It has to be said at this point that all I need is a small subsection of the package called the "server console". The directory server and the admin server components of this package are not needed on the machine I am doing the install on. So I make the mistake of selecting the "I would like to configure the servers later" option so helpfully provided to me by the installer, in the hope the installer will shut up and stop being helpful, and leave me to run the console program as I require. "So be it" says the installer, leaving me to go back to the safety of my command line.

The console runs

Running the console is easy. Just change to the correct directory and run ./startconsole. Like this:

[root@gatekeeper ~]# ./startconsole
Segmentation Fault

We're off to a great start.

Debug mode kicks in

"Segmentation fault" in it's most basic form can often be translated into English as "The programmer made the blindingly stupid assumption that whatever they tried to do would succeed, and so didn't bother actually writing the tiny bit of error checking code that would give the end user a clue as to what is wrong or how to fix it when what they tried to do failed".

At this point the typical end user is sunk. "Segmentation fault" is not only fatal to the program, but also meaningless to the end user. But then I write software, I can translate, let me see what I can do. Lets throw in a bit of strace to see what is going on. Running a program through strace reveals what a program is doing in the background. Usually the pattern in the program is revealed as "try do something; ooh, the system returned an error code, then *boom*'". In this case, it was looking for a directory that was supposed to form part of the install. I manually create a temporary symbolic link pointing at the most likely place, and voila! the segmentation fault is gone.

What does this mean? It means that nobody at Sun has ever tested the option in the installer that said "install the servers later". That's not all they haven't tested.

The console, take two

Let's try that again.


Another error message: Exception in thread "main" java.lang.NoClassDefFoundError:

Translated into English, this error means "part of the software is missing". Oops. Well at least "NoClassDefFoundError" gives you a small bit of a clue. To a Java person, the message is clearly understandable, so at least we're one rung further up the ladder than before.

Error messages like these mean only one course of action:

Google it

The Great Oracle Google, all Wise and Knowing, and with an optionally "Safe Browsing disabled" feature, revealed this link. A forum! Hosted by Sun! Surely, they would know.

Warning: mysql_connect(): Can't connect to MySQL server on '' (113) in /var/www/html/sjes/index.php on line 61

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /var/www/html/sjes/index.php on line 61

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in /var/www/html/sjes/index.php on line 61

Fatal error: SQL Error has occurred, please contact the administrator of the forum and have them review the forum's SQL query log in /var/www/html/sjes/index.php on line 49

Oh dear. Seems Sun's forums are down. I mailed the administrator, and got the following back:

Hello Graham,

the Supportform site is experiencing some hardware
issues. We hope to have this resolved as soon as

Sorry for the inconvience.

Fair enough. Servers give trouble from time to time. It happens. Never mind, the almighty Google cache comes to the rescue! The original forum entry at last! We're saved!

And the advice is simple, install the software again, this time configuring the servers. Oh well, as a temporary measure I can deal with the servers being there, I just won't start them up.

Back to the installer!

So, I run the installer again, and what do I get? It's like the Office Paperclip! The installer wants to be helpful! The installer points out that I have already installed the software. And it won't continue.


No worries, let me get rid of the software quickly:

[root@gatekeeper ~]# rm -rf /opt/sun
[root@gatekeeper ~]# ./installer

Ooh look. Pretty installer. Oh dear. The installer wants to be helpful. The installer is like the Office Paperclip. The installer just told me that the software is already installed. And it won't continue...


Let's sum up

The more picky^H^H^H^H^Hastute among you would have noticed that the advice in the forum (assuming that forum entry ever works again) suggested "Manually deleted each and every JES package and directory, and removed them from the "productregistry".". The key word here being "productregistry".

A "registry" in this case is simply "a place where settings are stored". Find and delete that registry, and we can start again from scratch. Oops, did we say "find the registry?".

Some more blindingly stupid programming from Sun. The standard way of handling a registry on a Unix box is to place it in the user's home directory, in a folder starting with a dot. Alternatively, if it's temporary as in this case, the registry might be found in a special directory on the machine specially set aside for temporary files, helpfully called /tmp.

And there are some registry directories! There in /tmp. They are a bunch of directories with the name "jes" (Java Enterprise System") So they get deleted.

Does it make a difference?


It's at this point where the end user is now frothing at the mouth. The ten minute job has just pushed through two hours, and yet again 3am looms closer on the clock dial. Another day, another software failure.

Is it the end user's fault? I dunno. If you iron sideways instead of forward and backward, does your iron fall to pieces? Does your car's doors fall off if you press the "lock car" button twice instead of once? Does your pen spontaneously leak out all the ink if it's used by a left handed person instead of a right handed person?

Many software engineers argue that they cannot check for all bugs. Not all problems can be gracefully handled. You could argue this point back and forth, but the simple underlying issue is that it's used as an excuse to leave the program unfinished.

"We can't" cry the programmers. "So we won't".

In this case it's perfectly logical for an install program to be run twice (if you run Windows, you're likely to run an installer more than twice). It is perfectly sane for a system whose directories have been physically deleted to say something other than "Compatible version already installed". And it is really blindingly stupid to tell a user "No products selected. Please select a product and click Next" when you've just greyed out the selection options, making it impossible for the user to select a product, and therefore continue.

Why pick on Sun? They were just the next in the long and depressing list of software manufacturers who let software out the door that shouldn't have left the developer's workstation. Alas, they won't be the last. :(

December 15, 2005

Flying Dutchman downgrades to Flying Blue

KLM Royal Dutch Airlines and Air France completed a merger, and what this meant was the combining of the KLM Flying Dutchman loyalty program with Air France Frequence Plus, called Flying Blue. From the marketing material, the program is "the most enriching frequent flyer programme possible". In reality, opportunities to both earn and spend miles have been virtually eliminated by the fine print. Flying Blue is a Flying Turkey.

When you fly a lot, the novelty of being on a big plane in a little seat with lots of people around you wears off pretty quickly. When you fly for over 24 hours from JNB to LAX, only to be searched for two hours because you look like a cocaine addict on detox, the novelty is officially over. Airline loyalty programs step in smartly: "Buy exclusively from our airline, and we will reward you with flight upgrades, a relaxing lounge to wait in at the airport, showers, and our staff will treat you like a human being". Sure, where do I sign.

Airlines reward frequent fliers using "tier" levels. The more you fly, the higher your tier, the more benefits you earn, the more comfortable your flying experience. KLM was a master at this, reserving benefits like shower access exclusively for frequent fliers. Their program was simple. If you flew the miles, you earned the miles, exceptions were only kept for youth fares and group fares. And you could swap the miles for upgrades or free flights, no problem, no fuss.

Not any more.

The new Flying Blue program has two key flaws. Earning miles is now restricted to a mere 25% on all but the most expensive of ticket classes, but no warning of this is given when you book the ticket, not even when you book via the Air France ticket website, nor are you given any choice in the online booking tool to pay a higher fare to earn the miles. It is also now no longer possible to book upgrade awards on any but the most expensive economy class tickets. So it's now harder to earn miles, and having earned them, harder to spend them.

So what does it mean to a former Flying Dutchman member? It's means you'll lose the tier level you have, and you'll find it impossible to use your miles to improve your travel experience. Which makes flying a pain in the backside.

According to a representative of Flying Blue who used to work for Frequence Plus, the airlines are "cost concious". In response, this former Flying Dutchman Platinum Elite member is "service concious". If you want me to fly exclusively with your airline, to choose potentially longer routes or pay potentially more expensive fares than the competition, then make it worth my while through meaningful and accessible service rewards. If you don't, then I go shopping elsewhere, which means the loyalty program has failed.

It's tragic to see a company like KLM whose strategy has been to "treat the customer right", fall for the cheap trick of making golden promises only to renege on them in the fine print.

Anyone know another airline with a meaningful loyalty program?