warning: Creating default object from empty value in /data1/local/src/drupal-5.1/modules/taxonomy/taxonomy.module on line 1364.

OpenLaszlo Discussion Forum

This is a forum for discussing OpenLaszlo.

SimFaux Interactive Network News Simulation

I've just uploaded the first version of the SimFaux Interactive Network News Simulation to the Huffington Post's Contagious Festival!

It's pronounced "Sim Foe". Like the Colbert report: it's french, bitch!

It has an cinematic interactive interface consisting of several different screen layouts, each with a different number of frames, which you can configure to display a variety of simulated characters, streaming videos, interactive surveys, and text talking points. Here's the conference screen layout showing several videos, a couple of characters, a survey and talking points:

SimFaux Conference Screen (an OpenLaszlo application, by Don Hopkins)

Relax NG Compact Syntax: no to operator precedence, yes to annotations!

James Clark is a fucking genius! He’s the guy who wrote the Expat XML parser, works on Relax NG, and does tons of other important stuff. Relax NG is an ingeniously designed, elegant XML schema language based on regular expressions, which also has a compact, convenient non-xml syntax.

I totally respect the way he throws down the gauntlet on operator precedence (take that you Perl and C++ weenies!):

There is no notion of operator precedence. It is an error for patterns to combine the |, &, , and - operators without using parentheses to make the grouping explicit. For example, foo | bar, baz is not allowed; instead, either (foo | bar), baz or foo | (bar, baz) must be used. A similar restriction applies to name classes and the use of the | and - operators. These restrictions are not expressed in the above EBNF but they are made explicit in the BNF in Section 1.

You can translate back and forth between Relax NG's XML and compact syntaxes with full fidelity, without losing any important information. Relax NG supports annotating the grammar with standard and custom namespaces, so you can add standard extensions and extra user defined meta-data to the grammar. That's useful for many applications like user interface generators, programming tools, editors, compilers, data binding, serialization, documentation, etc.

Here's an interesting example of a complex Relax NG application: OpenLaszlo is an XML/JavaScript based programming language, which the Laszlo compiler translates into SWF files for the Flash player. The Laszlo compiler and programming tools use this lzx.rnc Relax NG schema for the OpenLaszlo XML language. This schema contains annotations used by the Laslzo compiler to define the syntax and semantics of the XML based programming language.

The schema starts out by defining a few namespaces:

default namespace = ""
namespace rng = ""
namespace a = ""
datatypes xsd = ""
namespace lza = ""

The a: namespace defines some standard annotations like a:defaultValue, and the lza: namespace defines some custom annotations private to the Laszlo compiler like lza:visibility and lza:modifiers. Thanks to the ability to annotate the grammar, much of the syntax and semantics of the Laszlo programming language are defined directly in the Relax NG schema in the compact syntax, so any other tool can read the exact same definition the compiler is using!

To show how truly simple and elegant it is, here is the snake eating its tail: The Relax NG XML syntax, written in the Relax NG compact syntax:

OpenLaszlo Stuff

This is OpenLaszlo stuff, including demos and screen snapshots. OpenLaszlo is an open source XML/JavaScript based declarative programming language, for developing cross platform interactive web applications that run in the Flash player.

I love programming in OpenLaszlo -- it rocks! It's quite elegant and powerful, with many of the advantages of Lisp.

Here are some descriptions of the Laszlo projects I'm working on, and other interesting Laszlo projects. I will put links to the demos, source code and screen snapshots, soon as I get a chance, and they're ready to release.

Syndicate content