topics

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.

Python Stuff

This is stuff about Python.

Funny Stuff

This is Stuff that's Funny. Or not.

Should the Government Treat Video Games like Alchohol and Tobacco?

USAToady wrote an article about the "Battle over violent video games heating up".

First of all, to address the lame-assed attempt at a pun in the article title: I wish USAToady would just stop trying to be mildly but non-offensively funny, or else hire some real stand-up, knock-down, drag-out comedians like Al Franken to write their headlines.

The battle over violence. Ha ha ha not. The only thing they've been able to demonstrate so far, is that video games cause foolish violence and heated battles between fully grown politicians, who should know better. So stop selling video games to politicians.

"Those who favor laws restricting the sale or rental of violent videos to minors say government should treat the games like alcohol or tobacco."

Now there's a great idea: the Government should treat Violent Video Games like they do Big Tobacco.

Price support and production controls for violent video games: The computer game industry could really use the shot in the arm that would bring!

Should the government pay video game developes NOT to produce violent video games? They could keep their employees busy writing harmless cruise missile guidance systems and tactical nuclear warfare simulations for the war on terror, instead of developing violent games for kids.

Would Jesse Helms have mounted a filibuster, to prevent a video game tax hike, and protect the video game industry in his state? Will Texas Senator John Cornyn sell lawsuit protection to the Texas Violent Video Game Industry, just like he protected the Big Tobacco Industry from being sued for killing their customers?

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.

Pandora Music Discovery Laszlo Application

Pandora has developed a wonderful Laszlo application for the discovery of music, based on the Music Genome Project.

They have a free trial, so you can check it out and see how it works for yourself!

Pandora's CTO Tom Conrad had this to say about using Laszlo to develop Pandora:

Our just-now-launched music discovery service, Pandora, is an OpenLaszlo application. It wouldn't be fair to finish up our launch without a tip of the hat to the amazing Laszlo team and open source community.

Eight months ago when we sat down to figure out how were were going to deliver a compelling zero-install discovery and listening experience across Windows, Mac, and Linux in record time we considered everything you can imagine: plain old HTML, AJAX, Flex, OpenLaszlo to name just a few. In the end, Laszlo was the clear winner on all fronts. Mature, reliable, and the perfect tool for the job. This outcome was only remarkable in that the decision was made by some of the most capable AJAX developers on the planet. I'll have more to say about Laszlo in another post, but for now I just want to publicly say thanks to the great team at Lazslo. Pandora wouldn't be Pandora without you.

NutritionQuest Personalized Surveys in Laszlo

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