Navigation

RSS 2.0 New Entries Syndication Feed Atom 0.3 New Entries Syndication Feed

Show blog menu v

 

General

Use it

Documentation

Support

Sibling projects

RIFE powered

Valid XHTML 1.0 Transitional

Valid CSS!

Blogs : Latest entries

Wasting a lot of time with Laszlo

A month and a half ago I started doing a small project in my off hours which just had enough functionalities to cover a bit of ground in Laszlo. I had been longing for a good excuse to try out this RIA (Rich Internet Application) technology for quite a while, so I took the chance when it presented itself. This was supposed to take only a couple of days of development and I even though I had never used Laszlo before, I was quite confident that after my experience with GUI technologies like DHTML, Swing, QT and Gtk I would be able to get started with Laszlo very quickly. This was also partly based on the collection of documentation that is to be found on the Laszlo website and on the amazing demo applications that you can try out there.

The thing that bothered me most initially, was the lack of tool support. Even though there's an Eclipse plugin that allows for quick testing, writing the application lacks all of the wonderful IDE features that I have grown used to when doing Java development. Anyway, I knew I just had to get over that and put it behind me.

After that, I began to be (and still am) horribly annoyed by the time it takes to recompile LZX pages (Laszlo's language). I mean I have a dual 2,5 GHz PowerMac G5 with 2GB of RAM and I have to frequently wait for more than 30 seconds to be able to check if what I wrote, works as intended. Now this is already bad, but it gets worse since most of the times it never works as you intended the first time off. The combination of bugs, vaguely documented features, abstract examples and crippled features (like the stripped down version of Javascript and very basic XPath support) forces you often to try out everything three or four times before you get the behaviour you want.

But wait, the ordeal is not over yet, I can accept that software has bugs, but this is the end-of-line release (2.2.1) of a production version of a product that sold for $20.000 in licensing before. You expect it to be rock-solid.

However I bumped into bugs and missing features like these:

  • there's no multi-line text editing component that displays a scrollbar
    I had to implement this myself by collecting bits and pieces from the forum and the Laszlo sources.

  • HTTP POST requests are crippled
    Sometimes, and for no apparent reason, the last character of your values are stripped off, you thus have to send most things as GET requests.

  • databound items can't be reset after editing
    You bind a field to text of an XML document, it's quite often that you want to allow people to cancel their edit and show the original values again. There's no support for this, you have to figure out and code a system for it yourself.

  • drag & drop is not natively supported
    You have to start tracking mouse events yourself and compare the location with objects on the canvas, nothing like drop targets or drag sources are to be found.

  • performance drops quickly
    Don't expect to be able to just code a little app and not worry about performance when using Laszlo, you'll have to start managing early, late and deferred instantiation and work with things like item pooling and replication. If you want fast startup time, you'll have to use their Krank optimizer which increases the size of your deployed application considerably and requires you to change your code to work correctly after the optimization process.

These are just the ones I remember most vividly, I encountered many others.

Sadly, even if all these issues are solved there's still one major problem that will not go away because it's part of the whole architectural design. You build a fully functional client-side tier that interacts with a server-side tier for persistent data storage, centralized logic, etc etc. Normally, you would let the client-side act as a controller and a view: the controller sends a certain message to the server, which interpretes it, returns the result and the client-side renders a view of the new state. While this model is technically sound, it's totally not user-friendly. The slight delays (200ms-900ms) that are experienced by network latency and all the processing, makes the application feel slow and very displeasant to use.

The only way to make it usable, is to write the same logic in the client-side tier as in the server-side tier. So, you update your view early according to the operation that needs to be performed, send the message to the server, perform the operation for real in the correct tier, send back the result, and instead of rendering the result you check if it is what you expect.

This forces you to write code twice, performing the same operation in two different tiers, in two different technologies, each with their problems, gotchas, etc etc ... needless to say that your productivity drops dramatically. I don't even dare to think about having to maintain changes to the application either, gradually updating things on both fronts ... eeek!

It's a shame, I really had huge expectations about Laszlo and even tried to sell it to a customer. I'm glad that project was cancelled or I would be in deep trouble.

posted by Geert Bevin in Laszlo on Mar 8, 2005 6:10 PM : 43 comments [permalink]
 
Work on Elephant is going well

JR Boyens is advancing well with Elephant, our blog application written in RIFE.

In fact, I dropped my blog at http://uwyn.com/blog and setup the latest Elephant snapshot on http://rifers.org/blogs. Several other RIFE developers and users have registered too and will start blogging on there also.

I hope this is the start of a thriving blogging community :-).

posted by Geert Bevin in RIFE on Mar 8, 2005 10:05 AM : 1 comment [permalink]
 

 
 
 
Google
rifers.org web