Internet articles

DHL failure in usability  

A couple of weeks ago I ordered the latest third-generation of the DAS Keyboard – my second generation packed away back in Guernsey and the Alps-switched one from DSI incapable of reliably registering more than 2 keys on USB.

Being that I’m fixed on the European keyboard layout (our enter key is double height with the backslash moved down next to Z) I had to order from Germany, specifically the guys over at

When the keyboard hadn’t arrived a couple of weeks later I headed off to the tracking link at DHL Germany.

As a customer all I’m interested in is:

  • Where is the package now?
  • When will I have it?

A good developer would understand and deliver this. Instead DHL present:

Piece-number 9507xxxxxxx7
Addressee: Item destined for abroad
Status: Arrival at inward Office of Exchange in the Country of Destination
Status from: 19.08.08 17:07
Process: Arrival at inward Office of Exchange in the Country of Destination

Everything here screams bad systems, poor understanding and disregard for the customer. They aren’t giving the customer what they want, they’re giving the customer a little of what they have and are not even reinterpreting the data from the customers perspective.

This isn’t untypical but neither of my questions have been answered and the item is over the delivery times so I need to go further. Hitting the contact button next to the “piece-number” takes us to:

For further information, please call us on
0 18 05-345 22 55 *
(14 cent per minute within german fixed network)

Business hours:
Monday – Saturday between 7 a.m. and 10 p.m.
Sundays and public holidays between 9 a.m. and 6 p.m.
* only within Germany

or per contact form (except for investigation inquiries)

If your shipment has not arrived at the recipient within 6 days, you have the opportunity to fill out an  investigation inquiry dircectly via your PC.

Wow, so the primary point of contact for an international delivery is a number that can only be called from Germany. Useless.

So we can now choose a per-contact form or an investigation form. Okay, let’s go to the investigation form. Let’s try that.

The web page you would like to access cannot be viewed at this time.

We apologize for any inconvenience. Perhaps it is due to a connection problem, perhaps the link is no longer valid or you have directly selected a page that no longer exists in the specified directory

Wow, DHL Germany really don’t have things under control here. Let’s flip over to DHL’s main site and take it from there.

First of all we need to chose our country, currently Canada… Now let’s enter the reference number we’ve been using on DHL Germany’s web site and “Shipment/Waybill not found”.

Okay, I’m a persistent fellow, let’s give DHL Canada a call and find out what’s going on… I give the reference number to the woman at the other end and “that’s too long”. Hmm, tell her it works on DHL Germany web site, she goes to the web site and tries it out and confirms it does but that it doesn’t work on their system. She tries a few searches on my name, from Germany to Vancouver, nothing, nada, zip and suggests I try contacting DHL Germany or the sender to get a “proper” reference number.

The real icing on the cake of course is the “About DHL” page states:

DHL Express offers seamless service worldwide.

I can see a very big seam here between Germany and Canada.

Expertise around the globe.

Not much use when the people with that expertise are sat behind a number you can’t call from outside their country.

One world. One express and logistics company.

But not one system or tracking mechanism.

[)amien rises from the ashes (and how to flush your DNS on Windows & Mac)  

On Saturday an explosion at ISP ThePlanet took this site offline and it remained like that for 48 hours whilst power and structure were restored to the 4,000+ affected servers.

It’s unfortunate it happened when the site got some DotNetKicks and StumbleUpon love for Envy Code R but at least this isn’t a commercial venture losing money to such an incident – if it was I’d have a warm standby somewhere else – something many of ThePlanet’s commercial customers didn’t.

If downloads and images aren’t working for you then you’ll need to clear your DNS cache which may help the problem depending on the cache at your forwarder.

Windows ipconfig /flushdns
OS X Tiger lookupd -flushcache 
OS X Leopard dscacheutil -flushdns


WordPress 2.5 notes from the field  

It’s been a few weeks since I upgraded to WordPress 2.5 and whilst the upgrade went well it hasn’t been all plain sailing.

New and changed

Manage files removed

The Manage > Files administration function has been silently removed despite still appearing in the on-line documentation.

If you don’t have FTP access this was the only way to modify your .htaccess and other important files without installing additional software. I can understand such a powerful function could be abused but an option to turn it back on or even a warning about its removal in the upgrade notes/read-me would have been useful.

Hopefully somebody will repackage the old functionality into a plug-in.

New look administration

I’m not sold on the new administration theme look but Dean J Robinson has crafted a plug-in called Fluency that refines the styling.

Generally usability in the administration user interface is better, the write post screen makes a lot more sense and the category & tag management is more logical.

Auto update plug-ins

I love this new feature, it shows you when a new version of a plug-in is available and then lets you automatically update. It isn’t without issue however, specifically it:
Screen-shot of WordPress 2.5's automatic plug-in upgrade feature

  1. overwrites modified local versions without warning
  2. may go wrong (it “upgraded” my wp-PostViews to wp-DBManager)
  3. does not provide a roll-back or revert facility

Still it’s a v1 feature and I’m sure it’ll get some refinement in 2.6.


Live search broken (Redoable theme)

The Ajax-enabled live search is broken in Redoable although the normal search works. There have been no signs of an update in quite despite an un-patched HTML injection vulnerability.


This social bookmarking plug-in is broken in 2.5 and the author is too busy to fix it right now and the search for an alternative led me to Joost and his Sociable plug-in.

I’m not 100% happy with the output from Sociable right now but that can wait until my new theme is finished.

Other tweaks

These weren’t caused by the 2.5 upgrade but once you start messing with one thing there’s always that urge to fix other things you know aren’t right.

Google Analytics

Whilst testing my site I found XHTML compliance was broken. It turns out that Joost’s Google Analytics for WordPress incorrectly rewrites the hyperlinks when they parent another element such as an image. Putting on my PHP hacking hat I managed to fix it by editing the plug-in and changing the last line of ga_parse_link to:

return '<a '.$matches[1].'href="'.$matches[2].'//' .$matches[3].'"'.' '.$coolBit.$matches[4].'>'.$matches[5].'</a>';

Subscriber counts

My feed subscriber counts have been bugging me for a while as they jump up and down seemingly at random. In fact, it can be traced down to two things:

  1. If you base it on less than 5 days of activity you’ll get the weekend dip
    Solution: Count 7 days worth of individual subscribers
  2. Google Reader etc. sometimes stop passing the subscriber count from time to time
    Solution: Use single most recent multi-subscriber header for each service/feed in the last 30 days

If you want to do the same you need to edit the Feed Statistics plug-in and change the how_many_subscribers function to:

$q = "SELECT subscribers, CASE WHEN subscribers = 1 THEN identifier ELSE CONCAT(identifier, feed) END AS ident FROM ".$table_prefix."feed_subscribers  WHERE ((subscribers = 1 AND
	date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * get_option("feed_statistics_expiration_days")))."' ) OR 
	(subscribers = 1 AND LOCATE('###',identifier) != 0 AND 
	date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * get_option("feed_statistics_expiration_days") * 3))."' ) OR
	(subscribers > 1 AND date > '".date("Y-m-d H:i:s", time() - (60 * 60 * 24 * 30 * 3))."' ) )
	ORDER BY ident ASC, date DESC";

This should help but it’s not ideal with individual readers counted more than once if they change IP and groups counted as one if they are sharing an IP/NAT.


Calendar spam, the next nuisance?  

Tomorrow morning at 5am where I can enjoy an advanced fee scam! I’ve had these in email format before but never in my calendar…

Screen-shot of some spam in my calendar

Oddly there are no emails about this in my inbox and I sure didn’t tell it to add one to my calendar. As there is no ‘Report Spam’ link for calendar entries I had to return to calendar view, delete it from there and hope nothing else shows up.

Digital Inspiration also wrote about this and provide a link to Google’s spam reporting page.