OpenLaszlo

Sims Content Catalog in Laszlo and Python

This is a large project I'm developing in OpenLaszlo: creating a rich web application for browsing, searching, exploring, collecting, personalizing, shopping and downloading Sims content.

I'm working with SimFreaks to put their entire catalog of thousands of Sims objects and characters into this database driven catalog. I'm using Transmogrifier to automatically export pictures of all the Sims objects.

Besides simply searching the catalog for interesting objects, you can navigate and explore collections of objects, and even interactivally compose your own scenes.

It's like a cross between colorforms playsets, hypercard and graphical adventures, with Sims room backgrounds, objects and characters, including interlinked image maps and text annotations.

The front-end is implemented in OpenLaszlo, and the back-end is implemented in Python, using SQLObject.

It also includes an administrative database interface for browsing and editing the SQL database that is used to model the site, and keep track of the users, objects, collections, pictures, etc. It's extensible by plugging in customizable Laszlo widgets for displaying and editing special data types, like pictures, checkboxes, color selectors, date pickers, pie menus, OPML editors, etc.

Constraints and Prototypes in Garnet and Laszlo

Garnet is an advanced user interface development environment written in Common Lisp, developed by Brad Meyers (the author of the article). I worked for Brad on the Garnet project at the CMU CS department back in 1992-3.

One thing I like about Brad Meyers is that he's a strong programmer, as well as an excellent researcher, so he had a first-hand understanding of the real-world issues involved in programming languages and user interface architecture, unlike many academics who talk a lot of theory but never get their hands dirty. Brad Meyers understands where the rubber hits the road, and how important it is to have good tires.

At the time I worked on it, Garnet didn't have pretty graphics like Flash, but the underlying programming system had some advanced features that are sorely lacking from most modern user interface development environments.

Laszlo is an modern open source GUI programming system, with many of Garnet's advanced "natural programming" features like prototypes and constraints. Laszlo currently uses Flash as its virtual machine, but it's a much higher level way to program dynamic interactive web based applications, without using the proprietary Flash authoring tool.

Laszlo Database Interface

I'm developing a reusable Laszlo component for browsing and editing SQL databases.

Currently it's up and running, built into the Sims Content Catalog Laszlo application, and it talks to a Python/SQLObject/MySQL back-end. But I'm factoring it out and redesigning it to work on its own, and support multiple back-ends.

Laszlo is ideal for implementing specialized user interface components for editing custom data types, like checkboxes, pie menus, color selectors, date pickers, OPML editors, picture viewers, map browsers, etc.

Flex is an Expensive Knock-Off of Laszlo, but OpenLaszlo is Free

Flex is outrageously priced, and its future is in Flux now that Adobe is going to buy Macromedia.

Flex was inspired by Laszlo (in spite of the fact that Tim O'Reilly is confused and mistakenly thinks it's the other way around).

OpenLaszlo is an excellent open source web programming language based on XML and JavaScript. Your class declarations, object instantiations and configuration constraints are all defined in XML, with JavaScript expressions in attributes and JavaScript methods in text content.

OpenLaszlo strikes an elegant balance between XML and JavaScript, so Laszlo code is quite clean and easy to read and maintain. IBM has developed an Eclipse IDE plug-in for creating Laszlo applications with drag-and-drop and XML outline editors.

You can see for yourself how easy it is to develop interactive graphical web applications in XML+JavaScript with OpenLaszlo: Laszlo in 10 minutes. You can actually see, modify and run Laszlo scripts over the web, to learn how it works.

If you like Laszlo and want to learn more, then you can download the entire Laszlo source code, documentation and examples for free, and start developing your own Laszlo applications, without paying any exhorbinant licensing fees like Flex requires (on the order of $12,000 per server).

AJAX Special Hazard Precautions

Anyone who tries to tell you that AJAX is a "new approach to web applications" is just rebranding old technology and hyping buzzwords, not engineering software in the real world. Because of browser and DHTML incompatibilities and limitiations, AJAX is like cocaine: it seems glamorous until you actually start using it, then the unintended consequences totally fuck you up.

Special Hazard Precautions for AJAX:

INGESTION: NAUSEA, VOMITING, AND DIARRHEA. EYES: EYE IRRITANT UPON DIRECT CONTACT. SKIN: MAY CAUSE SKIN IRRITATION UPON PROLONGED CONTACT. INHALATION: NONE UNDER NORMAL USE. PROLONGED INHALATION BY UNORTHODOX USE (NON-WETTED) OR ABUSE (SNIFFING) COULD PRODUCE LUNG DISEASE (SILICOSIS). N/K

Emergency/First Aid Proc: INGEST: IF EATEN/DRUNK--YOU MAY THROW UP. DRINK SIPS OF WATER/MILK. IF VOMIT CONTINUES, CALL POISON CTR/DR. EYES: IRRIT. FLUSH W/WATER 15 MIN. IF IRRIT PERSISTS, CALL POISON CTR/DR. SKIN: IRRIT. REMOVE WET CLOTHES. FLUSH W/WARM WATER 15 MIN. IF IRRIT PERSISTS, CALL DR/POISON CTR. INHAL: IF INHALED, MAY COUGH. TAKE SLOW DEEP BREATHS OF FRESH AIR, SIP WATER. IF COUGH PERSISTS, CALL DR/POISON CTR.

Here's the entire Ajax information sheet, with more warnings and hazard precautions.

BlogBlox Free Laszlo Applications for Personal Blogs

Blogboxes provide exciting, instantly deployed functionality for your blog or Web site. They are free for non-commercial use. Enjoy them and spread the good word!

Photoblox: Show personal image slideshows on your Web page, customized to suit with dramatic presentation effects, annotations and PayPal integration.

Linkblox: Compactly present your favorite URL links within expandable tabs. Customize the Linkblox with your own external OPML XML file.

Weatherblox: Always have an answer to "How's the weather?". Enhance your blog or homepage with WeatherBlox.

Soundblox: Let your visitors play MP3 format audio directly out of your Web page. Customize the appearance and content of your SoundBlox with your own XML playlist and media.

NutritionQuest Personalized Surveys in Laszlo

I'm working for NutritionQuest, developing a Laszlo based personalized nutrition survey.

Laszlo OPML Viewer/Editor

I've been discussing the design of an OPML viewer/editor with Marc Canter and Dave Winer.

It will serve nicely as a stand-alone component like a simple blog roll or nested link browser, or as a more advanced customizable blog applet like BlogBlox, and it will also be customizable for use in Laszlo applications, like the database interface, for editing XML structures stored in SQL databases.

Update: Here's a first cut of server side support for Drupal, and the client side for Laszlo: OPML Site Map Based on Drupal Taxonomy. Laszlo OPML Drupal Taxonomy Site Map Browser.

Laszlo Koosh Ball Generator

For fun, and to test out Laszlo's rendering speed with lots of lines, I rewrote the classic NeWS "Koosh Tool" koosh ball generator in OpenLaszlo.

It's amazing how many colored lines Flash can animate on the screen at once!

Laszlo Koosh Balls Demo

Laszlo Koosh Balls Source Code in Laszlo


Laszlo Pie Menus

I've ported my JavaScript pie menu code to OpenLaszlo, and rewritten it to take advantage of Laszlo features like Flash graphics and animation, constraints, events, prototype customization, and XML data binding.

I'm using the Laszlo pie menus in the Sims Content Catalog, and the von Neumann 29 State Cellular Automata, and other projects.

Laszlo Pie Menu Demo

Laszlo Pie Menu Demo Source Code in Laszlo

Laszlo Pie Menu Component Source Code in Laszlo


Syndicate content