[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!)
hth,
-dave
More information about the thelist
mailing list