The Ajax Experience

I just attended the 2007 Boston Ajax Experience. Its been a while since I attended a conference like this. It is nice to have an employer (BEA) that recognizes the value in such things. The conference was excellent. It was full of great topics and the presenters were top notch.

I’m not going to describe each session but I’ll mention a few that stand out in my mind. I’ll also throw out some random thoughts, impressions and lessons learned.

Most sessions involve me trying to soak up as much information as I can. The ones I find most interesting are the ones that get me thinking.

Dan Yoder’s talk “Stylesheet-Based Behaviors: Motivation, Challenges and Implementation” was quite thought provoking. He has come up with a way to declare behaviors associated with HTML markup in much the same way that CSS declares styles. His opinion is that behavior should be separated from markup just as style is and that behaviors can be owned by designers. Rather than simply tell us about his library he walked us through his thought process and the evolution of it. I should really go into more detail on this topic in a future post. You can learn more about the behaviors library here.

A late addition to the conference was Alex Shvedoff’s talk “Infrastructure Inversion: The Future of Software and Technology Risk”. At the time I had no description of this topic and it was only because I wasn’t interested in the other two concurrent sessions that I attended this one. Once you filter out the obvious marketing message for the SmartClient product (soon to go open source) the main point is that the model, view, and controller all belong on the client (browser) side. The web server is simply a data source. I consider this an important architecture decision. My current leaning is that progressive enhancement is important and therefore much of the view and controller belong on the server. But as more dynamic behaviors get added to web applications the function of view and controller get split between the server and client. As having two different ways of doing the same thing is generally a bad idea the case for moving it all to the client seems compelling. Alex made a good case for what he calls ajax MVC. It is clear that these guys are used to talking to corporate customers. They should consider updating their message for a conference like this.

I enjoyed a number of talks from John Resig and the creator of jQuery. He is a very good speaker. I’m also a big fan of jQuery. I first played with jQuery almost a year ago. I hope I get a chance to use it more.

The talks on jQuery and Advanced jQuery were very impressive. You can do really cool things with very little jQuery code.

The “Advanced Web Application” security talk by Joe Walker was very useful and well done.

I was also very impressed with the Selenium demo.

Thoughts, impressions and lessons learned

XHTML is dead, a mistake, a wrong turn. I had learned this already but it was nice to hear it again. The future is likely HTML5. So I guess I better start reading the spec. Same goes for XForms – is dead.

I saw a lot of Macs. More than I would expect from a random sample of the population at large. I don’t use one so I was impressed with the sexy UI that I saw as presenters switched between slides and demos.

Flash and ajax work well together. I still have a bias in favor of ajax but now see the benefit of using Flash for things that ajax doesn’t do well or at all like video or audio.

AJAX is lowercase now. I guess AJAX is still proper if referring to the original acronym. But ajax has taken on a broader meaning.

A question on my mind and many others as well is how to choose an ajax library or framework. In a keynote with Ben Galbraith and Dion Almaer they showed a slide with a picture of a dart board. The implication is just pick something and move on. I’m not sure it is that simple but there is some wisdom there. The libraries are starting to mature and the feature sets are converging. If you pick one of the top four and stick with it you probably won’t go wrong. John Resig gave a nice overview of client side open source libraries and narrowed it down to just these four: Prototype, jQuery, YUI, and Dojo based on their popularity as determined by an Ajaxian survey. My current leaning is jQuery or Dojo. I’m not sure which yet and it may depend on exactly what I need to do. I don’t remember who said it but during the Ask the Experts session someone said you choose the library like you pick a Presidential Candidate – by listening to their talking points. (who has time to read the code of each library and use it extensively before making a decision.) I could give reasons for why jQuery or why not Prototype but it mostly comes down to gut feel about the library and this comes from how the library is marketed.

All this is assuming you want a client side library as opposed to something server side or end to end. At this point that is not what I am looking for.

Dojo, Prototype, and jQuery were well represented with more than one session each. YUI was a no-show at this event.

Firebug (a Firefox add-on) was repeatedly praised. I use it, but watching how well many of the presenters used it during demos made me realize how much more I could be doing with it.

Firebug is an excellent tool and I think it helps the spread of Firefox even beyond the development community. Microsoft used to understand the importance of good tools. There was a time when Visual Studio was a lure to develop on Windows. (I even worked at a place where the product ran on Solaris as well as Windows but most of us used Visual Studio.) I think Microsoft forgot this because now Visual Studio is lame compared with the Java tools and IE7 developer toolbar is best described as better than nothing. Now, the comparison between Firebug and Visual Studio is not completely accurate because web developers are, for the most part, not developing for Firefox to the exclusion of IE but 1) the primary development environment often gets the most testing so web apps are starting to work better in Firefox and 2) developers talk about the tools and platforms they love. In the Visual Studio days I would tell people about up and coming Windows 95 and now I recommend Firefox.

An amusing comment regarding GWT during the ask the experts session (I forget who said it): GWT uses the worst part of Java – the language.

A recurring topic of discussion at the ask the expert sessions and other sessions was; what do we need from future browsers? Here are a few things I would like: CSS 3, jQuery Core built in, some kind of graphics support (not sure if it is SVG or canvas or what), video, sound, and Open Ajax Hub built in. Improved security seemed to be a universal desire.

There was some bad-mouthing of CSS for layout. The experts had differing opinions. Some said CSS is broken and some said not so broken. JavaScript layouts were held up as a solution. I’m not so sure using JavaScript is a good idea for layout at least not completely. It goes against progressive enhancement. I think that CSS should be used as much as possible and JavaScript used in an unobtrusive way to fill in for things that CSS can’t do.

A best practice for creating ajax apps was demonstrated in the Advanced jQuery session. First create the application so that it works without ajax. Then add ajax behaviors in an unobtrusive way.

There was way too much interesting and useful stuff for a blog so I’ll just stop here.