Notes on Rich Web Experience 2007, San Jose, CA
HUGE was kind enough to send me to the Rich Web Experience conference in San Jose earlier this month. Overall, I give the conference high marks. It’s a pricey conference, but they included three meals a day (which weren’t bad) and the conference was a 12+ hour experience on each of the first two days. I also met one of my idols, Jeremy Zawodny, albeit briefly. The interaction designers were all star-struck with Jesse James Garrett, but I’ll take the author of mytop and an especially good blog over JJG any day.
The best talks I saw were ‘Merging Ajax and Accessibility‘ by Mark Meeker, ‘Architecture for the Rich Web‘, by Nate Grover, and ‘YUI: A Foundation for Rich Web Experiences at Yahoo and Beyond‘, by Eric Miraglia.
Merging Ajax and Accessibility
Mark Meeker stressed the importance of progressive enhancement: building a site that works without Javascript or CSS, and progressively enhancing the user experience for clients that can take advantage of CSS and/or Javascript. He gave great examples of using forms as a substrate for DHTML/Ajax web applications in such a way that — even though the experience will be different — people using screen readers, braille displays, and screen magnifiers will have access to the same information and functionality. Mark also pointed out another (fairly obvious) huge benefit of progressive enhancement: mobile and low-tech browser compatibility.
Some food for thought: the ARIA specification, and the legal ramifications of not being accessible. Check out the Firefox Accessibility Extension and the Color Oracle (to test for color-blind-friendliness).
Architecture for the Rich Web
The primary lesson I learned from Nate Grover’s talk was building javascript components to be ‘agnostic about the data source’. That means javascript components should interact with other components as if those components retrieve data asynchronously. To do so, callbacks are passed along with requests sent to components (the observer pattern). In this way, components don’t wait around for responses from other components, holding up execution; rather, execution continues, and whenever the component is ready with its response, it triggers the callback from the calling component. It’s just a tad complicated, and Nate explained it a lot better than I am here, but I think this technique can be very useful, especially if you want to make components that can behave in a synchronous or asynchronous manner, depending on context.
Nate also spent a fair amount of time stressing the importance of simplicity in the interfaces your components present. He gave some pointed examples of how some popular UI libraries sabotage their own reusability by packing too much into interfaces (scroller = new Scroller('elementID', optionsObject);), rather than providing simpler APIs (scroll(elementObject, direction, time)).
YUI: A Foundation for Rich Web Experiences at Yahoo and Beyond
Eric Miraglia really sold me on the YUI library. It’s modularity may be a double-edged sword, given the minor complexity of figuring out which combinations of files you need at a given time, but it’s a well-considered compromise. In general YUI allows you to produce great, rich applications with a truly negligible download size (in terms of YUI components, anyway). Watching the code examples skip by on the screen, I also noticed a perfect consistency of interfaces; YUI is truly thought-out from top to bottom, making it a friendly, predictable creature to work with. Since Yahoo! uses its library internationally on its extremely high-traffic web properties, one can feel assured that the code is well-tested and compatible with all of the major browsers.
On the CSS side, I’m particularly interested in YUI’s CSS Reset — it irons out most of the most troublesome browser differences in terms of ‘default’ styling, which definitely reduces the need & temptation to resort to browser hacks. The CSS Grids, while they seem nice and reusable, did not appeal to me too much. Perhaps I’m a masochist, but I don’t mind laying out my own grids, and it’s worth hand-coding grids to get more semantically meaningful HTML.
Also mentioned: the YUI Compressor is currently regarded as the best javascript minifier out there. Check it out.
JavaScript, OOP, ajax, platforms and frameworks, richweb, softwarearchitecture




