Win a copy of Transfer Learning for Natural Language Processing (MEAP) this week in the Artificial Intelligence and Machine Learning forum!

Norman Klein

+ Follow
since Jan 22, 2008
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Norman Klein

Just wanted to point out one more Flash advantage than is now beginning to be chipped away by DHTML.

Previously, only Flash supported image rotation transformations. But recently, Apple's Webkit added this capability to the Safari browser and Laszlo DHTML now supports it in Safari browsers. You can read more about it at:

Surfin� Safari:

Rotating OpenLaszlo with Webkit:

Now we can only wait for Firefox, Opera and IE to also update their browsers to support this.
Yes. We're working on that. Our server provider wasn't happy about the amount of bandwidth that we were using. So we had to temporarily scale back the store's capabilities. Please check back again at as we will be continually updating it.
With each DHTML application, Laszlo needs to also send its LFC (Laszlo Foundation Class) library. This needs to be done, because Laszlo supplies its own animation and layout engine, component library and many other things. This supports the animation and components seen in applications like LzPix (available at:

The latest Laszlo releases have separated out this LFC library for DHTML. So now a Laszlo DHTML application checks for the LFC library in the browser cache, this allows smaller subsequent Laszlo DHTML downloads
Take a look at the Laszlo Market at:

This is the example application that is built in the book and features the customized scrollbar and tabslider components. We wanted a beefier scrollbar that better fits the overall theme of the application.
The Laszlo architecture is designed to allow it to be easily ported to new web platforms. Each runtime consists of a kernel, which provides a clean abstraction between OpenLaszlo and runtime-specific details. Each kernel is a collection of classes in two major categories: sprite classes, and environment classes. Sprite classes handle the visual display of OpenLaszlo views, text and input text boxes. Environment classes provide supporting APIs for handling mouse and keyboard events, getting timing information, and loading data or code at runtime.

So when Laszlo was ported to the DHTML platform, it only required the creation of DHTML sprite classes, instead of a complete rewrite for that platform. This allows core Laszlo functionality to be available to each platform.
Yes, that's an interesting question. Have you taken a look at the various Laszlo demo samples at When I first looked through these demos, especially LzPix, I also thought why use Flash?

But Flash still has a number of advantages over DHTML. DHTML really needs SVG to be completed to add vector imaging capabilities. This will allow embedded fonts to be used in the browser. Right now, DHTML applications still have to resort to using JPG or PNG font images to represent fonts that aren't client fonts. This approach clearly has its limitations.

In addition, Flash has multi-media (video and audio) capabilities not found in DHTML. While you might think that you can just embed Flash for those needs, but you really need a much more integrated approach that allows the DHTML side to dynamically communicate to the embedded Flash player to specify different titles.

Since Laszlo can execute across both platforms, it is possible to set up a hybrid application, where a Laszlo DHTML module can communicate with Laszlo Flash modules. We have an entire chapter in our book "Laszlo in Action" that discusses how to do this.

Also since Flash has a single large corporation (Adobe) behind it, it will also be able to innovate faster than a general standard such as DHTML. For instance, their latest Flash executables swf9 are really fast. And with their new products such as AIR, Flash will be expanding into new markets.
Forgot to mention that this version of Laszlo (lps-4.0.7) contains a strange bug, so that only odd-numbered drag and drop operations from the Product List to the Shopping Cart work. This bug should hopefully be fixed in upcoming releases of the OpenLaszlo server.
There is no difference between Laszlo and OpenLaszlo. The name of the company is Laszlo Systems and when their Laszlo server became open source, it was renamed to OpenLaszlo (which I think is a bit of a mouthful).

RIA development is a huge new area of development, so it doesn't really make sense to ask which language or system is better. Its like asking what is better Ruby or Python, where each language has its own group of dedicated developers. So I wouldn't try and pit Laszlo in competition against other systems like Ajax toolkits such as Ext.js. There is no universal solution to every problem and there are undoubtedly many situations where Ext.js is the superior solution and the same for Laszlo.

But Laszlo does include unique programming methodologies, so if you really want to understand RIA development, then I think a working knowledge of Laszlo is mandatory.

Please take a look at the Laszlo Market application that is build over the course of our book and let me know how you like it. You can find it at

This is a stripped down version, it doesn't include a functional video player, but we will be continually updating this website over the next few weeks.
We believe that it's easiest to learn through working with a "hands-on" example, so we created the "Laszlo Market" as a full-length application that illuminates all of the important concepts covered within our "Laszlo in Action" book. You can view our Laszlo Market application at

You might wonder "hasn't the online store metaphor already been covered to death". But the online store is still the "killer app" of the Web. It's almost obligatory now to feature an online store example along with the introductory "Hello World" example. Besides, today's online stores suck. This isn't just an opinion, but a fact measured by an "abandoned cart" rate. Today's online stores take seven steps to perform checkout that each requires a round-trip journey to the server. This provides seven opportunities for customers to just say "screw it" and go to another website. We have re-implemented the online store as a Laszlo application to demonstrate the benefits of an RIA approach. The goal of this store is to have its operation be so intuitive that my mother could use it. This is a tall order, because my mother doesn't even use a computer.

This store has the following features:

1.Uses animation to support multiple virtual screens within a physical screen (Press "checkout" button")
2.Supports "copy" drag and drop operations from the Product List to the Shopping Cart
3.Supports "move" drag and drop operations from the Shopping Cart to the trash
4.Features a branded appearance using customized components directed toward a target audience of twenty-something males (action video fans)
5.How to use animation in a functional manner
6.Demonstrates the Master-Detail design pattern between the Product Listing and Detail windows
7.Maintain identical appearance and operation between Flash and DHTML versions

In later chapters, we cover how video icons can be played by dragging and dropping them into the media player. Right now, we only have the Flash version online, but the DHTML version looks pretty much identical. So generally need to check the options with the right mouse button to determine which version is displayed. The person that has access to the server is unavailable right now, but I'll try and get the DHTML version available soon.

Although the book is complete now, we want to always be extending the store's operations to demonstrate different features. So I'm interested in hearing people's opinions about our example application.

1.Would your mother feel comfortable using this application?
2.How difficult or easy would this be to write this in your favorite RIA language?
3.What do you like or dislike about this application.
4.What features would you like to see added?
5.Any misc. things that you might want to comment on

Thanks your comments are appreciated and might be included in updates to this store application.

Norman Klein
Since OpenLaszlo is open source software, it supports most standard compliant software either directly or through contributed libraries. So for instance, it supports JSON through the json.js library.

You can read more about Laszlo JSON support at

Laszlo also supports RPC. Further information is available in the Laszlo docs at
Yes. The book features many small examples and a full-length application called the Laszlo Market. So while we don't use file uploading in the Laszlo Market, we do have a small example that uses file uploading to discuss how to make calls to the Flash API.
Laszlo only requires XML over HTTP, so it is completely compliant with the existing HTTP standards. The server only needs to change its content type to "text/xml" and output a valid XML document.

This is a capability supported by all web servers. Its even pretty easy to update most existing server side applications to support Laszlo, since only their JSP files need to be updated. So you'll have one set of JSP files to output HTML and another for XML.
Laszlo only requires XML over HTTP, so it is completely compliant with the existing HTTP standards. The server only needs to change its content type to "text/xml" and output a valid XML document.

This is a capability supported by all web servers. Its even pretty easy to update most existing server side applications to support Laszlo, since only their JSP files need to be updated. So you'll have one set of JSP files for HTML and another for XML.
LZX is already a DSL. In the book, we devote an entire chapter to explain why LZX is an ideal DSL for creating graphical applications.
Yes. We cover the back-end implementations for both Struts and Ruby on Rails. Both of these chapters are available as free downloads (just go to While these two server side technologies were chosen, because they are the most popular and address the widest audiences, we hope to also supplement them with additional server side technologies. Anyone is welcome to contribute a description for other server side technologies, because we don't have the time or expertise to cover every server-side language. We have also set up a website that will feature updates to the book.

The Ruby on Rails chapter is more complete (demonstrates how to support sessioned applications and data paging), simply because RoR is a more terse language. The Struts chapter also demonstrates how to update an existing Struts application to support a Laszlo application by simply updating its JSP files.