Last night we posted a preview of the new Laszlo Calendar application.

You can sign up for an account on goWebtop or just read more about it on the blog.
This is a huge milestone for Laszlo. For years Laszlo has had a demo app that has been widely referenced for its innovative cinematic user experience. It was one of the very first applications built in Laszlo, and a key influencer in the creation of the LZX language. For years customers would ask us about whether they could buy that application, but it was less than half an application and there were some usability issues with the UI of that demo. Late last year, we finally decided to kick off a project to build a full calendar app as part of Laszlo Webtop. I'm pleased to be offering this initial sneak peek...
There is a new OpenLaszlo code exchange which the folks at Mobile Data Now have put together (via Antun Karlovac). It is great to see this kind of initiative from the OpenLaszlo community.
I wonder if we can dig up an archive of mylaszlo.com (only partially available on the Internet archive and make that source more easily available again.
David Berlind does a nice video interview with David Temkin, Laszlo Systems founder and CTO, about OpenLaszlo and Webtop. The video has some nice coverage of Verizon's webmail and other customer spotlights, plus some forward-looking commentary. It's good to see the word getting out.

OpenLaszlo was recently named "Best of Open Source Software" by InfoWorld, which honors OpenLaszlo with a "Bossie" award.
"The ever growing global OpenLaszlo community covering five continents gives proof not only to the technical maturity of OpenLaszlo as a platform but to the acceptance of OpenLaszlo as a true open source technology." The OpenLaszlo blog took the opportunity to thank the community and, appropriately, acknowledge that the project has grown well-beyond the the small group of coders and visionaries who work at Laszlo Systems.
Tom Yager notes that OpenLaszlo "may be the best closed-to-open success story." As someone who has watched and participated in this transformation, I agree that it is a compelling story that merits telling. It's easy to lose these reflections in the day-to-day. Success is made up of a hundred small decisions and a thousand small work items. While I believe this is true in general, it is even more true of an open source project.
I've taken this moment, to write up some personal observation on the closed-to-open source story...
Five years ago I worked at Macromedia. I knew little about open source and saw little need to. Every line of code or library that I touched was proprietary. I lived in a culture that was the same across all of the companies I had worked: CoSA, Apple, Aldus and Adobe, where anything you type or say at work is the intellectual property of the company. Ideas as translated into code have tangible value that translates into profits and stock price. I understood no other economic pattern for software development.
I March '03, I started a weblog. I wanted to go back to writing code for a while and get some practical experience with various web technologies. In setting up ultrasaurus with MySQL, PHP, perl and experimenting with wikis. I found the solutions to the inevitable technical glitches via google in the weblogs of strangers. I thought that was pretty neat and wanted to give back. I started using open source software without really thinking about it, and reaped the benefit of the open source model without being aware of the bigger picture. This was just the beginning.
When I started working on OpenLaszlo (then Laszlo Presentation Server), I entered a different coding culture. The use of open source libraries was commonplace, and the rules around modifying open source code and submitting changes back to the community was well-understood by my peers. It was pretty clear why we want to use open source software (who wants to write yet another XML parser?), and I could understand why we would contribute bug fixes (sometime we were obliged to and in other cases it would save us work since the next upgrade would include the fix we needed), but I was mystified as to why anyone would write open source software.
With Laszlo's decision to take its proprietary platform open source, I was immersed into this new world. I had seen how every sale of LPS required an extensive sales process. It's a big deal to pick a platform and it is easy to lose years of development effort with a bad bet. At the same time, the IT infrastructure was moving to open source. In the mid-to-late 90's, the majority of customers for server software that I was developing were running Solaris on Sun hardware. By the turn of the millennium, all but a few companies were switching to Linux, and even the conservative big companies were using Linux for some deployments. The landscape was changing. With Apache, Linux and MySql leading the way, open source was becoming a "safe choice."
Commercial companies were starting to build real businesses around open source, and, for Laszlo, the choice was a good one. Suddenly customers were paying for prototypes and proof-of-concept work. It transformed the way we did business. We also, quite intentionally, changed the way we developed the software.
On Oct 5, 2004, with Laszlo's open source announcement, we posted the source code as one big tar.gz and started two mailing lists: laszlo-dev and laszlo-user. Officially, we were open source. However, the reality was that if anyone had actually downloaded the source and tried to build it, they would have needed an awful lot of hand-holding. Some companies call a project open source and stop there, but the Laszlo team was dedicated to making it real and had plans for what was yet to come. Our internal development mailing list was renamed "internal-dev" and Oliver routinely scolded those of us who asked questions or proposed ideas there that were about what was now OpenLaszlo. It felt weird to me. There were a few hundred people on the laszlo-dev mailing list in the weeks after we made the announcement. While there had been some introductions and a few random questions, there were a lot more subscribers than there were messages. Who were these people, really? Would they think less of us if someone (me) with a laszlosystems.com email address asked a dumb newbie question? Would they have strong opinions on some new feature we were planning or architectural change? I took a deep breath and dove in. My fears were groundless. My questions were routinely answered by other people who worked at Laszlo, and if external folks benefited from the answers, I usually didn't hear of it. After my initial impression of coding in a fish bowl, I soon came to feel that the list was the same old crew. Of course, I was wrong.
The open nature of our discussions on the list was critical in our becoming a real open source project. It allowed new folks to understand why certain architectural or feature design decision were made. It was almost two years later when my assumptions were challenged. (If I had been more actively working on OpenLaszlo, I'll bet those incorrect assumptions would have been challenged sooner.) I was taking a break from application development to create new streaming audio-video features for OpenLaszlo with Red5 and Flash Media Server. I ran into an issue with the compiler, and sent a note out to laszlo-dev, fully expecting that Henry, who works for Laszlo Systems, would take a look at it in the morning and help me out. Much to my surprise, I received a quick note from Don Hopkins, who had been experimenting with the same thing on his own with a work-around. As it turned out, there were a number of members of the community who were already working in this area. We were able to collaborate and accelerate development.
Now we have a growing community of contributors and we hear about new OpenLaszlo applications every week. The open bug database and open source control system are well-established. There is still a long way to go: we would like more contributors and the current contributors to take more active roles. I still frequently read someone new say "I can't believe I've never heard of this before!" so we could do a better job of spreading the word. However, I'm proud of how far we have come and I'm honored to be a part of this evolving story.
Verizon announced the release of it's new webmail based on Laszlo Webtop (along with other goodies like 4GB storage, which is significantly higher than the storage typically offered by cable Internet service providers).
It is exciting to be finally be able to talk about this project which has been in the works for quite some time. Webtop was released earlier this year and we've been busy making Laszlo Mail a webtop app. This transition to developing mail within a flexible framework will allow us to develop (and Laszlo customers to deliver) new applications that integrate smoothly together with only incremental changes to the existing apps. For now, this is yet another Laszlo Mail deployment -- millions of new folks who will be using this new webmail experience.

Here's the new "look" for the webtop mail app. The Verizon one looks a bit different, having been adjusted to match the Verizon brand and has additional customizations using Webtop's customization fetaures and OpenLaszlo's LZX and CSS.
Although I am proud of our corporate management for setting aside its religious upbringing and recognizing some of the serious limitations in this first incarnation of the JesusPhone, it is exciting to see members of the OpenLaszlo congregation diving in.
By all reports, iPhoneDevCamp brought together a lot of creative folks and sparked some great apps. Ben Shine writes about the experience working with Bret Simister over the weekend and creating a new application from scratch in about a day and a half. And, of course, it had to have some of that "swooshy" (aka cinematic) UI. They decided on a game, matching photos and news feeds from RSS stories. The game is here, and Ben has even posted the source on svn (just 400 lines of LZX).
Update: for those of you experimenting with OpenLaszlo on the iPhone, please add comments or links to wiki page
Today we honor St. Laszlo, Ladislaus I, King of Hungary 1077-1095. Laszlo successfully repelled many attempts to invade Hungary, encouraged Christian missionaries, and built many churches, but allowed religious freedom to the Jews and Mohammedans in his realms. While many Hungarians regarded him as a Saint many years before, it was not until June 27, 1192 that his Sainthood was recognized by the Church.
Laszlo Systems held a humble feast today in honor of Saint Laszlo. Amidst the festivities, the assembled congregation canonized St. Laszlo as the Patron Saint of User Experience.

Gartner has Laszlo Systems one of four "Cool Vendors in Application Development" for 2007. Highlights from the report...
Whereas,
* Software development remains difficult and demanding.
* The collaboration and coordination of projects is creating demand for higher levels of integration.
* Tools that simplify the process of programming by creating a higher level of abstraction may break some of the barriers for development and remain an area of innovation.
OpenLaszlo is cool because it is the only RIA platform in which developers can define the user
interface in a declarative (nonprocedural) manner and target different runtime environments,
including Ajax, Flash and Java 2 Platform, Micro Edition (Java for mobile devices). Although
many vendors are using a declarative XML representation for the interface (including Adobe,
Microsoft and Nexaweb), no other vendor enables this XML to be rendered to as many different
runtimes.
Laszlo has been able to land some flagship customers, such as Wal-Mart, Barclays, H&R Block,
Time and Monster.com. It also has partnerships with IBM and Sun.

H&R Block's new home page is a nice example of an OpenLaszlo cinematic UI. It has a clean, uncluttered design with good use of rollovers to annotate navigational choices at the top as well as providing a large amount of information in a concise presentation for the various filing options on the lower portion of the screen.
"Sun Microsystems and Laszlo Systems, Inc, have announced that they will be working together to enable OpenLaszlo applications to run on devices supporting the Javaâ„¢ Platform, Micro Edition (Java ME) application platform."
This will leverage the OpenLaszlo multi-runtime architecture to enable OpenLaszlo apps on mobile devlces, bringing AJAX-style programming with declarative XML for building GUI applications to J2ME. You can read more details on openlaszlo.org. Since this is open source initiative, there'll be more info posted as the project evolves.
It is great to see the first OpenLaszlo book on the market. The book presents straightforward tutorials which do a good job of introducing the LZX you need to know to build simple applcations. If you are someone who really likes to have a physical book rather than on-line documentation this book will give you a good foundation in learning OpenLaszlo. When introducing new classes, the book provides a graphical class hierarchy to illustrate how the class fits in. In addition to the basics, Chapter 15 details a Google Maps application by Manabu Togawa which provides a good real-world example of browser integration.

There's a nice zdnet article about cooqy, an eBay site developed using OpenLaszlo by Robert Yeager . "After taking a look at AJAX, Flash and traditional web development platforms, he settled on OpenLazslo. According to him it was because it was a mature product as well as free and open source. OpenLaszlo's elegant XML-based programming model was a big plus and made for rapid development. Cooqy went from nothing to core functionality in 4 weeks of part time work."
I found the app compelling, and imediately got sucked into shopping-mode by the "photo collage" view. It must be a very successful application where I can get distracted by my usual analysis of the UI and Web 2.0-iness of it all to instead be enticed to actually *use* the application :)
I'm thinking of buying a few pounds of legos:

[update] Laszlo Mail is released into the wild! You can sign up for your very own account and check out our latest version at www.laszlomail.com As you may know, it has been available for EarthLink subscribers since June.
E-mail provides a lot of interesting UI challenges and opportunities. Lately there has been a lot of innovation in this area, both on the web and on the desktop. People use e-mail everyday. For many, it has become the center of their online experience. Even though web mail is missing some features of desktop mail applications, more and more people are moving to web-based mail because of the convenience of it being available on any computer you happen to be near.
Its exciting to see this project unveiled. I've been working on it for a while with my colleagues at Laszlo. Using LZX, we have been able to take a structured and modular approach to the problem. Its easy to focus on one class or area of the app with specific test files, getting that one part to work smoothly, then its pretty rewarding to see the larger application evolve. For me, it has really validated what I already believed -- that the OpenLaszlo platform is ideal for building complex applications and creating a great web experience.
tag: LaszloMail
The wonderful designers at Laszlo recently put together a nice presentation about the suite of applications that we plan to build. We're calling it Laszlo Digital Life.
The first of these applications is Laszlo Mail. We're focused on creating a great user experience for web mail that approaches the experience of desktop mail applications with the added benefit of providing access to email from any computer with a web browser. It was released early this summer to EarthLink subscribers. We're working on a putting up our latest and greatest so that anyone can check it out... stay tuned.
Scott Mace conducts an interesting interview with David Temkin, CTO of Laszlo Systems. " Before AJAX (Asynchronous JavaScript and XML) had a name, there was Laszlo Systems..." They talk a bit of the company's history, particularly Laszlo's decision to release the platform under an open source license, and about where Laszlo is headed with the development of Laszlo Mail and other applications.
I've been listening to Pandora for about a week and I love it. A piece of software has not had such an effect on what I do with my computer since Movable Type.
I must be the only sofware engineer in the world who does not have their own personal mp3 collection. I love music, but I'm not terribly organized (anyone who knows me can confirm the typical state of my desktop, both real and virtual). Aside from having an historic aversion to sorting and organizing, I have a specific challenge with music. I don't have a good memory for it. I can remember arcane technical detail from my software development experience of the early 1990's; however, I can't recall many of the bands I heard play at Lupo's or the Living Room, let alone albums or song titles. It is hard to connect what I am in the mood for with an array of album covers or song titles.

Pandora lets me chose one song or artist and then it creates a perpetual play list of songs I might like, and most of the time it is right on target. The application grew out of the Music Genome Project which sought to "capture the essence of music at the most fundamental level," and then proceeded to catalog their findings in what must be a gigantic database. Pandora makes this database available to me without searching. With only the barest of a suggestion from me, it has an idea of what I might like. Of course, as these folks know better than I, offering up a song or an artist is no small suggestion of my taste in music. A single song has a number of qualities that indicate what I'm into.
It is no random chance that I found Pandora, since they use OpenLaszlo as a development platform. It's always nice when someone uses your tech to create something wonderful. It's at the heart of why I write software. Seeing Pandora was particularly cool, since they really understand what we call the "cinemtatic user experience" or, as we say 'round the office, what it takes takes to make an application Laszlo-riffic. I don't intend to take any credit away from the Pandora folks. While our platform enables beautiful design and makes it possible to build a fluid and intuitive interface, great design doesn't happen automatically. Great design takes inspiration, insight, thoughtfulness, and most importantly, people who care about it.
I am pleased to announce the official release of OpenLaszlo 3.0, previously known as Laszlo Presentation Server. The new name is in honor of Laszlo's commitment to its open source platform. Since the initial release, which allowed folks to download the source in a zip file, you can now find...
- source code access (in subversion)
- open bug tracking
- developer wiki
- active developer mailing lists
- IDE4Laszlo
Kudos to Oliver, Tucker, Henry, the rest of the Laszlo team, and members of the community for making it happen!
You can downlaod the new release and enjoy the awesome new features. Here are my favorites:
* SOLO (or Standalone Open Laszlo Output) deployment mode that creates a standalone file that can be used with any web server, including those that don�t allow an installation of a J2EE servlet. No Laszlo server required.
* Unicode support for source files and datasets. The framework text components also support Unicode editing.
* A drawing API that implements a subset of the WHAT-WG graphics API, enabling JavaScript code to create graphics on the client, on the fly.
* Dynamic libraries that can be used to significantly reduce the initial download size of an OpenLaszlo application.
* Optimizations for Flash Player version 6, with support on over 96% of consumer browsers, and optimizations and support for the Flash Player version 7 for even faster performance under managed deployment. Both size and speed improvements -- woo hoo!
* Client text optimizations, allowing the use of embedded fonts for total visual control, or HTML-style client fonts for smaller application size and faster text editing.
* Better HTML integration through a resizable canvas allowing OpenLaszlo applications to be sized proportionally to the enclosing HTML page. This is really nice and well integrated -- you can specify constraints like width="${canvas.width-20}".
* Better JavaScript integration with functions in OpenLaszlo applications making calls to JavaScript in the surrounding HTML page.
* Better navigation capabilities as OpenLaszlo applications can intercept the browser �back� button and use it to move around among program states. Simple API to control history state -- see LzHistory for details.
* Laszlo Systems is available to help developers who are using OpenLaszlo via hands-on training courses, technical support, webinars, and consulting to help developers over the periodic hurdles that come up when using a new platform. Laszlo trainings are awesome -- you should sign up.
If you haven't already, download OpenLaszlo 3.0!

A few weeks ago, EarthLink announced its new Enchanced Webmail. It's exciting to see screen shots in public and hear more positive feedback as the news hits less technical press.
Despite some of the headlines , the only Flash used in this project is the Flash Player and SWF file format. It 's Laszlo all the way. Laszlo Mail is the first commercial application that we're building on top of Open Laszlo, the open source platform.
It has been great working with the EarthLink team on this project. It is good to see that this huge company still has awesome engineers, sensible product managers, and executives who will sponsor innovation to deliver great applications to their customers.
The Laszlo tech has really made this application practical. Immersed in the code, I sometimes feel like I've been working on it forever. Taking a step back, I am amazed at the speed of development. As it turns out, e-mail has evolved to have a fairly large minimum feature set and there are a lot of details to get right. In the continuum of web applications from a single form to multiple transactions and dynamic data usually associated with an RIA, this app is on the far end of the spectrum. While the whole app is complex, it can still be divided into modular code for effective team development.
Most of my experience developing applications has been with UI frameworks, written in C++. In my experience these traditional methodologies create a process which is fairly rigid in the latter stages of development. Changes are possible, but expensive. The good teams carefully schedule time for specific design changes which are always necessary, but often can only be seen once the features are all working together. I can only imagine the challenges of such changes in the fragile environment offered by DHTML. I have found working on Laszlo applications to be a refreshing change. I'm used to having to so "no" all the time starting about half way through the development process. With Laszlo, I have been able to say "yes" more often. Relative late in the development cycle, we were able to experiment with UI changes that I never would had the time-luxury to consider in a desktop app. Development cycles have only gotten shorter with the move to web applications, with the Laszlo platform I find we can make good use of that time.
It's a lot of fun to work in LZX, the Laszlo XML-based language. Every development environment has its challenges, but I continue to enjoy the flexibility of the Laszlo platform relative to traditional application development. I've been impressed at how quickly new engineers at Laszlo and the folks at EarthLink have come up to speed in this new language and new style of application development.
Today Laszlo Systems announced that the entire Laszlo platform, including Laszlo Presentation Server (LPS), the LZX language and associated examples and documentation will be released under an open source license. You can find out all the details at openlaszlo.org.
Pinch me. I must be dreaming. Do I work for a cool company or what? Hats off to the pioneers who proved that open source software can also be commercially viable. I've been developing proprietary software forever, but in the last few years more and more people have started challenging the old school notions that source code needs to be top secret to be effective. Its pretty exciting to be working for a company that "gets it."
By the way, we're hiring.
I've been meaning to learn more about XAML and was interested to see a very approachable app demonstrated in a tutorial by Joe Marini (via Sam Wan).
Since I left my msdn subscription at the office, I decided to write the app in LZX (from Laszlo Systems) to see how the two compare.
The Laszlo app is 39 lines of code, while the XAML version is 70. While I don't believe that brevity is all important, I do think it helps.
Independent of the academic interest in the comparison of the two languages. The Laszlo app will, of course, run in your browser today without the need to install extra software or wait for an OS upgrade.
The mapping application gives consumers a visual way to quickly and easily find a hotel. To try it yourself click "search by map" on the La Quinta homepage. Be sure to check out the state of Texas, which has so many La Quinta Inns that a zoom in feature was needed. The coolest thing about this app is behind the scenes. When La Quinta adds a hotel, all they need to do is update a database with the name & GPS location of the Inn and, with a little Laszlo magic, the app does the rest.
"Laszlo's use of open standards makes it easy for us to integrate LPS into our existing architecture without added complexity or infrastructure costs," said Raven Zachary, Director of Internet Technology at La Quinta Inns. (read more)
Daivd Temkin, CTO of Laszlo Systems, puts Laszlo in context following the Macromedia Flex announcement. He writes that Laszlo is XML technology, not Flash technology:
"We think the Web is on the verge of a sea change, with the dual drivers of broadband and Web services, and we see an XML-based framework for RIAs as essential to this transition." (read more)
Laszlo's XML language and framework are a powerful way to create next generation web applications. SWF is a convenient output format, but Laszlo Presentation Server offers significant benefits over raw Flash. In fact, it offers significant benefits over any other method of developing an application user interface.
For the Laszlo developers amongst my readers...
I wrote a little interactive debugging tool that I have found very useful in my own app development. It lets you inspect the view hierachy and see and modify key properties (bgcolor, position, size, visible).

You can try it here. You can change bgcolor and view position. Click on the x/o to toggle visibility. Click on '...' will send the instance to the debugger, where you can click on it for further inspection.
You can download a zip of the source from the mylaszlo forum.
We recently wrapped up version 2.0 of the Laszlo Presentation Server. In celebration of the new components, I opened a couple of Cafe Press stores to special-order some custom Laszlo schwag. It was a fun excuse to check out Cafe Press. Its an amazing business where you can create your own T-shirts, mugs or whatever with custom graphics. The site is very easy to use and I highly recommend it.
So... the stores are open and mugs are sold at cost. I'm posting links here for Laszlovians, Laszlo developers and other fans.

available at http://www.cafeshops.com/laszlofanclub

available at http://www.cafeshops.com/laszloweekend
Art and words by Peter Andrea. I'm not sure that he inteded the words to be immortalized in ceramic. Created originally in a test file, we enjoyed them so much that they travelled into an example file.
Mug graphic preparations by Dan Lewis. Tabs by Christian Walker and Pablo Kang. Checkbox and radio buttons by me. Font by Truth in Design with insane amounts of detail work by Chris Lowrey and Peter Andrea.
A preview release of Laszlo Presentation Server version 2.0 is now available. Woo hoo!
The components were my main gig on this release, jamming with Bret Simister, Peter Andrea, and the gang. I think this may be the first component set created entirely in declarative XML. The complete source code for the components is included with the developer edition. You can check out a component example which you change the style to see the components in different colors. The components use a new "Ultra Pixel" font created especially for Laszlo by Truth in Design.
Download LPS 2.0 Developer Edition and try it yourself.
I often think about programming as an exercise in naming. By naming functions and objects we can use them elsewhere. Defining a term gives you the power to create other more interesting verbs and nouns. Eventually we provide an end-user with a complex or simple vocabulary composed of mouse gestures or type-written characters.
I'm used to object-oriented programming in C++ or Java. Both languages are driven by procedural code. Objects are created in a series of statements. Everything has a name, even temporary variables, loop iterators, and transient objects that are created to support other objects. I generally have a hatful of conventions which spares me from having to think too much about unimportant names.
Lately I've been working with a declarative object-oriented language (LZX from Laszlo Systems). Objects are created within an XML hierarchy. Many objects that appear on the screen or control other objects are anonymous. I only create names for objects when I need to reference them. It turns out that most objects don't need names.
Since I have gotten used to this unusual declarative style of programming I have found it refreshingly easy to whip up a graphical user interface. Its not that I ever thought that Javascript or even C++ was that hard, despite some cumbersome or awkward aspects of each language. Sometimes, it can be challenging to create software. I didn't ascribe that difficulty to the language itself, but rather to the solving of a particular problem.
LZX allows you to mix in Javascript. Where it is more appropriate to solve a problem with procedural code, you can define methods or include a snippet of Javascript to handle an event. Recently I solved a few problems by writing quite a bit of Javascript. I reflected on why it feels so much easier to declare a program with XML tags, depite the seemingly verbose syntax. Part of the ease of declarative XML is that common patterns are encapsulated in tags, but I think there is more to it than that. It seems that there is a certain intellectual overhead in creating even boilerplate names for transient variables. For me this was an unexpected observation.
Howard Dean has made headlines for his use of the internet in his campaign for president. The "Dean for America" website regularly updates the homepage with latest news and hosts the official Howard Dean blog. There is a web application for planning or attending local events that tracks and publishes stats. So far Dean supporters have organized 7,892 events across the country with 86,628 attendees.
The latest addition to this site features a Laszlo event calendar. You can zoom in on a week or a day or get more details about a particular event. Behind the scenes, the Dean organizers have a similar web interface for posting events.
For the last few weeks I've been participating in a project that involves multiple people, yet has no meetings, no rules and is a great deal of fun. The process is facilitated by real world conversation and e-mail, but it wouldn't be so practical and so easy without blogs.
It all started back in July - August when Marc Canter suggested that Laszlo build something that bloggers could use, and Oliver Steele prototyped a laszlo blogging widget. Although Marc talked about the project on his blog and we had a few meetings about it at the office, I didn't have a lot of time to dive in and build it. So we talked and I waited for the time that the project would appear in my schedule or get handed off to someone else.
Meanwhile Mark Davis was working on something completely different for his blog. A nav toy that could be paramterized to display a list of links. The project included one hand-painted gradient png and about a hundred lines of LZX code. Dan Lewis spotted it and handily provided some new gradients and a "powered by Laszlo" footer.
I thought it was neat and and wrote about it. Then I noticed an opportunity. I saw a small improvement that would cause me to want to put it on my blog (adding an XML config file). I set out to make that one change, then got excited and added a few others. Later that night I had morphed it into an OPML viewer. Since I was coding quickly I took out all the parameterization and hard-coded the colors.
Marc Canter sees it and e-mails me: "I want one of those - NOW! I can't wait. What do I have to do?" Lyndon Wong tells me that he wants one too.
Meanwhile, Mark Davis has adopted a few changes but wants to keep his HTML parameterization and extolls its virtues in a hallway conversation. I realize that it would be cool to let the other folks pick their own colors, so I go ahead and put that back in.
So Canter puts my OPML viewer on his page, and Lyndon puts Mark Davis's nav toy on his page. Now Marc has ideas of how to glue it into Topic Exchange and the PeopleAggregator.
Its latest incarnation was inspired by David Temkin's suggestion that we should put a "view source" button right in the app so folks can easily get a glimpse of LZX, the language of Laszlo applications. Peter Andrea whipped up some art. Mark Davis came up with a name. What's next?
We're collaborating, but everyone is doing something different. It's really faciliated by the fact that that we're working with a couple of text files and some linked art assets. Each of us is doing not much work, but it builds up gradually. It seems this little project is a microcosm of what a lot of folks are doing with larger prpjects, using blogs as a communications medium for facilitating loosely connected collaboration.
I was interested using TopicExchange, so I thought I would track the history of this project so far as seen in blog posts. I dug up links to various posts and started adding them to a blogbox topic. After 6 entries, the form won't respond. I don't know if its just this topic or a general issue. Yet another work in progress :) I'll check back later. In the meantime, I've posted the thread of conversation as html, if you are interested.
"Furthering their commitment to continuous innovation, Internet leaders SBC Communications Inc. and Yahoo! Inc. today introduced exciting new customer-driven features..." One of these is a new personalization tools that leverages the Laszlo Presentation Server.
Your average human will not recognize this as a sexy rich internet app -- it's just too darn useful. You can't see it in action unless you are a SBC Yahoo! subscriber, but those of you who are may remember dozens of pages spread across various yahoo properties that used to be the way to modify your site settings. With this new app, Yahoo has introduced centralized personalization settings that are much easier to to find, understand and modify. It's nice to see this kind of technology used in such a practical, helpful manner.
"Failing to work with XML, is, in some circles, tantamount to being unpatriotic or antisocial." -- JSTL in Action, by Shawn Bayern
XML may never catch up to its turn-of-the-millennium hype, but it is a useful standard. Most internet tools and servers these days will import and export XML data. This means that it is increasingly easier to do a small amount of work and interoperate with lots of other software. Where there exists an XML standard for a particular type of data, you can often solve just one part of a problem and rely on off-the-shelf tools to take care of the rest.
After I wrote the last entry on my OPML viewer, it stuck me that most humans (even most techies) have never heard of OPML. (Thanks to Marc Canter for telling me about it.) I'm not even sure how ubiquitous this format is, but it applied well to the task at hand. As with most XML formats, it has its own website and I could read all about it on opml.org and found interesting sample data and software anecdots with a quick google search. Because blogrolling supports OPML export I had an easy data source. I did need to doctor it up for categories, but it was a great way to get my experimental app working quickly.
I recently spent some time with LZX developing a prototype app. I thought it would be interesting to write up how we approached the problem and show some of the results that are now posted on mylaszlo.com.

The problem:
- create an e-commerce app
- 1 week (4 days days for me)
- 3 people
It was natural to consider developing yet another Pet Store, but we were bored with that concept and perhaps other folks are too. We created a store, but chose to sell three varieties of pots: tea pots, garden pots and cooking pots.
The Pot Store is a work-in-progress. It needs some attention to the design to clarify navigation. The graphical elements are pimitive and it is not a fully functioning store. However, it was a great learning experience and employs some interesting user interface ideas.
* The subtotal updates as you buy, with a small motion to draw the user's attention. You can see a summary of what's in your shopping cart with rollover, without losing the context of the catalog view.
* The catalog layout is an example of a continuous user experience. You can get product details without losing context. (I consider it a bug that sometimes teapots fly across the screen. They should all move smoothly out of the way to a nearby spot.)
* Shipping/billing Address in the checkout section conserves real-estate and minimizes screen (and brain) clutter by only showing the fields that you need. (click "ship to a different address" checkbox)
I've written up some details on my experience of the development process....
Day 1: Plan the project
We created an interactive spec in LZX. There are 3 main sections.
Catalog (you can click to cycle thru 3 pictures in the mockup)
- feature product view, one from each category
- broswe one category
- product details
Shopping Cart
- subtotal displayed when cart is closed, pop-up summary on rollover
- cart would allow you to change quantity, delete items
Checkout
- fill out name & paymeny info
- ship to different address (checkbox works in mockup)
We split the project into three parts. I would develop a layout for the catalog view; Pablo would create the shopping cart; and Yossie would create a simple database and the checkout process.
Day 2:
We agreed on what queries we wanted from the database. Yossie created a simple MySQL database and some perl scripts that made the appropriate queries. I found 15 teapot pictures and descriptions. Pablo added the cool rollover subtotal feature to the spec. We each started on our parts.
I had never written a layout before, so I read the docs and looked at the code for simple layout and wrapping layout. I created some simple test files.
Day 3: layout motion test
I modified wrappinglayout to create my new layout, which would show the grid of teapot images. When the user clicked on a teapot, details would be displayed. The transition between views was a zoom, where te other images would shrink to make room. This was much easier than I expected and fun to write.
Day 4:
After the layout was working with colored squares, I integrated the image data from the server. Next I needed to integrate the catalog layout into the store app. Pablo had done a nice job of creating a "basket" object, so I could easily call "basket.addItem" to hook up the "buy" button in the catalog view.
Summary:
Pablo & Yossie worked on the app for a few more days. Overall I felt we accomplished a lot in a week, especially given that Yossie and Pablo were learning LZX during the development process. It's a bit scary to post something so raw and unfinished, but we hope that in doing so other folks can learn from our process.
As part of the development team for the Laszlo Presentation Server, I believe it is essential that we experiment with using our software as web app developers. In creating a platform for rich internet applications, we need to develop not only the architectural design patterns of how to hook up data and views, client and server, ui to back-end logic, but also the visual and interactive design patterns that could led to a more usable web.
Feedback and questions are welcome, as always.
Don Park recently spent some time with the Laszlo Presentation Server and drew a nice architecture diagram in his blog. Generating an LZX from a JSP is one way to create applications in Laszlo. A more common development pattern is to simply write an LZX file that references an XML data source. I've drawn a diagram with a similar structure to Don's that shows the HTTP requests from the browser, to illustrate how this works.
1. The user goes to the web page "http://mysite.com/hello.html"
(a) the browser requests "hello.html" from mysite.com
(b)The web server sends that document it to the browser.
2. The browser notices that "hello.html" references "http://mysite.com/hello.lzx"
(a) The browser requests "hello.lzx" from mysite.com
(b) The Laszlo Presentation (LPS) finds "hello.lzx," creates a SWF and sends it to the browser.
3. Your app has referenced a data source (an XML file on the server's local file system, on any other server, or dynamically created XML develivered over HTTP)
(a) The LPS-generated SWF makes a native Flash call that causes the browser to send a request to LPS
(b) LPS fetches the data (which is in standard XML). It transforms the data into native Flash goop and sends it back to the browser.
(c) It appears in the SWF auto-magically datamapped to the appropriate view or whatever you asked it to do in your LZX file.
What Laszlo has done is to normalize the Flash runtime for the creation of applications. It all ends up running in the Flash player, but there is a bunch of Laszlo magic that lets you focus on application development and interface design. Laszlo provides a framework, which includes a view system, data mapping, layouts, constraints and all sorts of useful stuff.
One last technical note, LPS does a bunch of smart caching. If an LZX file or the data source hasn't changed, LPS efficiently delivers the same bunch of bits it created for the previous request. Incremental compiles are achieved by breaking up your app into separate files, typically using the <library> tag. Then LPS only compiles the file that has changed.
Laszlo Systems has developed a server technology, the Laszlo Presentation Server, designed specifically for developing and deploying "rich internet applications." I’ve been following the company since its inception and recently joined the engineering team.
Laszlo combines the power and simplicity of a declarative language with an intelligent use of standards. Many complex processes can be expressed as concise LZX tags, dramatically reducing the time it takes to build and debug a complex web application.
It's the way I've always wanted to build Flash applications:
- using a code-centric IDE
- editing simple text files
- interactive debugging
- saving revisions in Perforce (and being able to diff them!)
in a language that makes it easy to:
- use dynamic layouts that resize (constraints)
- integrate XML data sources without pages of parsing code (datapaths and replication)
- get server-side data without the hassle of asynchronous programming (data binding)
I’ll be showing some fun demos and giving an introduction to the LZX language tomorrow night at the Macromedia User Fourm (see previous post).
You can learn more about Laszlo and sign up for the developer release from the Laszlo Systems website.