Rich Internet for Everyone (RICHIE) Network: United XAML - XUL Alliance - XUL News - XUL Forum - The Richmond Post - RichCon 2005
The Richmond Post Logo
Chronicle of the Xul Revolution
Suggest A News Byte . XUL News Wire . XUL Talk . Sourceforge Project

I've kicked off a poll at the XAML Developers Group asking "What do you plan to use XAML for?"

Choices include:

  • To create windows forms
  • To create web forms/web pages
  • To create technical diagrams
  • To create animation
  • To create still images
  • To create print documents
  • Other (Please post your comments to the list)

Cast your vote today online @ http://groups.yahoo.com/group/xaml-talk/surveys?id=791092 (registration required, sorry).

To find the most popular Thinlet XUL toolkit addon I've kicked off a poll at the Thinlet Developers Yahoo! Group asking "What Thinlet Addons Have You Used?"

Choices include:

  • Skinlet
  • Scriptable Thinlet
  • OO Wrapper Thinlet
  • ThinletUtils
  • Theodore (Thinlet Designer)
  • Thinlet-Helper (Thinlet JEdit Plugin)
  • SwiXML-Viewer (Thinlet Viewer)
  • Other (Please Post Your Comments To The List)

Cast your vote today online @ http://groups.yahoo.com/group/thinlet/surveys?id=808304 (registration required, sorry).

To find out more about the Thinlet XUL toolkit and about Thinlet addons, see the Thinlet Addon Central site @ http://thinlet-contrib.sourceforge.net

Welcome back to the XUL Titan Interview series. Today let's welcome Vic Cekvenich of Struts Best Practices book fame.

Q: Can you tell us a little bit about yourself?

Vic Cekvenich: Short history: Born in Croatia, grew up in New York City, worked for ComputerLand before PC XT shipped and at a large ad agency specializing in database marketing and frequent flyer points. Then moved to Texas before the Internet took of and did large systems consulting and project recovery. Wrote a book on Struts "Best Practices".

Q: How did you get started on Macromedia Flex? Have you tried out any alternative XML UI language alternatives before?

Vic Cekvenich: I was aware of Flash remoting, but could not get over the IDE, and I was aware of XUL, but could not find enough browser support. Flex was written by Sean Neville, the man that wrote PoolMan. At the time I started on the Beta for Flex, I had my team members working with Laszlo Systems, which is quite similar to Flex. I also found out that Macromedia pulled out of Sun's Java Server Faces (JSF) initiative, and since Macromedia was backing Flex, I assumed they would have more success than Laszlo. So I was on the Flex Beta, and I wrote two mini applications to test how to do CRUD, etc.

Q: Can you tell us more about your two mini apps using Macromedia Flex?

Vic Cekvenich: They were sample apps. One was for an online teaching application, and the other was for real estate listings. This was just sample beta playing. I liked it and assumed it would work. Then... I spent three months writing a complex project in Flex for production.

Q: What happened? Can you tell us some challenges you faced getting your Flex application ready for production?

Vic Cekvenich: Well, once I was well into writing the application, I noticed that when you resize the application with lots of components, that the resizing of the windows was slow. There are warnings about this on the Flex home page. The Macromedia "solution" was to reduce the number of components on a window. So I abandoned it.

Q: How did you stumble onto Sun's JDesktop Network Components (JDNC) as an alternative?

Vic Cekvenich: I am not quite sure. It must have been one of the news web sites, such as Erik's links blog. JDNC was promoted a lot at JavaOne, and that is how it became well known. It's important to note that there is a lot more noise about Service-Oriented Architecture (SoA) than Rich Internet Applications (RiA), but the two go toghether, like a sea-saw. There is a lot more SoA out there: Jabber, JMS, Staxx, Google API, Amazon API, Ebay API, etc.

Q: Can you tell us what application you are developing using Sun's JDNC?

Vic Cekvenich: I am developing an application that is for people that use messages boards, forums, mailing lists and communities. People that might post about stocks, or games, or "Star wars" or anything. Of course, it will be a rich application with a nice UI. It feels a bit like "friendster" and allows you to subscribe to various groups, search for groups or for friends and post your messages. I hope that it becomes a popular site, so I can get out of the consulting "rat race".

Q: What's the hook? Why would anyone use Sun's JDesktop Network Components over say plain old Java Swing coding?

Vic Cekvenich: The main hook for users and developers of Rich Internet Applications (RiA) is that it allows you to bypass the browser. People have broadband more and more and less modems, plus they have larger monitors, and they are looking to do something with them. Browsers have a limit on the user experience. I wanted to break through and give the users something more. Swing components are quite bad, most people use SWT. JDNC makes Swing a bit more usable in MVC and data binding. Also, I get to be a programmer again and not a web master.

Q: Can you tell us some challenges you faced building your app using Sun's JDNC?

Vic Cekvenich: Well... Java as cross platform. The biggest time sink on the project is making the application run on Mac, Linux and Windows. We want to develop a cross platform application, and we had to create three targets. Also, installation: A typical user of our application might have several versions of Java installed on their machine. So how do we deploy this now? This is one area where Flash is superior to Java runtimes in that it is easier to cross deploy to masses. Imagine if a large internet application had 1% of users who could not get Java to run as intended, that is a lot of support calls.

Q: Do you have a favorite scripting language for the Java runtime? Do you want to see scripting pushed more in Sun's JDNC or do you want to keep the code Java only?

Vic Cekvenich: Not sure what you mean there. I hope Java gets "Groovier" and simpler, not just bigger, and that we get a Java shell in Linux like we have a c-shell. Things like ActionScript and Javascript are tied to a browser and have nothing applicable in an internet application. A user could however use a keyboard macro recording software to automate some tasks on an application, assuming their OS has such a thing.

Thanks Vic. Check back next week for the second part of the XUL Titan interview with Vic discussing if HTML has a future, what role Struts may play in the post-HTML world, what's missing in JDNC and much much more.

Links:

Q: Can you tell us a little bit about yourself?

Dawid Weiss: I work at the Laboratory of Intelligent Decision Support Systems of Poznan University of Technology, located in beautiful Poznan, Poland. My primary research interests focus on search engines, information retrieval and data mining, but since I hold a masters degree in software engineering I am also deeply involved in technology and all aspects of programming technologies (desktop, internet, middleware).

Q: How did you stumble onto Thinlet? Why do you choose the Thinlet XML UI toolkit?

Dawid Weiss: Let me briefly introduce the system we developed -- you will see we had very limited choice...

MET2 (Medical Emergency Triage), which is developed at the University of Ottawa by a joint team of Canadian and Polish researchers, is the second attempt to create a mobile, lightweight and distributed medical triaging system for emergency rooms. Based on the history of previous patients' symptoms, the system predicts new patient's potential disposition, hopefully reducing the time (and cost) of that patient's stay at the hospital. It is, in a way, a classic decision support system, but very specific conditions encountered in a hospital make it a really good (and tough) research subject.

Anyway, the assumption was that the system will be "ubiquitous" -- a buzz word that translates to the following requirements:

  • the system should be available anywhere at any moment of time (you must consider wireless networking in other words)
  • the system should run on constrained devices, if full devices are not available (support for PDAs, mobile phones, any computing devices)
  • network presence is not guaranteed (thin client is not enough)
  • if full functionality of the system is not possible on a given device due to its constrained environment, the system should "downgrade" its functionality to accomodate to it.

We also added another requirement that the system should adjust the graphical user interface to support the device in an ergonomic and efficient way.

Thinlet was in fact the only project that we knew of that matched the above criteria.

MET2 was my first project with Thinlet. However, I knew before that Andrzej Bialecki used Thinlet for implementing Luke and knowing Andrzej's vast knowledge of Java technology I felt confident Thinlet was a good pick.

Q: What's the hook? Why would anyone use Thinlet over say plain old Java AWT/Swing coding?

Dawid Weiss: I personally don't think it is a choice based on preference of the developer. Rather, it should be a choice driven by what you are trying to achieve. In our project we could potentially use AWT (on PocketPCs), but a few spike solutions we had written clearly showed that AWT development on PocketPCs will have an unpleasant look and feel and will require much higher effort than using Thinlet. Another advantage of using Thinlet was that we have pretty much the same look and feel on PDA devices and desktop PCs, regardless of the virtual machine -- operating system combination. This is very important for non-techie users (such as physicians and nurses).

Q: Can you tell us some challenges you faced building the medical triaging system using Thinlet?

Dawid Weiss: As usual: bugs and trying to find ways to get around them. Just to name a few, we discovered a bug (feature?) in Sun's JDK that demonstrates itself when you try to invoke setSize() method on a frame with no listeners on it. The sizing events are simply not propagated to the frame's children. IBM is also no exception: for example, their implementation of InvocationEvent is not a subclass of ActiveEvent (as it is documented in Sun's API). In other words: many subtle details that cause your application to behave differently depending on the VM and AWT implementation.

Another interesting issue was to create and use a custom AWT component in Thinlet (see the "clickable" image component in Figure 2). This turned out to be quite trivial with Thinlet... after we fixed a bug in setComponent() method that had a typo in it.

Perhaps the most difficult issue was to design and implement a library for synchronous (blocking) modal dialog boxes, similar to JOptionPane known from Swing. The problem with such blocking dialogs is that if you invoke them from an AWT thread then your application will freeze (you must "pump" events yourself then). On the other hand, if you invoke them from a regular thread, then you should wait for an event of the dialog being closed and simply put the calling thread to sleep. All this, plus apparent architectural differences between Sun's and IBM's AWT were a hard problem to beat. We extended Thinlet with a few lines of code and blocking dialogs work like a charm no matter what thread you display them from. We hope to contribute this code back to the project in any nearest occasion.

Q: Can you tell us more about how you use dynamic UIs in the medical triaging system?

Dawid Weiss: The project we recently designed and developed required that the application's GUI should be created dynamically, depending on the environment of execution.

We create patient's symptoms user interface in an ontology defined using Protege ontology tool (see Figure 1). The ontology allows us to conveniently specify different layouts of screens (groups of attributes) and editors (atomic components for displaying and altering values of a single symptom), depending on the profile the application runs in. All GUI profiles are dynamically fetched from a central ontology server and cached locally to allow running the application when no network is present. Figure 2 and Figure 3a and Figure 3b present the same "GUI" on a regular desktop PC and on a PDA -- PocketPC has a small display, so its "screens" are rendered using tabs, while regular desktop can show all the screens at once. Similar "compacting" happens to attribute editors which are rendered using popup windows on PocketPC, but are inlined in the GUI on desktops.

It should be stressed that achieving dynamic layout of the graphical components was a proverbial piece of cake using Thinlet.

Thanks Dawid Weiss. Check back next week for the second part of the Thinlet XUL Titan interview with Dawid discussing Thinlet running on IBM's J9, scripting choices for Thinlet, styling using Skinlet and much much more.

The upcoming Rich Client Conference (RichCon) 2005 bringing together the leaders in next generation browser offerings in Boston in spring 2005 to discuss the future of the web using markup, scripting and installation tracks now has its own website at richcon.com

Latest News Bytes
Syndicate (XML)
SourceForge Logo Please send comments on our web pages to our public xul-talk mailinglist or to a member of our web team. Copyright © 2003, 2004, 2005 Open XUL Alliance