Introduction

First, a confession: Initially, I Didn't Like Web 2.0. Here's why...

My first exposure to Web 2.0 wasn't pretty. It was very early on in the days of DHTML, and I was part of a team working on a browser-based presentation system. We wrote TONS of JavaScript. There were timing issues. There was a lot of conditional code based on the browser being used. The code became ugly, unwieldy and fat. I dreaded working on some components of the code because they were simply "messy".

I was so turned off by my experience that I actually wrote an entirely different system which avoided all DHTML. Not only was this system much cleaner, but it actually ran faster in the browsers of the day. (By the way, those browsers were Navigator 4.7x and Explorer 5.0.) Needless to say, my opinion of JavaScript and DHTML was very low. As a result, I generally avoided any clever tips and tricks within the browser.

As time went on, innovative sites started popping up on the web. Like many people, I can remember being blown away the first time I saw Google Maps. Next, I noticed that a number of JavaScript toolkits had emerged. Some of the people I respected in the IT community started to tout the value of these toolkits, so I figured it was worth another look.

Unfortunately, most of these toolkits required you to be a JavaScript genius. Even more, the introductory sites focused on things like "DOM manipulation" without really starting with a business problem. To make things worse, the documentation was horrible. No, I mean really, really horrible. (And, in my opinion, some of this documentation remains bad to this day.)

I get fairly stubborn about technology, so I kept plugging through the toolkits. After seeing a few more examples - and a collection of browser-based "widgets" - something clicked: I started to see how this Web 2.0 technology could save me time and make the end user's experience better. But this realization came after months of investigation.

The basic problem is this: Most "web developers" focus on server-side development platforms. (Read: Java EE. .NET, etc.) These developers are looking for an evolutionary explanation of how client-side technology can help them. Unfortunately, most JavaScript / Browser toolkits are presented as a revolutionary model. And, only after trudging through half-baked examples does it become apparent how developers can take incremental steps to embrace this technology.

My goal in writing these articles is to turn that model around. In other words, I hope to describe how a developer can embrace Web 2.0 principles without throwing out everything they know about web development.