“The consumer’s online experience reigns” says Mike Lunsford of EarthLink. EarthLink is offering its nearly one million broadband customers a new Personal Start Page (PSP) enhanced for high speed that ensures that data is continuously updated and displayed in real-time. It is awesome to see this in practice.

You need to be an Earthlink broadband subscriber to really see it in action, but I’ve captured some screen shots to give you a peek inside. There are nine different options for people to choose, ranging from pratical to dramatic. Each provides access to the same data and has a moderately configurable layout.

My favorite are the panoramic views. You can scroll to the right and the left for 360 degree panorama. In addition to text displays, there is ambient data in the scenery. Without reading the text you can see that the market was up and I had new mail when I took the screen shots around 8pm this evening.

“EarthLink chose Laszlo Systems for its ability to deliver an outstanding personalized user interface and also because the Laszlo Presentation Server standards-based, XML-native platform easily fits within EarthLink’s systems and workflow, allowing EarthLink’s developers to use their existing skill sets. As a result, developers are able to integrate information from several live content providers, easily update and maintain code, and collaborate across teams.” (read more in the press release)

For thousands of years, philosophers and scientists have attempted to explain the cosmos in terms of dual opposing but coexistent principles: good and evil, yin and yang, matter and energy, mind and body, waves and particles, and, of course, programming code and markup languages.

Programming and markup currently coexist in an uneasy truce. In theory, programming languages can do anything the computer is capable of, but they’re often clunky for the job of laying out text, images, and controls in a simple visual interface. Markup is great for defining highly textured pages of text and images that adapt to different screen sizes and environments, but is hopelessly inept when it comes time to interact with the user in any nontrivial way. — Code Name Avalon, MSDN

Declarative programming has been actively used for web application since the early years of the web. PHP and CFML enabled easy access to server-side logic and services by encapsulating them in tags that felt like HTML.

Initially, on the client-side, Javascript provided the mechanics that enabled DHTML to drive richer experiences. Although its hard to separate the potential effectiveness of this model from the headaches inherent in the lack of cross-platform support that fell out of the browser wars of the late ’90s, the later emergence of declarative GUI shows more potential for providing the next generation web experience.

XUL was probably first on the scene. It may at first look like HTML, PHP, JSP, or CFML markup because of all the angle brackets, but the tags represent more powerful objects and ones that people can interact with.

LZX from Laszlo Systems is the declarative web GUI language from which I draw my conclusions. I’ve developed desktop application UI in C/C++, then web applications in Shockwave and Flash, and even some for plain-old-HTML. I imagine a new user experience for the web that leverages lessons learned from desktop UI and “multimedia” yet is appropriately evolved for this new space.

It is neat to see a plethora of emerging technologies using this kind of approach. At the PDC, Microsoft unveiled XAML (to be released with Longhorn in 2006) and this week Macromedia formalized its Flex stratgey (the previously code-named Royale product to be released mid-2004). In addition to XUL from Mozilla and LZX from Laszlo that are already released, there’s XWT and similar tech. One can only hope that the innovations of language and platform will drive a the development of a better human experience of the world wide web.

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.