AjaxWorld wrap-up
Back home now after AjaxWorld, with the jet-lag beginning to fade. It was, on the whole a good event, though not quite what I expected. For starters, it was smaller than I anticipated: fewer delegates, fewer talks and a smaller trade show. I was basing this on Semantic Technologies, a conference held in the same venue. I expected that SemTech would be a more niche interest, but the last time I was there (2008), it was significantly bigger than AjaxWorld turned out to be. The explanation may be the economy, or the fact that there’s another AjaxWorld on the east coast USA earlier in the year. Still, I found plenty of people to talk to in the breaks, and some very interesting talks.
On the plus side, I did get a pretty good overview of the state of the art in rich internet applications (RIA). We’re not doing much RIA work in our project at the moment, but anticipate doing so soon. Now is a good time to get a general feel for the options, in anticipation of making some technology choices for the UI part of the project in the near future. I found that there are more Javascript libraries/frameworks than I thought, even though I already knew of quite a few. There are also more choices for approaching pure-Ajax (as opposed to other RIA) UI’s without directly programming JavaScript: I already knew about GWT, of course, but for example IceFaces lets you render your UI into a DOM on the server-side, then has clever ways of echoing the server-side DOM to the client. Neat. Taking another tack, Appcelerator lets you build on a message (aka event) oriented architecture familiar to Swing developers, but lets you pass events to and from the server, as well as within the client. There were plenty of other cool demos on the trade show too.
On the downside, I was hoping for a bit more analysis. It seems to me that a taking a RIA or rich client approach can bring some pretty significant architectural challenges. How much data should be cached in the client? How to ensure security if the client is outside the corporate firewall? How about architectures for running disconnected? I know about Gears and Air, but how to really exploit those platforms effectively? What are the anti-patterns to avoid, and the good patterns to adopt? There were fragments of this (and there was a self-contained Ajax security bootcamp on day one that I didn’t attend), but I’d have liked more. There was a bit more analysis on the split between development and design, but I think there’s more to play out in this conversation (see separate post).
Double downside: too many of the talks were basically extended product adverts. “See, here’s a feature of our product. And another. And another.” Yawn. I’m cool with people using their own personal or professional experiences – actually, they make for better narratives than empty marketese or dry theory. But there’s a line. The better talks made some general points about the industry, trends, architectures, whatever. The big name keynotes (especially Microsoft and Adobe) handled this gracefully while still getting their own “Look! Shiny!” points across.
The conference hotel was nice, but expensive. I didn’t think so at first because the basic room rate isn’t too bad for large US hotels, but the meals were expensive and parking is US$26 a day. Tip: if you stay at the Fairmont, join the loyalty programme. Free to join, and immediately saves you (or your budget holder) US$16.99 a day in in-room internet charges.
All said and done, I think I’m going to recommend to my boss that we do our RIA prototyping in Flex. I’m not 100% sure what the right option is, long term. Indeed, it probably depends a lot on context (consumer vs. enterprise, for example). But I liked Adobe’s story on the ubiquity and consistency of the Flash engine, Flex itself looks like a nice environment to work in, and I heard enough speakers at the conference to validate that view. If we worked in a .Net environment, then Silverlight would be an obvious choice, but our back-end code is all in Java. Flex plays nice with RESTful web services too, so putting a Flex front-end on my Ruby code won’t be a problem.