Ajax Library Smackdown Prototype vs jQuery The Art of - PDF by wrn10268


									                                                 Issue VII | September 2009

 Ajax Library Smackdown: Prototype vs jQuery
 The Art of Messaging • Unit Testing in Grails
Polyglot Programming: The Basic Nuts and Bolts
                                                                                          Tour Schedule
Make Your Training Dollars Go Further In 2009
                                                                                          Salt Lake City, UT        Jul 17 - 18
NFJS brings a high-quality technical conference to your city... no travel required.       Phoenix, AZ               Jul 24 - 26
Many of our speakers are the same people you will see speaking at JavaOne and             Des Moines, IA            Aug 7 - 9
other national events.
                                                                                          Orlando, FL               Aug 21 - 23
Develop Your Skills                                                                       Raleigh, NC               Aug 28 - 30
Staying up-to-date can be overwhelming. NFJS helps developers: improve skills,            Boston, MA                Sep 11 - 13
solve problems, and be productive. The best developers possess many talents. NFJS         Seattle, WA               Sep 18 - 20
events deliver a select body of technical knowledge and hands on training. During an      Calgary, Alberta          Sep 25 - 27
event, there are always interesting sessions available to you.                            Minneapolis, MN           Oct 2 - 4
Learn How Agile Teams Win                                                                 Cincinnati, OH            Oct 9 - 11
Software is a difficult industry with very high rates of failure. NFJS emphasizes Agile   Atlanta, GA               Oct 23 - 25
practices such as: Test Driven Development, Continuous Integration, Code Quality          Reston, VA                Nov 6 - 8
Measures, and Team Building methods to stabilize your processes and improve               Chicago, IL               Nov 13 - 15
quality. Do your work better and faster!                                                  Denver, CO                Nov 20 - 22
Exchange Knowledge with Your Peers
Do you want to solve a problem? Get a fresh opinion. Few developer problems are           Featured Speakers
truly new! NFJS is a great opportunity to interact with your peers and exchange ideas.              Neal Ford
                                                                                                     Application Architect at
                                                                                                     ThoughtWorks, Inc.
 Save Big with NFJS Discounts
   1) Earlybird Rates - register early to get the best rate
                                                                                                    Ted Neward
   2) Group Discounts - NFJS makes it practical to bring your team                                    Enterprise, Virtual
   3) Alumni Discounts - Have you attended before? Watch your email for alumni rates.                 Machine and Language
    * Be sure to check nofluffjuststuff.com early to get the best rate available.                     Wonk

Topics for 2009                                                                                     Venkat Subramaniam
                                                                                                     Founder of Agile
Most NFJS events offer 5 concurrent sessions. Throughout the duration of an event,                   Developer, Inc.
there are sure to be sessions of interest available to all developers. Our content is
updated frequently. Check nofluffjuststuff.com for current session details.

     Agile Practices                                                                                Scott Davis
     Core Java                                                                                       Author of "Groovy
                                                                                                     Recipes" & TDD Expert
     Enterprise Java : EJB3 & JMS
     Architecture & Scaling
     Groovy and Grails                                                                              David Geary
     Security                                                                                        Author of Graphic Java
     Dynamic Languages                                                                               and co-author of Core JSF
     Frameworks: Hibernate, Spring, JSF
     AJAX, Flex, RIA, REST
                                                                                                    Ken Sipe
                                                                                                     Technology Director,
 For more tour dates and information please visit                                                    Perficient, Inc. (PRFT)
 http://www.nofluffjuststuff.com/ or email

September is upon us and we are in the home stretch for the 2009 NFJS tour. It is hard to believe we will be
finishing up the 9th year on the NFJS tour. Wow the time has flown by! I find myself thinking back to all of the great
people I have met on tour through the years. It has been a very rewarding experience for speakers and attendees
alike. Real time encounters will always trump the virtual world. My hope is that each of you will join us at one of
the many NFJS tour stops and learn why the unique experience of NFJS is not to be missed!

Mark your calendar as we have two destination events for you to enjoy this fall. First up is

SpringOne 2GX show a collocated event coming to New Orleans on October 19-22nd. SpringOne will cover the
latest developments in the Spring ecosystem, including Spring 3. The Groovy/Grails Experience will provide in-depth
coverage of Groovy, Grails, and Griffon. So whether you’re a Spring enthusiast, Tomcat user, Groovy/Grails fan, or
just interested in open source development, you’ll find valuable content in sessions presented here. Go to www.
springone2gx.com for additional details and registration information. Early Bird discount ends Friday, September 18th
– Register today!

The second event is the Rich Web Experience 2009 coming December 1-4th to Orlando.

RWE 2009 focus is on the convergence of web development and design looking at JavaScript, all of the Ajax
frameworks, web security, web standards, etc… We have a unique program for RWE 2009 called the all-inclusive. The
all-inclusive is one fee for your registration, airfare and hotel. RWE 2009 is an event not to be missed! Make sure
and go to www.therichwebexperience.com for additional details. See you in Orlando!

We thank each of you for your support of NFJS, the Magazine. It is a pleasure to bring you excellent technical
content each and every issue. As always, your feedback is appreciated as well. Have a great month!

                        Until next month,

                        Jay Zimmerman
                        Publisher: NFJS, the Magazine
                        Twitter: @NoFluff

                                                                                        No Fluff Just Stuff, the Magazine | 3

Table of Contents                                 Letter from the Editor
The Art of Messaging                              Eat your own dog food. And everything else too.

                                         5 - 10   As I was reading through this month’s motley articles, I was
                                                  struck by the notion of what it means to be a polyglot. Indeed,
                                                  not only does Robert address the term head on, but each
Unit Testing in Grails                            remaining article does too (in an indirect manner) -- Mark with
                                                  JMS and Java, Scott with Groovy, and Nate with JavaScript. In fact, I
                                        12 - 16   found myself looking for a broader term; not only do the articles
                                                  address different languages, but they address different aspects
                                                  of how varied languages are leveraged. It seems from this broad
Ajax Library Smackdown: Prototype vs jQuery       assortment of articles the word that comes to mind to me is
                                                  omnivorous. Yes, as in the definition of “avidly taking in everything
                                        18 - 22   as if devouring or consuming.”

                                                  You see, not only do different languages change the way you
Polyglot Programming: The Basic Nuts and Bolts    address certain problems, but certainly different solutions address
                                                  how you think about problems. Take for instance, Grails -- yes, it is
                                        24 - 30   written, for the most part, in another language and in order to use
                                                  it, you’ll end up writing Groovy code; however, Grails is a solution
                                                  that addresses the speed of web development. Or JQuery, for
                                                  instance -- another tool that leverages a different language and
                                                  which addresses the issue of interactivity (or the lack thereof in
                                                  much of the web today). Both aspects can and have been solved
                                                  with other languages, by the way. What’s important though isn’t
                                                  just that each article uses a different language, but that each article
                                                  addresses a different subject altogether. In fact, that’s the beauty
                                                  of this magazine -- each month is a cornucopia of topics that
                                                  demonstrate different languages, tools, platforms, and consequently,

                                                  While being a polyglot programmer is certainly important (and
                                                  I’m willing to bet that broadly speaking, you already are one -- you
                                                  do know SQL, right? HTML? And of course, Java. There’s arguably
Contributors                                      three languages (generally defined) you know, right?) -- I think
                                                  what’s even more important, if you want to be successful in your
Publisher: Jay Zimmerman                          career, is omnivorousness. If you want to go places and see things,
                                                  you’ll need to know and understand multiple languages, multiple
Editor in Chief: Andrew Glover                    tools and platforms, and the solutions and related problems that
                                                  tie everything together.
Technical Editor: Nick Watts
                                                  With that in mind, I hope you’ll enjoy
Layout/Design: Alicia Weller                      devouring this month’s issue -- Scott,
                                                  Mark, Nate, and Robert have written some
Author Contributors for Issue VII:                fabulous articles that span the gamut of
                                                  technology today. And while you’ll certainly
Scott Davis                                       be a polyglot programmer if you end up
                                                  using the various languages demonstrated
Nate Schutta                                      this month, you’ll also be quite sated by all
                                                  the varied content. Bon appétit!
Mark Richards
                                                  Andrew Glover
Robert Fischer

    4 | NoFluff JustStuff.com
The Premier Java Event of 2009
SpringSource and No Fluff Just Stuff Symposium Series are pleased to present
SpringOne 2GX.

SpringOne 2GX will include a technical exploration of the Spring ecosystem along
with the latest developments in the Groovy/Grails space. As a participant, you will
have the opportunity to attend two great events at one venue. Whether you're a            The Roosevelt New Orleans
Spring enthusiast, Tomcat user, Groovy/Grails fan, or just interested in open source      123 Baronne Street
development, you'll find valuable content in sessions presented here.                     New Orleans, LA 70112

This year's event will be held at the recently restored Roosevelt Hotel in New Orleans.         Rod Johnson
Now a part of the prestigious Waldorf Astoria Collection, this landmark hotel combines           Creator of Spring & Best
elegant guest rooms, historic dining, and a luxurious spa, all in the heart of this              Selling Author of J2EE
fabulous city.                                                                                   without EJB

                                                                                                Keith Donald
 Save Big with Discounts                                                                         Lead of Spring Web and
                                                                                                 Creator of Spring Web
   1) Earlybird Rates - register early to get the best rate
   2) Group Discounts - Register 4 individuals and receive 1 additional pass free
   3) Alumni Discounts - Have you attended before? Watch your email for alumni rates.
    * Be sure to check springone2gx.com early to get the best rate available.                   Graeme Rocher
                                                                                                 Head of Grails
                                                                                                 Development for
Topics for 2009                                                                                  SpringSource
SpringOne 2GX will offer 8 concurrent sessions. Throughout the duration of the event,
there are sure to be sessions of interest available to all developers. Check                    Adrian Colyer
                                                                                                 CTO of SpringSource
springone2gx.com for session details.

     Spring 3.0
     Spring Webflow
     Spring Batch                                                                               Rob Harrop
     Web Operations                                                                              Core Spring developer
     Groovy / Grails                                                                             and author of the best
     Griffon                                                                                     seller Pro Spring
     Agile Practices
     Architecture & Scaling                                                                     Guillaume LaForge
     Security                                                                                    Head of Groovy
     Dynamic Languages                                                                           Development for

 For more information please visit http://www.springone2gx.com/ or                              Ben Alex
 email jzimmerman@nofluffjuststuff.com                                                           Creator of Spring Security
                                                                                                 (Acegi) & SpringSource
                                                                                                 Principal Software
   Ajax Library Smackdown:
   Prototype vs jQuery
    by Nathaniel Schutta

                                                             In addition to smoothing out browser differences,
Creating a modern web based application requires that        toolkits give us a ton of leverage in our day to day
we develop a rich interactive user interface that takes      coding efforts. Though each library is different, there
advantage of all the techniques in the Ajax toolbox.         are several common themes. Most toolkits provide:
When these approaches were first introduced, many
pundits insisted you needed to be a rocket scientist         • a wrapper around the XMLHttpRequest (XHR)
to pull it off - while not trivial today, high quality         object
frameworks have helped our cause. In this article, we’ll     • cross browser CSS selectors
take a look at how popular libraries like Prototype          • simplified event handling
and jQuery have simplified the life of today’s JavaScript    • various animations, effects and widgets
developer. We’ll talk about why we should use a library      • sundry utility functions
in the first place, how to choose between libraries
and then we’ll look at some specific examples from           Some libraries are minimalists that do one thing and
Prototype and jQuery.                                        only one thing while others are all encompassing
                                                             kitchen sink sized toolkits that seek to rectify
                                                             shortcomings in all things web.
Why Should I Use a Library?
                                                             How do you pick one library over another? Coding
Back in the Paleolithic Web era known as the late 90s,       everything by hand - not using any library - is the only
those of us doing front end development had things           wrong answer. It can be a bit daunting to pick a library,
pretty rough. Our monitors had lower resolution than         but it’s nothing compared to trying to do everything
today’s coolest smartphones, the browser wars were           yourself. Before you panic and think you have to
in full swing giving us a variety of incompatible behavior   choose just one library, most of them will work fine
and our toolbox was only slightly better than that guy       together (within reason) and sometimes mixing and
that insisted on using punch cards. And we walked to         matching is the best option. Regardless, here are some
work uphill in the snow both ways. Getting JavaScript        questions to consider when picking a library:
to work properly across browsers was a Herculean
task (akin to cleaning the Augean stables.) On one           • What do you want out of a toolkit? Are you
early project, ran into so many issues the manager             looking for a complete replacement of nearly all
laid down the “thou shalt use only the bare minimum            UI elements on your page or are you just looking
JavaScript required to make the application work.” I do        for something to take a bit of the suck out of
not miss those days.                                           JavaScript programming?
                                                             • How easy is the code to read? Despite massive
Though things have greatly stabilized, browser issues          improvements in documentation over the last few
are still with us today (IE 6, I’m looking in your             years, odds are you will have to dig into the code
direction.) In addition to an awesome toolbox, today’s         at some point. Before committing to a library,
JavaScript developer can take advantage of a veritable         spend some time knee deep in the source. Is it
plethora of libraries to ease the burden of developing         easy to understand or does even the original
cross browser front end code. In fact, we face a               author have trouble with it?
paradox of choice in our effort to select just the right     • How good is the documentation? Clean and
framework to make our lives easier - but that sure             readable code can make up for a less than stellar
beats long nights debugging that weird issue with the          docs, but nothing helps you get started quite like
Foo browser on the XYZ operating system! Today’s               tutorials and examples. Poke around the wiki or
JavaScript programmer should be looking to a library           the website and see what they have to offer. Are
to create a baseline for their coding efforts. You can         the examples clear and easy to follow? Does a
think of a toolkit as a virtual machine of sorts that sits     quick Google search bring you to the proper part
between the various browser implementations and the            of their material?
code you’re trying to write.

18 | NoFluff JustStuff.com
                                                                                                  Issue VII

• What’s the community like that surrounds the              How are they different?
  library? Check out the mailing lists; is there a lot
  of traffic? Are new people treated with respect           Though very similar, Prototype and jQuery have some
  or derision? Has the code been updated recently           fundamentally different philosophical underpinnings.
  or was the last release before the previous               Prototype grew out of the Rails project and is heavily
  presidential election cycle started?                      influenced by that style of coding. jQuery was, in
• Can I get help? While this is related to the previous     some regards, a reaction to what some perceived as
  bits about community, it’s always valuable to look        shortcomings in the Prototype approach, especially
  around the development community and see who’s            when it comes to extending core JavaScript objects.
  using what. Check out the job boards to get a             They also have very different uses for $ - in Prototype,
  sense of what libraries are showing up frequently         $ is a convenience method that replaces the tedious
  on resumes.                                               task of typing document.getElementById while in
                                                            jQuery, $ is core to everything you’ll ever do, nearly
Before pulling the trigger, be sure to spend some time      every expression you’ll write is based upon the humble
playing with the finalists. Some libraries have a certain   $. Let’s take a look at some high level pros and cons of
flavor - for instance, Prototype brings a strong dose       the two libraries.
of Ruby to JavaScript. If you think Ruby is the language
to end all languages, this is a feature, if reading Ruby    Some of Prototype’s pros:
makes your eyes hurt, Prototype might not be the best       • brings a strong Ruby flavor to JavaScript
choice. Reading code and following tutorials is fine, but   • adds functionality to HTML elements and
until you actually try to solve some of your pain points      JavaScript base classes
in a given library, it’s hard to know which one is right    • additional features (such as widgets and visual
for you.                                                      effects) found in extensions like script.aculo.us
                                                            • widely used on a variety of projects

Why Prototype and jQuery?
                                                            Some of jQuery’s pros:
In this article, we’ll compare and contrast two popular     • focused on HTML elements - acting on elements
frameworks: Prototype and jQuery. Both libraries are          found via CSS selectors is core
solid choices in what I call the “make JavaScript suck      • doesn’t pollute the global namespace
less” camp. Unlike Dojo and YUI they don’t come with        • makes manipulating the DOM a snap
a side of widgets (at least out of the box.) They do,       • extensive plugins that provide a wealth of
however, provide solid foundations for building better        functionality
JavaScript based applications.                              • widely used on a variety of projects

How are they similar?                                       Some of Prototype’s cons:
                                                            • doesn’t ship with a minified version
Prototype and jQuery are both small (each weighs            • performance hasn’t always been a top priority
in around 4300 lines of code) well written libraries.       • pollutes the global namespace
If you have never used either of them, simply reading
through the code would make you a better JavaScript
developer. Both have similar features: XHR wrappers,        Some of jQuery’s cons:
CSS selectors, event handlers and a number of features      • some APIs can be a bit clumsy to use (parameter
that make JavaScript easier to work with. Each has            order isn’t always intuitive)
excellent documentation (both online and in print)          • functionality beyond DOM manipulation is often
and thriving communities. As the code has matured,            relegated to plugins
releases have slowed somewhat but the respective            • some functions change what this binds to
mailing lists are quite active.

                                                                                   No Fluff Just Stuff, the Magazine | 19

 It’s important to note that the libraries have influenced      Prototype’s Take on Ajax
 each other. Good ideas introduced to one library often
 find their way into the other and members of both              Prototype’s Ajax.Request provides a simple yet very
 communities have contributed to the other. In some             powerful way of interacting with a server. The basic
 cases, if you squint a bit, it can be hard to tell just        signature may seem spartan: new Ajax.Request(url,
 which library you are using!                                   [options]) but that simple constructor gives you access
                                                                to fully configure the underlying XHR instance. The
                                                                optional second argument is a hash of configuration
 Getting Started                                                options that allows you to set:

 Getting started with either Prototype or jQuery is             •   the HTTP method to use
 very straightforward. Simply go to their respective            •   parameters
 websites and download the latest and greatest version.         •   content type
 Add the respective JavaScript files to your project and        •   a variety of callbacks aligned with various XHR
 you’re off and running.                                            object states such as onComplete, onFailure and

 Ajax The Easy Way                                              A typical invocation might look something like the
                                                                code in Listing SCH-1.
 While the XHR object itself isn’t very complicated,
 there is just enough nuance to doing it right that             In this case we’ve passed in some configuration
 you’ll soon come to appreciate the abstraction layer           parameters - we’ll use the get method, we’re passing
 that you’ll find in virtually all of today’s Ajax libraries.   some values from the page ($F is a convenience
 Prototype and jQuery are no exceptions and each                method that returns the value of the specified
 provides a simple-to-use wrapper. Though there are             field) and when the call is complete we’re replacing
 a variety of ways to skin this proverbial cat, there are       the innerHTML of the messages element with the
 common themes you’ll find when working with XHR                response text from the call. Not bad for less than 10
 via a library. At a minimum, you’ll have a way of doing        lines of code!
 to following:

 • provide the URl of the resource to call                      jQuery’s Take on Ajax
 • a way of passing URL parameters
 • a method of specifying the HTTP method (e.g. get,            jQuery has an equally straightforward Ajax wrapper
   post) to use to make the call                                defining a variety of APIs to solve this problem. From
 • a callback technique to handle the result of the call        the low level $.ajax(options) to more specific calls like

   new Ajax.Request(‘/fooApp/validate’ {
     method: ‘get’,
     parameters: { zip: $F(‘zip’), city: $F(‘city’), state: $F(‘state’) },
     onComplete: function(request) {
                                                                                                   Listing SCH-1
                                                                         Typical AJAX Request in Prototype.

   Improving Web Page Performance
   YSlow is an excellent tool that can help you speed up your pages and using a content delivery network (CDN)
   is one of the recommendations to improve page performance. If your company doesn’t have it’s own CDN and
   doesn’t use a CDN service provider, you can take advantage of the Google AJAX Libraries API. Google has data
   centers all over the world and they provide hosting for the major players in the Ajax library space (including
   Prototype and jQuery.) Google stays up to date on the latest stable version (though you can easily bind to
   a specific version is you wish) and hosts previous releases indefinitely. You can leverage Google’s load API or
   directly load a library via a script tag.

20 | NoFluff JustStuff.com
                                                                                                               Issue VII

$.getJSON(url, [data], [callback]), jQuery has your Ajax needs         CSS Selectors in jQuery
covered. A typical call might look something like the code in
Listing SCH-2.                                                         CSS selectors are one of jQuery’s strongest features; their
                                                                       support is top notch, including a variety of helpful convenience
                                                                       methods. Performance is outstanding, relying on native
                                                                       browser support instead of code where possible. The previous
                                                                       example rewritten in jQuery looks something like the
          zip: $(“#zip”).val(),
                                                                       example in Listing SCH-4.
          city: $(“#city”).val(),
          state: $(“#state”).val()
    },                                                                   $(‘.header’).click(function() {

    function(message) {                                                    $(this).next().toggle(“blind”,

         $(“#messages”).html(message);                                         { direction: “vertical” }, 500);

  });                                                                    });
                                             Listing SCH-2                                                           Listing SCH-4
                      Typical AJAX Request in jQuery.                                       CSS Selectors Example in jQuery.

                                                                       In this example we’ve actually coded the toggleSection
                                                                       method right into our CSS selector code and, as before, this
Looks pretty similar doesn’t it? First off, you’ll notice that         code will be invoked on a click. Again, a couple of lines of code
all jQuery methods are bound under $ which can be a                    yields a huge return.
bit confusing at first but overcomes JavaScript’s lack of
namespaces - in this case, it keeps jQuery code separated
from your own. In this case, we’ve used the get convenience            Event Handling
method to call our server side validation passing in the same
parameters as before with nearly identical syntax. Also, as            Event handling is especially common in the era of unobtrusive
before, we’re replacing the innerHTML of the messages div.             JavaScript but as we’ve come to expect, browsers aren’t
Once again, a few short lines does an awful lot for us!                entirely consistent. Luckily for us, library designers have
                                                                       taken it upon themselves to simplify our lives once again. In
                                                                       the previous section, we saw two ways of binding to the click
The Power of CSS Selectors                                             event - Prototype uses the observe function while jQuery
                                                                       defines a series of APIs including event helpers like click. In
CSS selectors are an amazingly powerful tool in the web                both cases, we’re asking to be notified when an event happens
developer’s toolbox but as with JavaScript itself browser              so we can take some action - in our examples that involves
support isn’t universal. Luckily for us, today’s libraries step into   toggling a section (that is hiding it if visible or making it visible
the void giving us the full power of CSS selectors.                    if it’s hidden.) We could have added event handlers directly to
                                                                       our markup but using an abstraction as we have here is much
                                                                       cleaner, it separates our business logic from our presentation.
CSS Selectors in Prototype
Prototype gives us CSS selectors via the function $$. For              Animations and Effects
instance, if we wanted to get every element that had the
header style applied to it, we’d do something like the example         Prototype and jQuery don’t stand alone, they both support
in Listing SCH-3.                                                      additional libraries that combine together to help us provide
                                                                       polished interfaces. Script.aculo.us builds on top of Prototype
  $$(‘.header’).each(function(el) {el.
                                                                       to provide animations, widgets and more. Not to be outdone,
  observe(“click”, toggleSection)});                                   jQuery UI provides a number of effects, widgets like dialog and
                                                                       interactions like draggable.
                                             Listing SCH-3
                CSS Selectors Example in Prototype.                    The jQuery selector example shows the use of the blind effect
                                                                       in conjunction with the toggle. When the header is clicked,
$$ returns an array of elements that match the selector rules          the section doesn’t just instantly hide or become visible - it
which we then iterate over via the each method. We’ll talk             gradually slides up or down. jQuery UI relies on a number of
about the observe function in the next section, but whenever           plugins that can all be used independently as the need arises,
someone clicks on a header element, the toggleSection                  keeping your page weights trim.
method will be fired.

                                                                                                No Fluff Just Stuff, the Magazine | 21

Let’s return to the validation example from the Ajax section to        Getting Help
see how an effect could spice up our Prototype example. By             Both libraries offer extensive online documentation. If you
including script.aculo.us in our page, we add a highlight effect       can’t find the answers there and Googling doesn’t enlighten
to draw attention to the message returned from the server.             you, try the mailing lists. URLs for Prototype’s and jQuery’s
Thanks to chaining, we can tack a highlight on to the end of           API documentation and mailing lists are listed in the References
our update call so it looks something like the code in Listing         section.

This default behavior will give us a very handy yellow fade that       Conclusion
subtly lets our users know something has changed.
                                                                       We’ve covered a lot of ground in a short space but you
                                                                       should have some ideas of just what a well written framework
  highlight({duration: 1.0});                                          provides. Whether you prefer Prototype or jQuery, each
                                                                       greatly simplifies the life of a front end developer and both
                                           Listing SCH-5               libraries have vocal proponents. Each has pros and cons
                    Script.aculo.us Highlight Effect.                  but you can’t go too far wrong adding either one to your

About the Author
Nathaniel T. Schutta is a senior software engineer focused on making usable applications. A proponent
of polyglot programming, Nate has written two books on Ajax and speaks regularly at various No Fluff Just
Stuff symposia, universities, and Java user groups. In addition to his day job, Nate is an adjunct professor at the
University of Minnesota where he teaches students to embrace dynamic languages.

References – Prototype                            References – jQuery                       References – Other
http://www.prototypejs.org/                       http://jquery.com/                        http://en.wikipedia.org/wiki/Augeas
http://www.prototypejs.org/api/ajax/options       http://docs.jquery.com/Ajax               http://en.wikipedia.org/
http://www.prototypejs.                           http://docs.jquery.com/Selectors          wiki/XMLHttpRequest
org/api/utility/dollar-f                          http://docs.jquery.com/Events             http://www.javaworld.com/javaworld/
http://www.prototypejs.                           http://docs.jquery.com/Events/click       jw-05-2009/jw-05-javascript-tools.html
org/api/utility/dollar-dollar                     http://docs.jquery.com/UI/Effects         http://www.ted.com/index.
http://www.prototypejs.org/                       http://docs.jquery.                       php/talks/barry_schwartz_on_
api/enumerable#method-each                        com/UI/API/1.7/Dialog                     the_paradox_of_choice.html
http://www.prototypejs.                           http://docs.jquery.com/                   http://www.dojotoolkit.org/
org/api/event/observe                             UI/API/1.7/Draggable                      http://developer.yahoo.com/yui/
http://www.prototypejs.org/api/                   http://docs.jquery.                       http://developer.yahoo.com/yslow/
http://www.prototypejs.org/discuss                com/UI/Effects/Blind                      http://developer.yahoo.com/
http://blog.thinkrelevance.com/2009/1/12/         http://docs.jquery.com/Main_Page          performance/rules.html
why-i-still-prefer-prototype-to-jquery            http://docs.jquery.com/Discussion         http://rubyonrails.org/
References – script.aculo.us                                                                documentation/#googleDotLoad
http://script.aculo.us/                                                                     articles/behavioralseparation
http://wiki.github.com/madrobby/scriptaculous/combination-effects-demo                      http://www.37signals.com/svn/
http://wiki.github.com/madrobby/scriptaculous/controls                                      archives/000558.php

       22 | NoFluff JustStuff.com
                                              NFJS One provides access to the top technical
                                           talent in the industry. Our services include: in-depth
                                               public and private training sessions, project
                                            consulting engagements, team mentoring, and on-
                                                             site private events.

                  Investing in your people should be your number one priority

The benefits of keeping your folks sharp and ahead of the curve are endless:

      Increase your organization's productivity
      Reduce development costs
      Accelerate employees' learning curves

The NFJS One Model:

NFJS One takes pride in ensuring a recognized expert is matched to your organizational strategies
and initiatives. Whether it be a private 3 day training class on a specific tool, an organizational
assessment, a project coach, etc. Our first goal is to get a grasp on your environment today.

      What are your strengths/weaknesses (toolset, process, initiatives, etc)?
      What challenges are preventing you from meeting your goals?

Once we come to an agreement on services and benefits, NFJS One will align you to one of our 75+
experts – ensuring this person is a 5 star resource on the subject matter at hand.

Our courses range from beginner to expert on various tools, process, frameworks, languages and
more. We align our courses to your environment, and don’t come in for a lecture – be prepared to get
your hands dirty and leave ready to use what you’ve learned tomorrow.

We have various models to meet our customer requirements, including organizational assessments,
agile coaching, and technology evaluations

Private Events:
NFJS One is an entity of the No Fluff Just Stuff Software Symposium. If you are ready to host a
professional conference with the best speakers in the industry – NFJS One is your provider.

                                      877-825-0663 ext. 2
                                                                                             Issue VII

Coming up next month
Next month’s issue features articles on JSF 2.0 by David Geary, Lucene by John Griffin, Easyb by

Andrew Glover and part 2 of the Collections article written by Ted Neward. Another can’t miss read!

                                                                              No Fluff Just Stuff, the Magazine | 31

To top