May 27, 2010

Java Logging Frameworks Must Die

Last week I performed a release of some client software, the change was small and discrete: a move from Torque v3.2 to Torque v3.3, and a small database schema change. That was it.

Then I get the call: their archive isn't working, can I investigate. Their archive is a web application frontend to an IMAP server storing archived email data. Simple, effective, and as of last week, broken.

Dig, dig, Google, dig.

Eventually I find the culprit: Torque was depending on an obscure logging framework, which was in turn depending transitively on an obscure incomplete implementation of javamail called geronimo-spec-javamail. This was pulled in alongside javamail as shipped by Sun.

Two competing incompatible implementations of javamail in the same application in the world of Java == fail.

Fast forward a week. Another application that is up and running fine is suddenly reported as not working. All the application does is create an email with a velocity template, and send the mail. That's it. But Velocity depends transitively on an obscure logging framework, which recently decided for no clear reason would not longer work from within a web application.

When you spend more time tracking down obscure sudden failure cases than you do producing actual code, you know you've reached the tipping point of failure.

Java logging frameworks must die.

Continue reading "Java Logging Frameworks Must Die" »

November 26, 2008

"Optional" USB Charging?

The top troubleshooting issue listed on the Sony Ericsson C905 support page is "I can't turn the phone on", and it is indeed one of the biggest flaws with this phone.

Any device whose "on" switch doesn't work, is a broken device indeed.

But this alone doesn't make it worthy of mention on Stupid. That honour is bestowed on the following advice:

Most new phones allow charging with the USB cable. With some phones, you also have the option to select whether you want to allow USB charging. If you're trying to charge with USB, make sure that your phone supports USB charging and that the option is switched on.

You have a phone with a potentially flat or faulty battery that won't turn on. You have a USB cable, but you cannot be sure that the USB cable is actually charging the phone, because the option to be sure is only accessible when the phone is on.


June 7, 2008

The Fuse Test

The length of the fuse on a software package is the amount of time in seconds or minutes between the start of software installation, and the point at which the end user utters their first expletive.

Ever had one of those days when you need to install a software package, and within minutes of the download, your blood is boiling so much that you want to hurl your monitor out of the window?

If you have, chances are the software you are using has failed the Fuse Test, and chances are good that you will end up throwing the software out in disgust and trying something else.

So, software developers: how do you avoid lighting the fuse and giving your end users a heart attack? Read and learn.

Continue reading "The Fuse Test" »

December 21, 2007

Eclipse and Java Web Start

Ever had one of those days where the universe is adamant that your problem will not be solved?

If you want such a day, try and get an Eclipse RCP application to deploy via Java Web Start.

If you would like to know all the reasons why your attempt to get this working will fail, read on.

Continue reading "Eclipse and Java Web Start" »

December 18, 2007

A Boost of Stupidity

Advertised as "giving back" to the software development community, a freely downloadable Windows based installer is available of the Boost C/C++ library from here.

The installer contains a fatal flaw: it requires direct access to the internet, with no support for a proxy, before it will work properly. That pretty much renders the software useless in virtually all practical environments.

Installers that download from the net are by and large an exercise in making a simple problem into an unnecessarily complicated one, and are generally just dumb. If you are writing an installer, and you want your installer to access the net, please just don't, for sake of the rest of us with real work to do.

July 26, 2007

Apple TV Rescued: iTunes Plus

Shortly after the drama getting the Apple TV to play DRM encoded content had played out, I discovered iTunes Plus from Apple.

iTunes Plus offers higher quality encoded digital music, with no DRM, for an extra 30c per song.

Paid the extra money within a heartbeat, and the DRM worries are a thing of the past.

I can now play the music I paid for.

July 5, 2007

Apple TV and the DRM Achilles Heel

Having managed to get myself an Apple TV a few weeks ago, I finally had a reason to go off and buy some video content on iTunes. So far the ownership experience had been relatively straightforward: Plug it in, answer some simple questions, sync it with iTunes and you're done.

Only the software update didn't want to work, giving the rather vague message "can't check right now, try again later". Um, ok. But apart from that, a relatively pain free experience.

Having had a bit of time, I took the credit card, went "what the hell", and started buying a few music videos on iTunes. Unfortunately the heady experience of shopping was short lived just as the first video had finished downloading.

Despite having paid good money to buy the videos, my Apple TV told me "You are not authorized to play this content".

A storm was brewing on the horizon, and that heady rush of shopping with gay abandon cooled swiftly to a nasty case of buyers remorse.

Is Apple TV a lemon?

Continue reading "Apple TV and the DRM Achilles Heel" »

January 10, 2007

Go Away, We're Full

Try find a place to log Internet Explorer 7 bugs, and you get this:


A little swamped, perhaps?

Oh well, it seems that proper support of the W3C <button> tag is doomed.

The spec describes the value attribute as sent to server when submitted. IE7 sends the content of the tag itself when submitted.

IE7 no longer submits the content of all the button tags on the page, regardless of which button was clicked. Now there is a useful bugfix.

November 2, 2006

The Madness of Visual Source Safe

So I am working on this project, right. And Microsoft Visual Source Safe is being used as the source control software, along with the VSS plugin for Eclipse.

Yes, I know.

Anyway, so I would like to abandon some changes made to a file. Basically revert to what's in source control. So I select "undo checkout".

A message pops up, and the message says:

"/alchemy-trader/ivy.xml was checked out from c:\winnt\profiles\steynh\My Documents\develop\alchemy-trader. Check in anyway?".


Continue reading "The Madness of Visual Source Safe" »

March 4, 2006

Not a Software Day

You have to love software.

I need to install and configure Fedora Directory server, so I download the latest version v1.0.2 (security fix from previous release). Turns out the admin server on it is hosed - a glitch with access control effectively locks everyone out, oops.

That's ok, I need it to run against httpd v2.2 anyway, so let me build it from source. Build from source needs a JDK.

No worries, lets download one from Sun. Turns out Sun's download site is "down for maintenance" today: "We apologize for any inconvenience and hope you will enjoy the upgraded Sun Download Center when we return online."

Haven't Sun ever heard of a zero downtime upgrade? Oh well, the rest of the world can wait.


In the mean time, I can use a JDK from IBM. Go through the pagan ritual of getting through IBM's weird "log in first" system, which forces you to update their details first, hey, I got the time.

I decide to download the binary version that plugs in neatly into JPackage's RPM package. This should fit nicely. Only it doesn't work:

[root@chandler SPECS]# rpmbuild -bb java-1.5.0-ibm.spec
error: line 566: Package does not exist: %preun plugin

Oh well. Sod jpackage, let's just download the RPM from IBM and be done with it. But no joy either:

[root@chandler rpms]# rpm -U ibm-java2-x86_64-sdk-5.0-0.0.x86_64.rpm
error: Failed dependencies: is needed by ibm-java2-x86_64-sdk-5.0-0.0.x86_64 is needed by ibm-java2-x86_64-sdk-5.0-0.0.x86_64

Seems the "let's install the directory server and get the first step of the upgrade out of the way" is destined to take all night.

On the plus side, this download speed is bordering on acceptable for today's networks:

Connecting to||:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 63,086,066 (60M) [application/octet-stream]

100%[====================================>] 63,086,066 1.77M/s ETA 00:00

14:47:39 (1.95 MB/s) - `ibm-java2-x86_64-sdk-5.0-0.0.x86_64.rpm' saved [63086066/63086066]

Ok, iit's impressive when you get an internet connection from this fine company.

March 2, 2006

"Check with your Network Administrator..."

There are few error message that a computer can give that could be more annoying than that old favourite: "If you are unsure what configuration to connect with, check with your network administrator".

Translated into English, this error message means "Our programmers were too damn lazy to tell the user what the real problem is, so we are going to pass the buck at this point to the mythical 'Network Administrator', who will curse and wail at how stupid and unhelpful our software is, and stab wildly in the dark until a solution is found by accident".

Continue reading ""Check with your Network Administrator..."" »

January 6, 2006

Java Web Stop

Java Web Start is Sun Microsystems' cunning software install mechanism. You click on a link on a webpage, and Java Web Start leaps into life, downloading that application and installing it for you. What convenience. What bliss.

Or would be if there was hope of a working download.

Continue reading "Java Web Stop" »

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.


Continue reading "Sun Microsystems: Breaking the Stupid barrier" »