Thursday, April 24, 2008

The new hottness..


About the hottest video I've see in a long time. When I saw this I had a song playing loudly in the background and the beats almost matched her moves. The song was "Shoulda Known" by Atmosphere. I don't know the song that was playing in the parking lot, in the video.

Sunday, April 06, 2008

Embarrassing web app problems at work

It's 2008 and we still have not solved some nagging UI limitations in our portlets and servlet apps at work. They are not trivial but I suspect we can probably solve all these problems in IE6, IE7, Firefox 2, and Safari 3.
  1. Alert the user when server session is soon to expire due to inactivity. This should be possible with DWR (reverse ajax or comet).
  2. Warn the user that unsaved changes to a form will be lost. The user could be requesting a different page, signing out, or his/her session could be expiring. This should be solvable with some smart javascript. GWT may have solved this problem but I don't know that GWT is compatible with jsr168. We might use the onbeforeunload event. If we can write an equals function for a html form object, then we can monitor each form for changes, then fire an event. Most Google apps have solved this problem; see Blogger or Gmail.
  3. The undo (revert, rollback) feature is almost completely missing from our apps. JSF 1.2 may be our quickest guide to a modular solution. This is support beyond the basic CRUD set. This button would only appear after a successful form submit. It might have a maximum history of 3 for portlets and 5 for servlet apps. We would also need to support the inverse operation, redo.
  4. I used to foolishly believe the auto-save feature was not applicable to web forms but Google apps have shown me the opposite. This feature belongs in our small forms as much as our large forms. With auto-save enabled, the undo history may need to greatly increase. This feature has been implemented in Gmail, Google Docs, and Blogger.
  5. The copy (duplicate) feature is only implemented when our users get vocal and demand it. We ought to be able to provide this easily before users demand it. This is support beyond the basic CRUD set. We would generate the identifier for the new object, rather than ask the user to provide it at the time of copy. Then the user could rename the object after the copy was completed.
  6. Table pagination is implemented in a few places. With a education, we can make this practice more common.
Our customers no longer ask for these features because we have conditioned them to work within the limitations of the status quo. Product managers prioritize the features the customers want. So the features above look low-value on paper. Being low-value does not make them less embarrassing.