in Uncategorized

My Thoughts on AJAX

I’ve been sitting on a lot of thoughts about this whole AJAX phenomena that is sweeping the industry lately. Tons of people have thrown their two cents in already and I’ve been meaning to post my thoughts, so here goes. 🙂 

First off, let me beat the horse one more time and say: AJAX is nothing new. It’s a nice initiative to have a standard library, but people are kidding themselves when they say this is a revolution of the web. The very browser features that AJAX is founded on have been in IE forever. If you want to wonder why people write proprietary stuff for IE it’s because, pretty much up until Mozilla came along, it was the only browser that offered enough power to actually be able to create DHTML applications like those that we’re just starting to see in the mainstream these days. If you want to blame someone for it not being available in other browsers, blame the creeping standards body which to this day still has no specification for something as simple as a component model in DHTML despite the fact that a proposal from Microsoft has been sitting in the queue since 1998. Yeah, it wasn’t perfect, but if it was adopted even in it’s original form the development world wouldn’t still be writing script to emulate such an architecture to this day.

As usual, there’s a bit of a double standard when it comes to standards. Why is it that people can overlook that this is a proprietary extension by Mozilla (adopted from Microsoft no less!)? Why aren’t the all the standards zealots who love to constantly bitch about IE’s non-compliance with the DOM going insane over the fact that there’s a perfectly good specification, called DOM Level 3 Load and Save sitting there in recommendation status since 4/7/04, which Mozilla should have implemented instead of cloning IE’s XmlHttpRequest? It should also be noted that in addition to the cloning of the proprietary XmlHttpRequest, Mozilla has also followed Microsoft in introducing it’s own proprietary DOM document creation APIs (Microsoft has XMLDOMDocument via ActiveX, Mozilla has DOMParser/XMLSerializer as first class JavaScript objects). Why go proprietary when there is also a perfectly good specification for these things sitting around waiting to be implemented called DOM Level 3 Core?

What actually prompted me to finally sit down and write something up was my pride rising up when I read this post I came across today over on Dare’s blog. 🙂 I would argue that my company actually beat Microsoft’s Auction Demo App hands down because we wrote a fully functional, browser based staff tracking application, called StaffTrak, on IE4.0. This is obviously well before there was even any XmlHttpRequest available, so how’d we do it? Well back then Microsoft had this nice little Java class called the XMLDSO, which is short for XML Data Source Object. We did all our communication with the backend by embedding the XMLDSO Java component on the page via <applet> and then automating it with JavaScript. I’ve written about this application before, but here’s the details again. I wrote them up on 2/15/99, so when I say “last year” obviously I mean ’98. Also I found this article about my old company, Square Earth, which mentions our work on the project and, if you notice, is dated 10/3/97 (note: you need to scroll down a bit). Oh and btw, yes… this application was actually deployed into a production environment and provided a real world solution for Microsoft’s NYC office. 😉

In closing, I want to be clear I’m not against AJAX, Mozilla or Google in any way. In fact, I’m all for a standard script library so I can stop having to invent it all myself. 🙂 All I’m trying to get across is that this stuff has been happening on the web for years. Google just happen to come out with a very public showcase app for these technologies when they released Google Maps and they certainly deserve all the credit they’ve received for the application because it rocks. In the end though, they should not receive all the credit for being the only company that’s really innovating on the web by leveraging the underlying technologies that the browsers supply us with.

Leave a comment


  1. You’ve got to admit, though, that Google has brought Ajax techniques to the mass-market in a way that other public web sites have not, up until now, been willing to attempt. Most of the examples that I’ve heard referenced have been for intranet/internal applications.The only other sites I’ve seen attempt it in any even close to comparable way have been Oddpost and – and those are IE only. And Google was smart to enough to avoid one of Oddpost’s mistakes – they used just enough Ajax to get the job done, rather than try to recreate an entire Windows app verbatim.

  2. Have you looked at the new Rails support for Ajax? It looks really, really streamlined.

    You did mention you wanted a library that makes it easy…

  3. You wrote:
    > I would argue that my company actually beat Microsoft’s Auction Demo App
    > hands down

    I suspect there are lots of companies who “beat” Microsoft. For example, back in 1998 (on IE4), a little company in the UK produced a content management system for Microsoft Press International to enable MSPress to manage books on their website and to translate book descriptions and localize prices etc.

    This CMS used Remote Scripting which was a way of calling Javascript functions on the server from an IE client. It did this using a tiny Java applet marshalling mechanism and the wire format was psuedo-XML. You have Nikhil Kothari to thank for this ingenious mechanism.

    Anyway, the CMS was able to edit descriptions, publication dates and move the book through a number of translate/publish workflow states all without refreshing the web page because of it’s use of Remote Scripting.

    The resulting content (eg still has the same look and feel it did back in 1999 (and still has the easter egg) so I suspect Microsoft still use the same CMS system we wrote to publish their content – if anyone knows if this is true, I’d love to hear from you.

  4. Kevin wrote:
    > The only other sites I’ve seen attempt it in any even close to comparable way
    > have been Oddpost and

    Another site I’ve got some minor involvement with is On a busy day, click on “Next horse race” at the bottom left, then hit the button in the middle which says “refresh” rapidly. This performs AJAX/GMail-style HTTP requests updating the display rapidly. Now click on a different market on the left hand nav. Changing market is all done client-side with an AJAX call to figure out what sort of HTML to generate on the client.

    In terms of size of Javascript to run all this, I believe it’s larger than GMail uses but not even close to an application I heard about at a large bank – they have 4Meg of Javascript source which implements a trading application.

  5. RichB,

    Yes, I suspect there were plenty out there, but of course I only could speak for myself. I didn’t mean to make it sound like we were the only ones doing it, just wanted to give an example of how long this stuff has been around. 🙂


  6. Kevin,

    Yes, I absolutely admit that. That’s basically what I was driving at in my last paragraph. The public nature of mapping obviously means tons of average users have used/will use Google’s implementation. I wish it were easier for people to see the client application that we’ve done here at my company, but if you don’t need to print documents then you’re just never going to see it.


  7. Yeah, I hear ya. A couple years ago I did some heavy duty Ajax-style stuff – viewing multi-page scanned business documents, switching pages, zooming, panning, rotating, adding annotations, all with no postback. But it’s something only our customers will ever see.

    I have say, after that project (which was a something like 300K of JavaScript), I’m looking forward to ClickOnce in Whidbey. While it was doable, I can’t say it was particularly fun – sometimes, a rich client is the better solution.

  8. I agree, I’ve implemented in the .Mac HomePage web publishing application a column view widget that looks like the Mac OS X Finder that dynamic load content as you select, and it works with Netscape 4 !