The amazing adventures of Doug Hughes

Archive for May, 2005

What's The Worst Web Application You've Ever Seen?

To first give a little background on this blog entry, as many of you know, I recently moved from full time employment to full time consulting and contracting. As a result, I have to withhold my own taxes. To facilitate this, I applied for a business savings account with my bank. However, the bank notified me that they wouldn’t let me open the account because, according to the state of Virginia, I’m not a corporate officer of my company! Seeing as I’m the President of Alagad and I wrote the articles of incorporation, I was a bit perplexed.

As a result I did a little googling and found the “secret” website that the bank was using to find out Alagad’s corporate officers. This leads me to the subject of this blog post: The worst website I’ve ever seen!

The Virginia State Corporation Commission provides a website to the public (ahem, not just to my bank). This website provides access to the SCC Corporation Information System (CIS) which can be used to look up Virginia corporations, their officers, and other related information. The entry point to the CIS isn’t that hard to find. It’s a big blue button at the bottom of the page linked to above. Clicking this button opens a new window which looks like this:

Main Menu

My first reaction to this page was, “huh?” From there I went through this thought process:

  • How do you use this thing?!
  • What do you put in the text boxes next to the numbered list?
  • What’s the command text field do?
  • What’s with the function keys listed at the bottom? That can’t be real function keys. I mean, hitting F2 doesn’t do anything when you’re on a webpage, does it?
  • What’s the Enter key on the left do?

You may notice that the text box to the left of “1. Corporate Inquiry Menu” is wider than the rest. If you can enter two characters into that textbox, but no more. However, all of the other text boxes in the list only allow one character and it’s always shown as an asterisk. Wierd!

The command box is there, but you can’t type into it. Well, you can, but you have you have to select the dots and delete them before you can type into it. Amusingly enough, if you type anything into the Command field (after getting rid of the dots) and hit enter (on your keyboard or the enter button) the page refreshes and the command is listed again in the textbox, but in green and all caps. The rest of the text box is filled up with dots. My guess as that the command box would be better labled as “Uppercase, Turn Green and add Dots:”

I ended up clicking the Help button. This opened a new browser window which displayed a PDF (the bane of my existance!) The PDF was 49 pages long! Lacking other options I started reading it and gave up in the first paragraph when I read this:

Thank you for your interest in the State Corporation Commission’s (SCC) Clerk’s Information System (CIS) that allows you to directly access general information on corporations, limited partnerships, limited liability companies, business trusts and UCC filings. While CIS is accessible through the web, it is not considered a web-enabled system. The CIS system was originally designed for internal use by trained employees in a high volume data entry environment. However, the need to make this information more readily available to our customers through the Internet outweighs concerns regarding ease of use.

You’ve got to be kidding. I translate this to mean “anything is better than nothing, and if you don’t like it, get bent!” So, I closed the help window and started clicking and typing randomly till I figured the website out. It turns out that the two character text box next to the first list item allows you to enter the numbers listed in the rest of the list of what turned out to be options. Alternativly, you can “select” a text box by hiting any key. The asterisk displayed in the text box indicates that the field is selected. Once you’ve identifed the option you want, you can click the enter button and you get another menu! If you “select” more than one text box you get the page you were just on. (No error, just a refresh.) If you type bad data into the first textbox you get a very subtle error message.

I wanted to look up my company. So, I entered a space into the option the fist list item’s text box. I hit the enter button on the left. And loe-and-behold, I get a new menu!

Inquiry Menu

Once again, a big, “Huh?”. This time I at least have a faint clue how the menu works. I know I want to look up my corporate officers. So I selected option 4’s text box, hit enter and I get this page:

Search

I’m a bit confused at this point. I don’t know my corporate ID. I do know my corporate name, but I don’t know what typing it in to the Corp Name field will do. I have no idea what the unlabled textbox does. And then there’s a bunch of incomprehensible stuff below those text boxes. For instance, what do the 5 small text boxes do?! I must be in the wrong section. I need to go back to the last page. But there’s no back button. The web app doesn’t seem to provide a mechanism for going back either. However, being the smart technical wizard I am, I know that the backspace key acts as a back button in most web browsers. So I click the backspace button and I get the previous page.

At this point I decide to enter my company name in the Corp Name field under the text-field-as-checkboxes menu. I click the enter button hoping that something informative will come up. What do I get?

Not Synced

Arg! What the heck is this?! Why do I, as a user of this website, give a shit about synchronzation?! What is this talking about?!

After calming down, I click the Refresh button to see what will happen. What do I get, but this page again:

Search

After thinking about it, I rememered that previous screens had information under the “Uppercase, Turn Green and add Dots” text box. As I recall, they said F2=Main Menu and F4=Prior Menu. But those were buttons and they’re not there any more. Well, what the hell, let’s hit F4 on my keyboard and see what happens. Much to my surprise, I’m taken to the previous menu! I didn’t even know you could use funciton keys in web applications! (Ok, I guess you could with JavaScript.)

Once again I type my company name in the Corp Name field. I click the enter button and I see this page:

Search Results

This seems to be a list similar to other pages. However, it also seems to be the results of a search… or something. Oddly, the Search Name field shows “ALAIINC”. This is not what I typed into the Corp Name field on the previous page. However, I do see my company listed!

However, the text boxes next to list items have a hyphen in them. What’s this do? It’s a bit different from the other text boxes-being-used-as-checkboxes. Maybe it behaves like the other text boxes anyhow. I place my insertion point in the text box and hit the space key. Nothing happens. What the hell?! Eventually I realize I need to remove the hyphen and enter something else (just like with the “Uppercase, Turn Green and add Dots” text box!) After removing the hyphen I realise I can type anything into these text boxs. I enter a lower case “s” next to Alagad and click the enter button. I then get this screen AGAIN!

Selected

After staring at this for a while I realized that the Corp ID and Name fields are filled in and green. I don’t know what this means, but I’ll try selecting option four’s text box again and see what happens.

I get this page again:

Officers

However, this time my company name is listed and so are the corporate officers! And more importantly, I’m shown as the president!

In the end, I called my bank back and found out that they were, in fact, using the Virginia SCC website, but they couldn’t figure out how to get it to work! As a result, they couldn’t see me listed as the company president. I had to walk them though the process and, after much complaining, they finally gave me my savings account.

I thought the internet was supposed to make things easier!

What’s the worst web application you’ve ever seen?

My Maryland CFUG Java Presentation

Last Tuesday I spoke at the Maryland ColdFusion User Group on how to use Java from ColdFusion. The meeting was well attended (because Leo Laporte was headlining). Steven Erat arranged to have the presentations broadcast using Breeze.

I really wasn’t happy with how this presentation turned out. I didn’t get the practice I wanted before giving the presentation and the crowd was not particularly interested in the topic. As a result, I think I did a mediocre job.

If you’re interested in the topic, the presentation was recorded and is now available here: http://mmsupport.v4.breezecentral.com/p40457032/. The presentation slides and source code can be downloaded here.

Dreamweaver Template CFCs

From time to time I’ve wanted to be able to parse Dreamweaver template files from ColdFusion. I wrote a solution a year ago which did a fine job. But, I worked on it a bit more today and came out with two CFCs which work rather well.

These CFCs only support the standard Dreamweaver template editable regions. At some point in the future I may add support for optional and repeating regions. I wanted to do a full implementation, but template expressions proved to be too much of a pain to bother with at the moment.

With without further ado, you can download the Dreamweaver CFCs below. The zip file contains two CFCs, template.cfc and instance.cfc. The template.cfc is used with a Dreamweaver template file (a DWT). The instance.cfc is used with a document created from a Dreamweaver template.

Template.cfc

The template.cfc is used to read and work with a Dreamweaver template file (DWT) and provides these methods:

readTemplateFromFile(file)

The readTemplateFromFile method is used to read a DWT file. The file argument specifies the path to the DWT file being read.

writeTemplateToFile(file)

The writeTemplateToFile method is used to write the DWT back to disk. This is of use in the case that you use setRegionDefaultValue method to change the template’s region’s default values.

getRegionNames()

The getRegionNames method returns an array of all the region names in the template. This can be used in conjunciton with the setRegionDefaultValue method to set default values for regions.

getRegions()

The getRegions method returns an array of structures describing all of the template’s regions. The each array element corrisponds to an editible region within the template. Each array element is a structure containing the following items:

Name – The name element is the name of the editible region. This can be used with the get/setRegionDefaultValue method to get or set the region’s default value.

Content –
The content element is the entire contents of the template editable region including the Dreamweaver template markup.

DefaultValue –
This is the default value for the editible region.

Start –
The start element is the index of the first character of the Dreamweaver editible region HTML template markup.

End –
The end element is the index of the last character of the Dreamweaver editible region HTML template markup.

setRegionDefaultValue(region, value)

The setRegionDefaultValue method is used to set a region’s default value. The region argument is the name of the region to change. This can be obtained using the getRegionNames method. The value is the value to set as the default for the region.

getRegionDefaultValue(region)

The getRegionDefaultValue method can be used to get a region’s value. The region argument is the name of the region to get the value of.

createInstance(rootRelativePath)

The createInstance method creates a new Instance object based upon the Template. The rootRelativePath argument indicates the path to the DWT file from your website’s root directory.

setTemplate(template)

The setTemplate method is used to set the template html. The template argument is the contents of the DWT file.

getTemplate()

The getTemplate method returns the HTML of the Dreamweaver template.

Instance.cfc

The instance.cfc is used to read and work with a files based on Dreamweaver template files and provides these methods:

readInstanceFromFile(file)

The readInstanceFromFile method reads a document based on a Dreamweaver template from a file. The file argument specifies the path to the file to read.

writeInstanceToFile(file)

The writeInstanceToFile method is used to write the an instance back to disk.

getRegionNames()

The getRegionNames method returns an array of all the region names in the instance. This can be used in conjunciton with the setRegionValue method to set values for regions.

getRegions()

The getRegions method returns an array of structures describing all of the instance’s regions. The each array element corrisponds to an editible region within the instance. Each array element is a structure containing the following items:

Name – The name element is the name of the editible region. This can be used with the get/setRegionValue method to get or set the region’s value.

Content – The content element is the entire contents of the instance editable region including the Dreamweaver template markup.

Value – This is the default value of the editible region.

Start – The start element is the index of the first character of the Dreamweaver editible region HTML template markup.

End – The end element is the index of the last character of the Dreamweaver editible region HTML template markup.

setRegionValue(region, value)

The setRegionValue method is used to set a region’s value. The region argument is the name of the region to change. This can be obtained using the getRegionNames method. The value is the value to set as the default for the region.

getRegionValue(region)

The getRegionValue method can be used to get a region’s value. The region argument is the name of the region to get the value of.

setInstance(instance)

The setInstance method is used to set the instance’s html. The template argument is the contents of the instance file.

getInstance()

The getInstance method returns the HTML of the template instance.

Alagad Image Component Updated.

I’m happy to announce that the Alagad Image Component 2 has been updated to version 2.16. This version adds support for Blue Dragon 6.2 as well as fixes a few minor bugs. You can download the latest version here.

Tag Cloud