Pink Edition

Look! An Ajaxalope!

Updated: Added fun comic...

Andrei and Design by Fire is back. That is a good thing because he always has some interesting views (although I do not always agree with him). Like in his "I'm back" post where he takes a swing at a number of popular web services.

I'm back and I can't wait to start ripping — err, commenting civilly — about the truly horrendous faddish design aesthetic that is being passed off as the "Web 2.0" thing these days, whatever the fuck "Web 2.0" means.

Look! An Ajaxalope!

- Andrei of Design by Fire

Nicely put, I couldn't agree more.

AJAX and Web 2.0 is dying

Most people do not realize this, but AJAX and Web 2.0 has already been shot to pieces and is now hospitalized without much hope of recovery.

The primary reason is the abuse.

95% of all AJAX and Web 2.0 products are not AJAX or Web 2.0 products. It is something else.

The second problem is lack of understanding.

Few people fully understands what AJAX and Web 2.0 is about. Take AJAX. It stands for "Asynchronous JavaScript and XML". While the JavaScript and XML part is pretty well understood, few sites (less than 1%) are asynchronous.

Asynchronous means that you can do one thing, while the system does something else. Neither has to wait for the other to finish what it is doing. To give you a couple of examples:

  1. At home I got an asynchronous vacuum cleaner. It will clean my floors while I fix dinner, or while I write this article (it's a Roomba). I do not have to either operate or wait for it to complete vacuuming.
  2. A friend of mine has an asynchronous car heater. When it is cold, he can remotely activate the heating system. So while he is getting dressed for work, his car is making itself ready for a comfortable ride.
  3. Most of us have asynchronous washing machines. We can start them, and watch a movie while it finishes.

Asynchronous handling is great! It can really make our life better. But, 99% of all AJAX websites are synchronous. Take 37Signals' Ta-da list, one those so called "AJAX applications". Can you add one item, while the system saves the previous one? No, you have to wait for the "AJAX" function to complete. Can you reorder your list, while the system is updating another part of it? No, again you have to wait for the system to complete the last task. Ta-da list is a "SJAX" application - "Synchronous JavaScript and XML".

Note: Ta-da list is by no means a bad product, it is a really good product - it is just not AJAX.

It is even worse with Web 2.0, nobody understands what that is - and reading O'Reilly's explanation does not help much. And, there is just one catch... There never was a Web 1.0.

Notice: I do not claim to fully understand it either

The third problem is the black & white syndrome.

With Web 2.0 and AJAX there is tendency to focuses on the absolutes - either you are Web 2.0 company, or you not. There is no middle way.

This is a big problem, because that is like saying that you either drive a sports car or you are a looser. Well guess what, driving a sports car sure is fun, but not when you shop for groceries, pick up the kids from school, help a friend move, or when you want to bring your bike into the mountains - and about a zillion other situations where a sports car simply does not work.

"Only a Sith thinks in absolutes."

- Star Wars III: Revenge of the Sith

The world is not black and white, it is not even gray. It is full of colors ...and it is pretty hard to be successful in a colorful world if you only use black and white.

What's next?

Do use Web 2.0 and AJAX (especially if you focus on the asynchronous part) - both are great. Do not rely on them exclusively, use them only where it improves your product. ...And if you really want to be successful, do not ever mention them by name.


But, maybe this will fix it...

From http://www.userfriendly.org

Comments

1

Michael Mahemoff - Jun. 26, 2006

I saw an example of this today - Cellsea Photo Editor (http://editor.cellsea.com/) has a nice little Undo feature, but undoing requires a reload of the original image. Hopefully a future edition will cache the last image and go back immediately.

2

Thomas Baekdal - Jun. 26, 2006

Thanks for the link. I think what I miss the most about it "Live Preview". There is a lot of trail and error when you cannot see what you get.

...and I cannot find a single thing that works in an ansynchronous way. Another SJAX application :)

3

Folletto Malefico - Jun. 27, 2006

I agree on all the line, but I think that I disagree about the SJAX/AJAX definition.

AJAX is Asynchronous referring to the page, in other terms, is asynchronous from the browser refresh: synchronous in this context means that any action must be synched with the page reload. So, asynchronous is "an action taken without reloading the page".

Also, using another point of view, more "technical", the XMLHTTPRequest IS asynchronous: it's the way it works. Yon can't use XHR without handling its asynchronous nature: you have to define an handler for its reply, that could happen in a second or after a few seconds. In any case, it's asynchronous.

If you look at the original definition on Adaptive Path by Garrett you notice exactly this explanation.

:)

4

Thomas Baekdal - Jun. 28, 2006

Folletto,

Yes, I agree that from a technological point of view AJAX is asynchronous by nature.

But my fuzz is about that we do not use it to improve user-interaction. From a usability point-of-view, the way most AJAX applications works is exactly the same as always.

Take Ta-da list (again). Although it is a very fancy program (I like it), it is from an interaction point of view not asynchronous. You:

  1. USER: Write a list item
  2. TRANSFER: Wait for "AJAX" to send the data to the server
  3. SERVER: The item is saved and the list is reloaded
  4. TRANSFER: The updated list is send back to the client
  5. CLIENT: The "add item" input field is reset
  6. USER: Adds another item
  7. ... (repeat as many times as you like)

This process will look like this:

Compare this to the before and after application models described by Adaptive Path

In my article I illustrated this difference with my robot vacuum cleaner. If you make smarter vacuum cleaner but do not change the interaction, you still have to do all the vacuuming. But if you make the interaction asynchronous too, then you can make one like Roomba.

5

Folletto Malefico - Jun. 30, 2006

Uhm but still I don't get the point.

My question was about the statement: "Note: Ta-da list is by no means a bad product, it is a really good product - it is just not AJAX."

That's wrong from my perspective: Ta-da IS Ajax, since it's the technology that it uses.

Then, we could think about the "sync" interaction with the product, but this isn't related to Ajax, nor to the Web2.0.

I don't know, I was thinking about Ta-da: how could it be async? I create an item, I edit an item, I check an item... that's a todo, and that's what Ta-da does. It doesn't need to have "async" features, since it doesn't do anything that could be done "better" async.

Am I wrong? :)

6

Matthijs - Jul. 2, 2006

Good writeup. I totally agree with you Thomas. I haven't done too much with ajax myself (yet), also for the reasons you mention.

One supposed advantage of the asynchronous part of ajaxified interactions on a webpage is that it is faster, because the complete page doesn't have to get updated.

But I wonder if there are any tests which proove this? As in many examples I have seen so far with ajaxified web forms they seem much slower, compared to a normal form wich is posted to the server. With the fast internetconnections nowadays, returning 5kb for a new webpage is so fast (remember, css and img are cached) it is hard to believe using ajax makes it faster. The examples I have seen seem in fact slower.

7

Thomas Baekdal - Jul. 4, 2006

Matthijs, Thanks!

You are quite right that many products/pages that use are slower than if they simply did without. The problem in most cases is that AJAX sends and retrieves too much information.

When I wrote a few guidelines to XMLHTTPRequest my very recommendation was to not load entire pages (that includes the majority of a page). AJAX is only beneficial if it sends or retrieves very small chunks of data.

AJAX can be used to really speed up interaction. To do this you need to make interaction asynchronous and only transfer small chunks of data.

AJAX can also useful when you want to help the user keep focus. A page reload often distracts and confuses in web applications. Simply because desktop application does reload pages. This was why I use AJAX for WEB2RSS. Here reloading the page is less effective than showing an inline progress bar - while AJAX validates your URL.

BTW: WEB2RSS is from an interaction point of view also a SJAX application.

8

Thomas Baekdal - Jul. 4, 2006

Foletto, When you wrote "I create an item, I edit an item, I check an item... that's a todo, and that's what Ta-da does." you are not describing what really happens, but the interaction that we want to happen.

In reality this happens: "I create an item, I wait for AJAX to save and refresh the page, I edit an item, I wait for AJAX to save and refresh the page, I check an item, I wait for AJAX to save and refresh the page...". This is why I call it a SJAX application. The interaction is affected by the use of "AJAX", making them wait for it to do the stuff it has to do.

In terms of Ta-da list, the speed difference between SJAX and true AJAX is minimal. We are talking about 0.5-2 seconds.

The way to make Ta-da list a true AJAX application is make saving a to-do independent of the AJAX function. Now it works like this:

  1. User click's save
  2. AJAX saves the entry
  3. AJAX reloads the to-do list
  4. the to-do form is reset (allowing the user to continue)

What is should do is this:

  1. User click's save
  2. the to-do form is reset (allowing the user to continue)
  3. AJAX saves the entry
  4. AJAX reloads the to-do list

9

Folletto Malefico - Jul. 5, 2006

Ok, I was just supposing things about how Ta-Da works, but the point I was trying to make clear is that you "can't" say SJAX since the technology is Ajax, and that's it, even if it isn't used at its full potential.

It's like saying that you're not using a car engine with gears since you're staying on the first gear: you *are* yousing an engine with gears, just you're not using them in their full potential.

So, it *is* Ajax, just it's been used in a limited fashion. :)

P.S.: uhm. When using TaDa I don't have to wait: the status changes immediately... *sic* I can't test it out properly, maybe is it due to my too fast connection?

10

Thomas Baekdal - Jul. 5, 2006

Okay, point taken:

Then let me call it SI/AJAX:
Synchronous Interaction / Asynchronous JavaScript and XML :)

...and what I am looking for is then a AI/AJAX:

Asynchronous Interaction / Asynchronous JavaScript and XML. It also sounds a lot cooler with the "AI" part *he he*

11

Folletto Malefico - Jul. 7, 2006

Yeah, I find it more clear and definitely useful to point out where the problem is. :)

Now I'm in at 100% ;)

12

Elliot - Jul. 7, 2006

Wouldn't it be easier to ignore semantic arguments like this that are *always* decided in the marketplace, not by noisy (if well-informed) individuals?

I totally get the hair-splitting about "web 2.0" and "Ajax", I do. But who cares, really? What do you have to gain from winning this argument?

And as to your statement "we do not use it to improve user-interaction": what's the difference between a user's experience *actually* improving and the user simply *believing the expeirence has improved*? Yes I still have to click a button to compose a new mail in Gmail, but it *feels* like a better click than in Yahoo mail.

Consider the badge "NEW" that's plastered on products on supermarket shelves. That three-letter word sells products and can have an effect on people's perception of the quality of the product they bought. This is experience design, my friend. It means changing *perceptions* as much as it means changing reality. If you can cause someone to believe an interaction is "snappier", than the experience has improved, even if that interaction takes the same amount of effort, GOMS-wise.

13

Thomas Baekdal - Jul. 7, 2006

Eric, I am not talking against the use of AJAX (or Web 2.0 for that matter). I think you should use it, it is great, very helpful and allows you to do things in a better way.

What I am talking about is that we should use AJAX to make smarter products instead of just making fancier ones.

You wrote "Yes I still have to click a button to compose a new mail in Gmail, but it *feels* like a better click than in Yahoo mail."

This illustrates my point nicely. Google has indeed made a fancy email system - and it does feel better than Yahoo - and that is also very important. But you still have to do the same amount of work.

I want us to use AJAX to take care of some this work, without any involvement from me - to make handling emails smarter. Not just fancier.

I am currently writing an article that illustrate this difference better. So stay tuned.

14

Thomas Baekdal - Jul. 10, 2006

Found a good article today on the same subject of AJAX marketese.

According to Jesse, as long as these two basic ingredients [asynchronous interaction model and browser-native technologies] are involved, what you have is an Ajax application.

...

You see how very adaptible it all is? Even if it ain't really "AJAX", you can still call it -- AJAX! I can't describe how very comfy and relieved that makes me feel!

- PeterBromberg

15

David - Jul. 16, 2006

Interesting post. You end off with "What's next?"

Well, of course, Web 3.0! After that, Web 4.0. Or maybe if Microsoft finds some way to finagle it, Web XP at some point. The bottomline though is what do people want? Take myspace.com. Is it Web 2.0? Web 1.5? Web 0.5?

Ask the 75 million users (or thereabouts) and 99.9999% will have no idea and won't care anyway. But they still love the site and that's all that matters, really.

AJAX overuse? Again, the people will decide which companies live and which ones die, AJAX or no AJAX.

16

WebFire - Jul. 24, 2006

Pay no attention to my spelling. ;)

17

WebFire - Jul. 24, 2006

Your examples for things that are asynchronous are way off. If those are examples of items that are asynchronous , then all websites are asynchronous . Because I can open a website, enter some data and click submit, and while it data crunching I can get up and wash the dishes.

For your examples to be asynchronous, your...

1... vacuum would sweep the floors while mopping them at them at the same time (or it could mop a different floor at the same time)

2... car heater would heat the car while at the same time defrost the windows (which most due, therefore actually making it asynchronous).

3... washing machine would rinse one load of laundry, while at the same time spinning another load.

In your examples you are comparing multiple objects performing multiple tasks, rather than one object with multiple asynchronous tasks.

18

Tom Hopkins - Jul. 24, 2006

I think the analysis is spot on the "Asynchronous" in Ajax refers to the capability for XMLHTTPRequest to be used asynchronously but it can also be used synchronously. I think it's stretching the point to call these sites SJAX but imagine if Google suggests you had to click a button for the suggestions and this locked the interface. That would change it from asynchronous (as it is now) to synchronous.

19

Albert - Aug. 9, 2006

Don't make me wait. That is what AJAX is all about. Take what I have done and process it without me having to wait on that processing. I want to do something else. If that application/website does that then I have what I want.

Asynchronous allows me to continue on doing what I want to do without waiting for the website to catch up to me. If you can make the application "fast" enough for me to do what I need to do on a 56K connection without having to wait on the processing then I'm fine with it not being asynchronous.

And that is why your original comments were correct. The thinking that goes behind Ta-Da does not work the way the customer wants to work. Let me add what I want and click the go button. Then while AJAX and the website processes my information I continue on filling out something else. My status can tell me that my changes/additions were saved while I am halfway through my other form. This is how it should work. That idea that they use AJAX is great they just didn't think it all the way through.

Bottom line, If I'm going to make the customer wait then I might as well refresh the whole screen. Otherwise why take advantage of the new technology?

20

krammer - Sep. 6, 2006

Only two (clarifying) questions... an Ajax.Updater (from prototype) function which first param (the destiny div) is the same that makes the call to javascript is never asynchronous?

The way for making real asynchronous call is doing the interface changes in pure javascript and then make ajax call that only changes the server-side database or session (not content or javascript relevant updates in client)?

I think one of the reasons people is not using real AJAX is that a error produced proccessing the request uncoordinates client view and server side.

21

add - Jan. 23, 2007

isn't SJAX suppose to do more things at once? synchronous = in the same time, in my vision at least...

22

Onlineshop - Mar. 11, 2007

I think these blog is really useful for new comers and Excellent resource list.

23

Ponuka Práce - Apr. 6, 2008

It´s Desing by Fire have really interesting template, know someone about it?

 

Published: Jun. 25, 2006 in Technology

Subscribe / Select »

Thomas Baekdal

Thomas Baekdal is a Writer, Interaction Designer, Change Advocate and Project Manager.

» About Baekdal
» Contact Information