Ajax: The State of the Art with Dion and Ben
This morning, I added Dion and Ben's talk titled Ajax: The State of the Art. Below are my notes from the event.
Ajax started out as a bunch of hacks. It showed that we could take our web interfaces and do a lot more with them. A hack isn't necessarily a bad thing. Often, they turn into something much more elegant over time. The new browsers have many amazing capabilities that we haven't taken advantage of yet. We've seen discussions on Ajax go from how to do XHR to frameworks and how rich and mature they are. Dojo is great for Enterprise Development (packing system, namespaces). jQuery is well-suited for lightweight developers (PHP). Prototype is fantastic for people who do a lot of JavaScript development and take it very seriously.
Today's Ajax landscape is mature, really rich, and really exciting. Today, Dion and Ben are going to talk about technologies they're really excited about for the future.
Canvas
The building blocks of the web are text, boxes and images. With canvas, it really makes a lot more things possible. You can do bitmap rendering and image manipulation. They're showing a slide with Doom and Mario Kart running. Canvas 3D does true 3D rendering. Firefox and Opera have done prototypes of this. Can you do canvas-type things today in a browser? Yes, if you use Flash or Curl. Dion and Ben are excited about canvas over plugins for the following reasons:
- No start-up delay
- Available on mobile devices today
- Rendering fidelity with browser (especially important for typography)
- No bridges necessary (no marshalling/unmarshalling)
- Not a plug-in
The <canvas> tag originally came from Apple's Dashboard. Dashboard's programming model was in HTML and JavaScript. Dashboard is using WebKit under the covers. Today, canvas support exists in every major browser except for IE. The good news is there are Flash and Silverlight bridges to add support to IE. There's also an ActiveX component that wraps the Firefox implementation and allows it to run in IE.
SVG
Dion and Ben aren't that excited about SVG because it's such a huge spec. We've been struggling with the HTML standard for the last 10 years and the thought of another huge spec for the next 10 years isn't that appealing.
Fast JavaScript
Almost all major browsers have a Fast JavaScript implementation. Chrome has V8, Safari has SquirrelFish Extreme, Firefox has TraceMonkey and Opera has Carakan. This is exciting because of industry trends and how companies are trying to reduce computation cycles in data centers. The more computing that can be put on the client, the better. IE doesn't have anything, but Dion and Ben believe they are working on something.
Web Workers
Interface latency is awful for applications. Jakob Nielsen once said:
0.1 second is about the limit for having the user feel that the system is reacting instantaneously. 1.0 second is about the limit for the user's flow of thought to stay uninterrupted, even though the user will notice the delay.
Anything that takes longer than a tenth of a second should be pushed to a background thread. Unfortunately, there are no threads in the web. Maybe we can add threads to JavaScript? Brendan Eich has said that "Threads suck" and there's very little chance for threads getting into JavaScript. Gears brought Worker Pools and this is going into HTML 5 as Web Workers. You could also use Java applets to do this. With the latest Java Plugin, many of applets' long-standing issues have been solved.
Desktop Integration
The ability to build desktop apps as web apps is very exciting. There's a few technologies that demonstrate this: Fluid, Mozilla Prism, Adobe AIR, Appcelerator Titanium and Gears. The Palm Pre demonstrates the logical extension of this. The Palm Pre uses the web stack as its developer SDK. It's very cool that web developers don't have to learn anything new to become a Palm developer. Desktop integration is exciting especially if we can access desktop applications like email and address book.
The Ajax frameworks that are out there have done a lot to make web development simpler. However, there's still a lot of pain with CSS and cross-browser issues. What if you took canvas and combined it with a sophisticated grid-based layout in JavaScript?
There's a lot of platforms out there: Microsoft Silverlight, Adobe Flash, Apple Cocoa and Sun's JavaFX. The web often isn't considered a platform. Dion and Ben believe there should be an Open Web Platform. The problem right now is there is no central location to find out how to get stuff done. You have to search and find resources from many different locations. Mozilla is putting it's resources into creating an Open Web Platform. This site will consist of 4 different areas:
- Home
- Documentation (for different frameworks, browsers, quirks)
- Dashboard (state of the open web)
- Roadmap (what's going on)
This is not just Mozilla, it's very much a community effort. This is something that Ben and Dion have been working on. But there's something else they've been working on too. They've been talking about all these cool things, but what about an interesting application to test all these technologies?
Bespin
As they looked at code editors, most of them provide awful user experiences. Bespin is the Editor of Your Dreams and contains the following features:
- Accessible from anywhere - any device in any location
- Simple to use, like Textmate (not heavyweight like Eclipse) - an editor, not an IDE
- Wicked Fast - performance, performance, performance
- Rock-solid real-time collaboration, like SubEthaEdit - it just works
- Integrated command-line, like vi - Fun like Quicksilver, social like Ubiquity
- "Self-hosted" environment, like Emacs - For extreme extensibility, but with JavaScript!
For viewing files, they couldn't bring themselves to use a tree. Instead, they developed a file-browsing interface that looks very much like Apple's Finder. Personally, I like Finder, but wish it had Windows Explorer's path bar that allows you to simply type in the path without mouse clicks. Back to the command line. They've done a lot to make things more discoverable so users can easily find the power of the editor.
Bespin could be used to engage developers more with open source projects. Checking out projects, modifying code and creating patches can be a real pain. Bespin could be used to interface with open source projects in the cloud. You could login, modify code and easily patch/build with the click of a button. One other thing they want to do is to have the server do code-analysis as you're developing.
Is it OK to love a software tool? You must love your software tools. What we do as Software Developers is one of the most difficult jobs on the planet. Programmers, like poets, start with a blank slate and create something from nothing. If you don't love your tools, you'll start resenting what you do. If you don't love your tools, it shows in your work. -- Dave Thomas at RubyConf08
Thunderhead
A GUI Toolkit written with canvas and JavaScript. Allows you to do layouts with very little thought. It's a lab experiment that's in progress, stay tuned for more information.
All users care about is the user interface. Dion and Ben believe there's a key to creating compelling user experiences. It all has to do with managing expectations. It's not that different from how you manage relationships in your life. Expectations for movies and games have changes drastically over the years. What used to be the web (animated gifs and awful web pages) has also changed drastically (video of Apple's online store). What was cool with MapQuest got changed drastically with Google Maps. What we have today isn't the end of the game - expectations will continue to change. However, users have different expectations for software.
Alan Cooper has done some interesting work in this area. The software designer needs to focus in on a user's goals. There are basic things you can apply to all users, for instance "sex sells". An example of this is Delicious Library. This application allows you to keep track of things in your home such as books, movies, music and games. They made $500K in 3 months and made $54K the first day, with no advertising.
The quality of any software is determined by the interaction. If the interaction isn't good, it will poison the entire experience. Donald Norman has a good quote: "Attractive things work better". In society, this is often called "Dress for Success".
The Open Web is hear to stay because it has:
- An Easy Programming Model
- Easy Remoting
- Extensive Customization Vectors (e.g. GreaseMonkey)
- Easy Deployment
- Great Widgets
- Great Visual Effects
- Great Mobile Story
- Desktop Integration
- State-of-the-Art Plug-ins
Bespin is a tech preview that they hope to release next week. Thunderhead will be released at the same time.
Conclusion
This was a great talk and easily the most inspiring of the conference. Dion and Ben always do a great job and the sexiness of their presentation made it all the more appealing.
Posted by Matthias Wessendorf on February 05, 2009 at 06:19 PM MST #
Mattias,
We will get the talk up, probably to go with the fun next week.
Thanks for getting up early to be there Matt!
Cheers,
Dion
Posted by Dion Almaer on February 05, 2009 at 06:27 PM MST #
Although, I did a lot pure JavaScript stuff quite before all this became AJAX I think it is pretty horrible to develop Web frontends this way the next decade. Even if I disregard all the limitations of JavaScript language design, I can't get rid of maintenance hell.
Even if we get powerful libraries to imitate a desktop with the Canvas tag, how long do we have to wait to get a similar presentation of todays Flex? Sure, 3D is cool stuff (http://exciting.jigetiser.com). But, how many real world use cases do we will have in business to use it for?
The plugin discussion is a problem at the moment. But, in a year or so nobody will argue against a Flex implementation anymore. The market coverage will be beyond 95% for the minimum required flash player.
For me Flex has the better, because it is easier, programming model ;-). Some thoughts:
http://blog.rainer.eschen.name/2008/07/02/flex-supports-spring-are-you-ready-to-skip-web-20
Posted by rainwebs on February 05, 2009 at 07:29 PM MST #
Posted by Chris on February 06, 2009 at 03:46 AM MST #