AJAXWorld '08: Thoughts and Impressions
This was my second conference as an Atalasoft employee and I must say, 'I have terrible luck.' Back in September, I went with my coworker Rick to ReMix in Boston and, while I can't speak for the both of us, I was largely unimpressed. The content was definitely geared towards a different audience: the sessions progressed very slowly and the demos were more than basic, not showing much at all. To its credit there were excellent keynotes by Microsoft about Photosynth and Miguel de Icaza about Mono (a near-complete .NET implementation for the Linux platform). They both entertained and gave me a lot to take away. Also of note, MLB was there as well showing off their new digs. And it's always good to throw in a plug for the caterers which provided amazing food. Simply amazing.
When I heard that I would be attending AJAXWorld a few months ago, I was pretty excited. I thought it would be bigger than ReMix and attract even larger contributors, like Google-Microsoft-Yahoo-Adobe. It was in NYC, so that's always a plus if you like being in the city (which I do), and its title gave the impression that there was more focus on AJAX and advanced zero-footprint technologies and not just web development. Boy, as I wrong. There seemed to be a similar number of attendees (but all of the small conference rooms were overflowing), the only large companies were Microsoft and Yahoo (Adobe was a sponsor but was never seen and Google must have had better things to do). Vague presentations on Bayeux (a Comet protocol implementation) and an iPhone SDK session (yep, no AJAX here) failed to impress. Apple's NDA certainly didn't help the latter.
Ok, that was my rant, now I'll go over all the sessions I was able to attend and give credit where it's due. I attended the conference with Dave Cilley, who posted his blog the other day about the event and what he thought about it. He attended a few different sessions than I did, so it's definitely a good read.
Tuesday, March 18th
Session 1: Comet - The Web That's Instantly On and Always On
Presented by Jonas Jacobi
The concept is simple. Using a few different techniques, you simply make a request from the client to the server and the server doesn't respond until they have the answer. Because they respond at the moment they have the answer, the client receives feedback the moment it is available and not 5 seconds too late in the case of polling. It gives you a way to build truly event-driven applications using a publish-subscribe pattern instead of being based on Request-Response like almost all current-day AJAX applications.
This presentation on Comet became a talk about server load and faux-multicasting data back to clients. While this is definitely a crucial part of Comet, since you are keeping persistent connections open to each of your clients instead of dropping them every time you answer a request, I don't feel it should have been the focus of this session.
Session 2: ASP.NET AJAX Design & Development Patterns
Presented by Joe Stagner
Joe is a very good presenter, and he brings good demos to the table as well. This presentation put focus on the ASP.NET AJAX Toolkit provided by Microsoft and some best practices when using it. I'm glad he took some time to point out that while it's really easy (and maybe tempting) to use Update Panel, you should do it in very few situations. Because the Update Panel is a do-it-all control, it just posts back the entire page and all of it's data in the background. The server is smart enough to only respond with what is necessary, but there is a lot of overhead in using it. Once the data gets back to the client, Update Panel does its job in shoving the changed content back where it belongs.
He also showed us a text editor called ConTEXT which I will have to look into more.
Session 4: Improving ASP.NET User Interfaces with the AJAX Control Toolkit
Presented by Robert Boedigheimer
I've played with this toolkit before, so it was a nice overview, but there wasn't really anything new for me to see here. ASP.NET AJAX is a great way to create web apps with some AJAXy goodness without having to learn Javascript. One thing Robert pointed out that I wasn't aware of is that you can actually download the source for the toolkit and edit it. Microsoft even provides customers with an snk file so they can sign the assembly for deployment! Granted, whenever you make a change, just know that you're going to either have to support it every time you upgrade to a new version of the toolkit, or you'll have to convince the writers to add in your fix later.
Wednesday, March 19th
Session 1: Can We Fix the Web?
Presented by Douglas Crockford
Douglas created JSON so he obviously knows what he's talking about. This opening keynote (at 7:30am!, ouch) proposed that we need to completely start over on the internet. It was written for static sites with static content that did nothing but bring text to the web. Today, we are trying to build highly dynamic applications that allow us to use the web in ways it was certainly not intended to be used. Sure, he makes a good point. Web development is hard, and Javascript is insecure, and its potential successor is seriously flawed by being entirely backwards compatible, but do we have a choice? When Microsoft releases a new operating system, they risk destroying every application that was every written for it. We have to take this in steps, but Douglas understands that. His presentation was bold for a purpose, to get us thinking about the urgency of the issue and take the steps toward fixing the problem. Here are some of his suggestions in how we might move forward:
- Advertisers should conform to a subset of Javascript called AdSafe. Currently, ads have full access to the DOM and can potentially wreak havoc on any site hosting them. When asked why Yahoo doesn't lead this front, he explained that it will require support from all major online advertisers (Yahoo, Microsoft, and Google) to adopt this standard before it is a viable solution. If any one adopted it first, not only would the standard fail, but that company would see incredible drops in its advertiser base.
- Firefox needs to stop doing evil things with Javascript.
- Google Gears and Adobe AIR (and others) should and use create a common communication protocol.
- IFrames must be eliminated entirely.
Web development is like
Turducken.
Session 3: Developing AJAX Applications for iPhone and iPod Touch
Presented by Kevin Hakman
Kevin works for a company, Aptana, which develops an IDE for AJAX development. It's offered in two forms: a plugin to Eclipse as well as a standalone application, and it has support for Mac OS X, Windows, and Linux which is nice.
For iPhone development, Aptana offers an iPhone emulator and also works directly with the iPhone simulator provided by the iPhone SDK offered for the Mac platform. It provides code completion and some pretty solid debugging features for javascript development.
In addition to the IDE, Kevin talked about a javascript web server called Jaxer. He didn't mention its performance, but it basically allows you to write all of your code (client and server) in the HTML file and use runat attributes in your script tag to specify which end it's destined to run on. You can easily create server-proxy functions (AJAX calls) inline with your javascript without knowing anything about XmlHttpRequest or other AJAX techniques. Very slick.
Session 4: Real-Time, Real-Time, or Real-Time Web 2.0?
Presented by Jonas Jacobi
This was essentially a condensed version of the first session we went to on day 1.
Session 5: jMaki as an AJAX Mashup Framework
Presented by Arun Gupta
This was very interesting. In addition to providing a framework for developing AJAX Mashups, they allow you to abstract away objects from different libraries and allow them to interact with one another "seamlessly". The "j" in jMaki stands for Java, I'm assuming, so I'm not sure how much use I'll get out of it in ASP.NET-land.
Session 7: HTTP Multicast Routing, Scalling the Real-Time Web
Presented by Ric Smith
This went deeper into the way HTTP "Multicasting" works and how it could be implemented. I don't think he needed to go into Comet at all, since it was just another overview with no code, but at least in this presentation, we learned that there was a reason for
why it was so vague... Bayeux is in private beta and they couldn't show
us any code. I'm a big fan of demos, so this was definitely a
disappointment.
Session 9: RIAs with Comet and Critical Updates in Enterprise Environments
Presented by Emil Ong
The only reason why I went to this session is because the presenter was not from Kaazing (the other three Comet prezos were). I have nothing against Kaazing or their products, they just wouldn't show me any cool code because they're in Private Beta. Emil showed off some neat stuff and with his diagrams of how their SDK worked, I was able to better understand how I might implement a Comet solution. Again, the only problem I see here from my perspective is that it's for Java and I work in a .NET shop.
Thursday, March 20th
Session 2: Introduction to the iPhone SDK
Presented by Kevin Hoffman
As I mentioned in my rant, the lack of content in this presentation is not Kevin's fault. He's just honoring the NDA he signed (like the rest of us that downloaded the iPhone SDK) stating he could say nothing about it. Most of his presentation went over the limitations of the SDK and focused on re-showing us what happened at the event where Apple launched the public beta program. One thing that threw me for a loop was hearing that to debug your application, you either need to rely completely on the iPhone simulator, buy an iPod touch, or sacrifice your iPhone! That's right, in order to test your application, you need to install a special version of iPhone software that removes the phone functionality and Edge connectivity, presumably making AT&T happy. According to Kevin, the License Agreement states that there's no guarantee that your iPhone will ever be the same again...
Session 3: Now Playing - Desktop Apps in the Browser!
Presented by Coach Wei & Bob Buffone
This was purely entertaining at the expense of the presenters. They went back and forth in a "tightly orchestrated" dialog that was so corny it made me laugh. I would tell you more about what they had to offer, but I stopped listening when they posted the text "That's Retarded" on the big projector. It was in response to something scriptedly-stupid that his fellow presenter said. While, in context, this could be seen as funny, but my girlfriend is a special needs teacher in a middle school and I have certain feelings about using these words out of the realm of diagnosing a person with mental disabilities.
Session 4: DreamFace - The Ultimate Framework for Creating Personalized Web 2.0 Mashups
Presented by Oliver Poupeney
This was, by far, the most visually-interesting presentation of the entire conference. Through the web interface, he put together a demo workflow right in front of us. It was very impressive to see how a user could tie a web service to a functioning widget and serve it into a mashup.
Session: The Digital Black Belt's Guide to Building Secure ASP.NET AJAX Applications
Presented by Joe Stagner
Both of the presentations he gave that I went to, he started things off with a quote from Einstein: "The problems that exist in the world today cannot be solved by the level of thinking that created them." I found a few versions of that quote online and just picked that one... so if it's not the real Einstein quote then, "I'm sorry, Albert."
But isn't that why we're at this conference? So that we can all put our heads together and become smarter than our past-selves who created these problems in the first place?
Joe showed us some cool tools like WebScarab and put some good examples on the projector that can get people thinking. The big ones were about injecting javascript into SQL making that code run at a later time for someone else that visits the site. Very cool, but easy to defend if you go through the process of never trusting anything that comes into your site like Joe suggests. That's a good rule to live by.