Bad Manners: A Cautionary Tale

WARNING: This post is very long


As those in my inner sanctum will know, I have embarked on an online vendor certification course. For those of you unfamiliar with the concept of vendor certifications, this is a qualification whose content is determined by a software or hardware vendor, and those who pass the qualification exam are recognized by that vendor as having completed the qualification. My course is supported by a vendor, but delivery of course content and qualification examination are outsourced to third party providers who specialize in these areas. The company supplying me with course content for my qualification does so through an LMS (Learning Management System) provided by a third party.


The LMS has two major components as far as the user is concerned:

  • Website

    Here you provide authentication and can access any of the courses you have purchased the right to access. I have very few problems with this particular aspect of the product.

  • Content Player

    The content player is the piece of the system that actually delivers the course content for the user and comes in two flavors, java applet or java application, both of these I have a problem with, but we’ll get to these in due course.

The Meaning of Compatible

On today’s internet the two biggest browsers are Mozilla Firefox and Microsoft Internet Explorer for Windows. The general consensus among web developers is that web applications should be written in a way that allows a comparable experience in both of these browsers. To the credit of the LMS provider, the website component of the system does actually work with Firefox, however, I can’t seem to get the content player component to actually play content in anything but Internet Explorer, despite the fact Firefox is officially supported.

If the extent of the issue could be summarized as “it’s broken in Firefox”, then this issue would hardly be worth the time I’ve spent writing this, but the scope of this issue is much wider.

This morning I decided that since my net is quite often unbearably slow, I would download and install the offline content player.This is where the fun begins.

Initial installation of the content player required me to

  1. Allow a popup
  2. Grant elevated permissions to the java applet used as the applications installer
  3. Elevate a second app launched by the applet as a component of the installer
  4. Manually launch the installed application
  5. Enter my LMS credentials and then contact support when they failed to work.

We’ll get to why I had to contact support, but first I’d like to address the issues I have with the installation process.

The installer for the content player is a Java applet. I suppose this in itself is not a problem, but I’m sure I’m not the only person who has a disdain for granting a java applet write permissions to the filesystem. I think this would have been better deployed as a java application. Furthermore, the installer didn’t actually work. After the installation apparently succeeded, my attempts to login to the player application failed because, as far as the player was concerned, my account didn’t exist. I contacted support to resolve this issue and learned that some portion of the installation had failed resulting in some missing profile information that had to be re-created manually.

I’m also rather disappointed that the default installation location is a subfolder of the drive root. This is a sin and everybody knows it. I’ve said it once, but I’ll say it again:

Program Files is the correct place for application binaries and has been for well over a decade, there are no excuses for installations to anywhere else anymore, especially not the root of a drive!

The Content Player

The content player is also written in Java and requires elevation in order to run which I think represents a failure on the part of the software developer. The login form seems to have major control focus issues, sometimes when you press a key focus will just move to the login button and you have to click back into the text box, sometimes multiple times, in order to enter a user name.

Local Web Servers: WHY?!

The installed app appears to be little more than a shell, once you click play a Firefox window opens pointed to the locally installed web server that serves the very same applet I would have been served at the website. Why not just write the application to display content itself?

The Moral: Raise Your Software Right

While this tale is a sad reflection on one piece of software, it is mirrored all too often. Software development is something akin to child-rearing ; as we create a piece of software, we are responsible for making sure it is well behaved by the time we release it onto the web servers and hard drives of the masses, sadly a great many developers are neglectful of this responsibility.


3 thoughts on “Bad Manners: A Cautionary Tale

    • I might once have agreed with your sentiments about java, and while I do agree that Java has produced some of the worst UI libraries ever, my perception of Java as a language has changed somewhat recently. Java is not perfect, it was designed by humans and thus is subject to the limitations of the humans designing it. I don’t feel that branding it a “bad language” is fair, the best software is the software that can present to the user a way to solve a problem that closely maps to how the user perceives the problem being solved. Given sufficient understanding of the users and the problem, I believe good software can be written in almost any language, including Java.

  1. Since the current iteration of Open Office is written with Java (how much, I don’t know) I have to agree. Open Office v3.x+ is good software. Still, the amount of Java app’s I encounter in the workplace that have sucky session control (considering they could have let Oracle manage that and just notify the user) is keeping my first-hand knowledge towards my original statement. All computer-languages are just tools & materials – the results are what counts.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s