[thelist] updating skillset (long rambling request for advice, vague or specific)

David Kaufman david at gigawatt.com
Tue Sep 26 14:03:28 CDT 2006

Joel D Canfield <joel at spinhead.com> wrote:
>> look into Atlas
> is there more to Atlas than a tool for building Ajax stuff? I realize
> that may be an oversimplification, but if Atlas is to Ajax
> [approximately] as DreamWeaver is to XHTML, I'd rather learn the
> source than the tool.

Well, AJAX in its "purest form" is not specific to any particular 
back-end server technology or language.  Even though in most cases the 
"dynamic" data (be it XML or JSON or plain old html) is remotely loaded 
come from a traditional back-end web application, it's really up you 
whether the technology used to deliver it is perl, php, python, ruby, 
JSP, C#, or even a carefully crafted hierarchy of static files!  There 
are even AJAX apps out there that talk to remotely hosted SOAP servers, 
so that they don't even know (or care) what technology lies beneath, for 
instance, the map data from the Google API geocoding web service, that 
their AJAX app consumes.  So AJAX frameworks that are tied to a 
server-language, are IMO somewhat limiting.

Of course, in most AJAX apps, you *are* integrating tightly with your 
traditional back-end web apps that you must write and maintain, but 
that's the beauty of "pure" AJAX, you can build your back-end in Cold 
Fusion or plain ole C or MS-BASIC whatever you're comfortable with. 
Meanwhile most backend technologies are all growing "AJAX support" now 
with alarming speed.  .Net has Atlas to generate your javascript, Ruby 
of course has Rails, Perl PHP and JSP all have multiple thirrd-party 
AJAX "helper" bolt-on's you can try.  But I think of all of these as 
second-class AJAX librariy citizens.  Yes, they all do help you "get 
going" with AJAX quickly without having to stray too far from the 
comfort of your backend language of choice (into the javascript 
badlands) but the helpfulness of these "helpers" (actually 
code-generators) can be, like Dreamweaver to XHTML, more a hindrance to 
actually getting your hands dirty learning the new stuff.

Unlike a server-language helper framwork, platform independent AJAX 
libraries tend to ship as JS files, usually employing static HTML files 
as usage examples.  Here's one (of many) lists of AJAX libraries 
http://ajaxpatterns.org/Ajax_Frameworks -- notice how ajaxpatterns.org 
groups them into "Multipurpose/Specailized" and "Server-Side and Hybrid 
Frameworks".  I'd avoid those at least until you get a feel for how to 
write AJAX code "by hand"

Like you, <diclaimer type="holy.war" wanted="not" /> I personally use 
http://script.aculo.us/ and several other other libraries, all of which 
are built upon the most excellent Prototype framework 
http://prototype.conio.net/.  Both scriptaculous and prototype have 
their roots in Ruby on Rails, prototype having been spun off from 
37Signals.com's ruby-based hosted application products (and generously 
contributed back to ROR), and scriptaculous grew out of that to become 
the Rails AJAX and Visual Effects helpers.  But both have attained lives 
of their own, apart from their ancestral roots (Ruby's cool, but I 
haven't learned it yet -- I'm still a perl guy).

Many users are scared off by the apparent lack of docs in Sciptaculous, 
and even less in Prototype.  And they should be, right?  I was too!  But 
as members of the mailing list dismissively assured me, I soon learned 
that the beauty of prototype and prototype-inspired libraries is that 
the core prototype code (JS object classes, tweaked for mo better 
inheritance and syntactic sugar) is actually small enough that I really 
*could* use the source (and the tests!) as the docs.

Once I began to try to read and actually understand the prototype source 
code (after a not-short period of "huh?", followed by many eruptive 
wtf?'s) I realized that it is incredibly elegant piece of code, and a 
*complete* departure from everything I ever thought I knew about 
Javascript programming.  It takes a while to grok prototype but once you 
do, the frameworks that use it all follow the same "functional 
programming" style which is very heavily object orientated and makes 
extensive use of closures (anonymous functions as data), both Javascript 
tricks I'd thought were impractical.  I normally try to avoid gushing 
advocacy such as this, but you mentioned wanting to "learn the source 
not the tool" which is still my goal too.  And, as you may have noticed, 
I dig prototype.

I also keep hearing great things from smart people about Dojo 
http://dojotoolkit.org/ and YUI http://developer.yahoo.com/yui/ and 
qooxdoo  http://qooxdoo.org/, but I'm in still way too in-love with 
Prototype and Scriptaculous to take on another serious relationship 
right now :-)

Also, to be completely inundated with buzz, and kept bleedingly 
up-to-date on all the latest AJAX news that's fit to post, I suggest 
bookmarking http://www.ajaxian.com/ (and if you want to do more 
exhaustive research, http://ajaxpatterns.org/ has quite a huge list of 
AJAX frameworks!)



More information about the thelist mailing list