The Mashup UI
Our product guys gave us some very beautiful drawings of user interfaces for the connection manager and wanted to know if these were feasible. The problem was that the designs broke Rule #1 of UI's:
User Interfaces must be square.
So I did my homework and came back with the right answer: "Yes, of course we can make round, cloud-shape, and psychedelic hippy flower petal UI's. Whatever you like." Thus began an interesting exercise.
The connection manager (cm) was a Java application with a Swing UI. I had already had the team create a web interface to the cm so that I could get some information out of the Wimax radio for use in location based services. Having already taken this baby step, it was not much more of a stretch to create an HTTP interface for everything that the UI had to handle. There were a couple of security considerations like don't let someone else use my computer over the internet but that was easy to solve by restricting access to localhost. Rules also had to be setup to allow different apps to potentially use the radio at the same time. that was accomplished by making some functions critical and requiring 'ownership' of the app as expressed by a control token. If you don't have the token, you can't call the function. This prevents one app from killing the cm while another may still want to be connected.
Since we were using JDK 1.5, we didn't have access to the web server built into 1.6. We were stuck on 1.5 since Apple has failed to update to 1.6. Shame on you! Instead, we rolled our own multi-threaded http listener and gave it the knowledge to understand some specific XML commands POSTed to it. Next came client development (the actual UI), testing, and more iterations to get it fine-tuned.
Adobe AIR can make a UI look and behave anyway you want and was the chosen technology for this new UI to our java open source connection manager. AIR is cross-platform (like the cm) and extremely productive. I wrote a skeleton communication protocol handler to test the new cm HTTP interface. It work pretty well and the rest of the team took it from their and built the desired UI, shown below.
I believe that this concept of using client and server all on the client for producing such things as this application is extremely powerful and will become more prevalent as people need ways to work around the limitations of one application environment or another. (You ask why not use AIR for the whole cm? It can't can arbitrary dll's.) It makes writing installers a hassle, but that's a small price to pay for progress. Welcome to the Mashup UI.
Posted by Erich Izdepski on December 10, 2008 01:27 PM | Permalink
