jQuery Conference 2008 Agenda

Posted on by

The sold-out jQuery Conference 2008, being held in Boston at the MIT Stata Center on September 28th, is nearly upon us. With 13 sessions being delivered by the jQuery team as well as prominent industry experts such as Jonathan Snook, Aza Raskin and Cody Lindley, this is sure to be a stellar event.

The conference has been broken out into two tracks, Beginner and Advanced, to allow developers of various jQuery expertise to take full advantage of the sessions that will be suit their needs. Below you will find the agenda for the conference. In the interest of sharing information, we wanted to put up the agenda as soon as possible. We will be releasing another page shortly that will provide topic descriptions as well as bios for each of the speakers.

Featured Presenters:

John Resig

John Resig

John Resig is the creator and lead developer of the jQuery JavaScript library. He’s also a JavaScript Evangelist for the Mozilla Corporation and the author of the book Pro JavaScript Techniques.

Currently, John is located in Boston, MA. He’s hard at work on his second book, Secrets of the JavaScript Ninja, due in bookstores Late 2008.

Joern Zaefferer

Joern Zaefferer

Jörn Zaefferer is a member of the core jQuery team. Along his work on jQuery itself, he wrote and maintains several of the most popular jQuery plugins. Jörn Zaefferer works as a consultant for maxence integration technologies GmbH in Cologne, Germany, where he architects and develops Java-based web applications for maxence’s customers and maxence’s own products.

Jonathan Snook

Jonathan Snook

Web designer and developer, Jonathan Snook moves effortlessly from client-side, front-end work to hardcore server-side challenges, and his fluency in CSS, JavaScript, PHP and MySQL make make him the “turn-to” man for many high-profile clients. Coauthor of Accelerated DOM Scripting and The Art and Science of CSS, he writes regularly at his popular blog snook.ca, and for Digital Web and Sitepoint. Jonathan also works with his partners at Sidebar Creative, makers of world-class websites and innovative applications.

Richard Worth

Richard Worth

Richard D. Worth is a Web developer in the Washington, DC area. He works for Fulcrum IT on web services contracts, primarily for the government. Richard is one of the lead developers of jQuery UI, a component framework built on top of jQuery, designed to make Rich Internet Applications as simple as jQuery has made Ajax. Richard is also a contributing author on dmxzone.com, writing regular beginner and advanced jQuery UI articles, and has been selected as a Technical Reviewer for a book on jQuery UI to be published in the fall.

Paul Bakaus

Paul Bakaus

Paul Bakaus is a UI architect living in Germany. He’s the creator and lead of jQuery UI and works for the open source company Liferay in a full-time sponsored position to jQuery UI. He’s responsible for the overall direction and roadmap of jQuery UI and he enjoys speaking about his user interface work in many places of the world. He’s also a member of the jQuery core team and takes part in the discussion of the overall direction of the jQuery project. In the past, he was largely responsible for creating the jQuery dimensions plugin (which is now part of the jQuery core) and worked together with Stefan Petre on the rich effects and components library Interface.

Yehuda Katz

Yehuda Katz

In addition to being the co-author of jQuery In Action, Yehuda Katz is a contributor to Ruby in Practice and co-author of the upcoming Merb in Action. He is a core contributor to DataMapper and jQuery. Before coming to Engine Yard, he worked for on a construction management tool written in Ruby on Rails and jQuery. Yehuda is a Merb core developer, contributes to Rubinius, and is taking a lead role in the development of Engine Yard’s new Control Panel.

Aza Raskin

Aza Raskin

Aza Raskin is the founder of Humanized (now part of Mozilla), Songza, and Bloxes. The son of Apple software pioneer Jef Raskin, he brings a keen interest in human interface design to everything he does.

Karl Swedberg

Karl Swedberg

After having taught high school English, edited copy for an advertising agency, and owned a coffee house, Karl Swedberg began his career as a web developer three years ago. He now works for Fusionary Media in Grand Rapids, Michigan, where he specializes in client-side scripting and interaction design. Karl is an “Evangelist” for the jQuery JavaScript Library and the co-author of two books, Learning jQuery and jQuery Reference Guide.

Scott Jehl

Scott Jehl

Scott Jehl is a designer at Filament Group, a Boston, MA studio specializing in web application design and development. At Filament, Scott and his colleagues frequently contribute design and code to the jQuery community, and recently built ThemeRoller, a theme design application for jQuery UI. Scott leads the design team at jQuery, and runs WriteMaps, an ajax web application for building visual website sitemaps. He enjoys wake/skate/snowboarding, being outdoors, and spending time with his wife Stephanie and their two cats.

Jonathan Sharp

Jonathan Sharp

Jonathan Sharp is a standards driven freelance web designer and developer. With experience in both frontend and backend technolgoies he brings value in integration delivering a seamless user experience. Jonathan has also developed a number of jQuery plugins such as jdMenu, jdNewsScroll and positionBy. Prior to freelancing, Jonathan worked for Union Pacific Railroad, CSC and Motorola, Inc. in Chicago after helping found Imprev, Inc. in Bellevue, WA in early 2000. He lives in Nebraska with his wife, Erin, and their daughter Noel. When not working he enjoys spending time with his family, playing with their dogs, and riding off into the sunset on Micah, his draft horse.

Kevin Hoyt

Kevin Hoyt

Kevin Hoyt is a Platform Evangelist with Adobe Systems, Inc. Passionate about engaging user experiences, you’ll most often find him meeting with customers, speaking at conferences, presenting online seminars, or just enjoying the chance to share ideas and brainstorm with other developers. When not on the road, Kevin enjoys spending time with his family, photography and general aviation.

Cody Lindley

Cody Lindley

Cody Lindley is a Christian, husband, son, brother, professional web developer, and outdoor enthusiast. He spends the majority of his time sleeping and working, but who doesn’t? In between the daily routines of the average American, he desires an existence that entails a relationship with God, family, and nature. He considers himself a bookworm and a novice theologian, but truth be told, he simply enjoys watching movies and playing Xbox way too much. He is thankful for the luxury of pursuing his profession as a personal passion. More details can be found about cody on his site codylindley.com.

Mike Alsup

Mike Alsup

Mike Alsup is a Senior Developer at Click Commerce in Rochester, NY. He has been developing software solutions for 15 years with a current focus on Java, Swing, J2EE and web applictions. Involved with the jQuery project since near its inception in early 2006, Mike has authored many popular plugins including the Form Plugin, BlockUI, Taconite and Cycle.

Agenda:

Beginner Advanced
9:00 – 9:30
Registration, Breakfast
9:30 – 9:55
State of jQuery – John Resig
10:00 – 10:50 Learning jQuery – Karl Swedberg Optimizing jQuery Core – John Resig
11:00 – 11:50 jQuery Case Studies – Cody Lindley
and Jonathan Snook
Writing Scalable jQuery Applications – Yehuda Katz
12:00 – 1:00
Lunch
1:00 – 1:50 Rich Interactivity, Simplified with jQuery UI – Richard Worth An In-Depth Look at jQuery UI – Paul Bakaus
2:00 – 2:50 Designing Reusable jQuery Components – Scott Jehl Desktop Applications with jQuery and Adobe AIR – Kevin Hoyt
3:00 – 3:50 Making the Case for jQuery – Jonathan Sharp Using jQuery in Firefox Extensions – Aza Raskin
4:00 – 4:50 Your First jQuery Plugin – Mike Alsup Building Robust jQuery Plugins – Joern Zaefferer
5:00 – 6:00
Dinner
Later
Cambridge Brewing Company for drinks and socializing

Full details of the individual sessions, biographies of the speakers, and additional conference information is forthcoming.

jQuery Site Redesign – The Community Speaks

Posted on by

As many of you have seen by now, the jQuery Project’s site has been redesigned. It had been a long overdue task and it was important to put a fresh new spin on the main hub, and the face, of jQuery. One of the things about the jQuery Project is that we’ve never run with the crowd or accepted the norm. By pushing boundaries and sometimes being “in your face” we’ve not only grown tremendously in popularity but we’ve pushed most of the other JS library projects to rethink their own principles and make changes to improve their products. That’s a good thing for everyone as competition is always good.

So, it should come as no surprise by the drastic change in the jQuery website. So far, the single biggest complaint has been associated with the new banner (ie: rockstar caricature & slogan). Again, we wanted to push the boundaries and come up with something that would generate a lot of buzz. Overall, we’ve succeeded in that goal with plenty of positive feedback but unfortunately, with some very negative comments as well. We actually value both types of feedback and want more as it’s the only way to determine if we’re on the right track. As with any site redesign, you can’t please everyone and we understand that. But we also want everyone to realize that this is a first cut and it doesn’t mean that it can’t be tweaked.

We’re actively reviewing all of the feedback and will certainly be looking at how to best handle some of the concerns of the community. After all, the community is what makes the jQuery Project so special and so different from other projects. In addition, the jQuery team has always listened to the needs of the community and this time is no exception. Again, I think the team is unique in that we *DO LISTEN* to the community and we’re going to work on making the site an invaluable tool for everyone. So just give us some time to go through the messages and keep an eye on this blog for updates.
Thanks for your patience and we truly appreciate your feedback.

Registration Open for jQuery Conference 2008

Posted on by

Registration for jQuery Conference 2008 is officially open. Register now to ensure your spot!
As announced, this one-day conference will be held in Boston on Sunday, September 28, and will feature two tracks of presentations (beginner and advanced) from jQuery project members and a few special guest speakers. A registration fee of $50 will help cover the cost of the venue, as well as food, beverages, and T-shirts for all attendees.

We’re finalizing a convenient venue, especially for those who will be attending The Ajax Experience conference the following Monday through Wednesday. We’re still firming up the agenda as well, but you can expect this to be a blow-out event.

If you have any questions, please feel free to contact us at events [at] learningjquery.com

jQuery Camp 2008 Announced

Posted on by

The jQuery Team is pleased to announce the second annual jQuery Camp! jQuery Camp 2008 will be held on Sunday, Sept. 28, the day before The Ajax Experience, in Boston, MA (location TBA).

Last year, over 100 jQuery developers gathered for a full day of jQuery sessions, which included talks from such big names as jQuery creator John Resig and other core team members, as well as talks from expert users exploring new and exciting jQuery projects. It brought together the largest group of jQuery Core Team members ever assembled, and gave users the opportunity to pick their brains and pitch new ideas.

The event was a *clear* success, and this year’s camp promises to be even better.

jQuery Camp 2008 will offer two tracks, providing both introductory and advanced sessions, covering a variety of topics. Ajax development, mashups, security and the recently released jQuery UI component and effects library are just some of the topics already lined up.

jQuery Camp 2008 will charge a nominal fee of $50 per person, which will include lunch. Attendees need NOT be registered for The Ajax Experience to attend. Registration will open in July; keep an eye on jQuery.com for more details!

For those attending The Ajax Experience, show organizers have recently announced a half-day time slot for additional jQuery sessions, on September 29th at the conference center. The agenda is still up in the air, but we’re thinking of offering a “Dream Team Code Review” session, where users can have code reviewed by members of the jQuery team. We’re interested in your feedback; would you attend this session?

jQuery Camp 2008 is a truly fantastic opportunity to learn from the jQuery team and socialize with top jQuery developers; we’re looking forward to meeting everyone!

See you all in September.

jQuery 1.2.6 Released

Posted on by

This is primarily a bug fix release for jQuery 1.2. You can view the full list of what was fixed on the bug tracker

This is the next release immediately following jQuery 1.2.3. Releases 1.2.4 and 1.2.5 were skipped (1.2.4 was built incorrectly, rendering it effectively identical to 1.2.3, and 1.2.5 was missing a patch).

The entire jQuery team did a fantastic job in pulling this release together – I want to take this opportunity to thank them all for their continued hard work.

I’d also like to take this opportunity to welcome Ariel Flesler to the core jQuery development team. He provided valuable help in pulling this release together – contributing bug fixes, performance improvements, features, and test cases. You can see the result of his hard work all throughout this release. Welcome Ariel and thank him for all his contributions!

Downloading

jQuery 1.2.6:

Performance Improvements

Once again the jQuery team has worked hard to bring huge performance improvements in this release. As with previous releases we’ve expanded to look at many areas of the jQuery framework, looking for common pain points, and providing relief.

All data and test cases for the below performance improvements can be found in the following jQuery 1.2.3 v. 1.2.6 Google Spreadsheet (results for Internet Explorer 6 were excluded in favor of Internet Explorer 7 due to their virtually-identical results).

Event Handling is 103% Faster

In analyzing intense application code (specifically operations such as drag-and-drop) we looked for ways in which universal changes could be made that would affect all users. A frequently-called piece of code was that of the jQuery event handler, any optimizations to it would dramatically improve the performance of all resulting frequently-called events. By focusing improvements here all frequently-called events that you have should see immediate benefits.

CSS Selectors are 13% faster

A number of optimizations have been made to internal jQuery methods, dramatically improving their performance, while providing measurable benefit to some of the most commonly used code in jQuery (such as the CSS Selector code).

For example the jQuery.map() method is now 866% faster and jQuery.extend() is 19% faster. These two changes have allowed for dramatic improvements in performance all throughout the library.

.offset() is 21% faster

Together with the improvements to jQuery’s event handling code optimizations of .offset() have allowed intense mouse-based operations to become much faster. For example jQuery UI’s drag-and-drop code is now over 300% faster because of these change (allowing you to achieve faster, smoother, drag-and-drop operations).

.css() is 25% faster

A method that’s frequently called (both internally and externally). The optimizations to this method are easily felt in others (like .offset(), for example).

New Features and Major Changes

Dimensions Plugin is Now Part of Core

The remaining methods of the Dimensions plugin, by Brandon Aaron, have been introduced into jQuery core, along with additional bug fixes and performance improvements. This plugin has seen considerable use amongst developers and plugin authors and has become a solid part of the jQuery ecosystem. We’ve been, slowly, introducing the most-used methods from the Dimensions plugin over the past couple releases – but with the release of 1.2.6 all remaining methods are now part of core.

If you’re upgrading your copy of jQuery to version 1.2.6 you can now opt to exclude the Dimensions plugin from your code.

The full documentation for Dimensions can be found on the jQuery API docs site (and is in the process of becoming integrated with the core jQuery documentation).

.attr() overhaul

The .attr() method has been completely overhauled (resolving about 15 outstanding bugs). Additionally, the method has been significantly simplified and optimized.

.toggle() can now accept more functions

Historically jQuery’s .toggle() function has accepted two functions (to be toggled in an even/odd manner). However that has been changed so that any number of functions can be provided and toggled by a mouse click.

$("div").toggle(function(){
  $(this).removeClass("three").addClass("one");
}, function(){
  $(this).removeClass("one").addClass("two");
}, function(){
  $(this).removeClass("two").addClass("three");
});

You can now unbind bound .toggle() and .one() functions

function test(){ $(this).addClass("test"); }
$("div").one("click", test);
$("div").unbind("click", test);

$("div").toggle(test, test);
$("div").unbind("click", test);

.index() supports jQuery collections

jQuery’s .index() function has allowed you to find the location of a DOM element in the jQuery collection – now you can also specify a jQuery collection (the first element of which will be extracted and located in the original set).

var test = $("div.test");
$("div").index( test ) == 3

jQuery.makeArray can convert ANYTHING to an array.

jQuery’s internal .makeArray() method now converts any array-like object into a new array. Additionally it wraps all other objects as an array and returns the resulting set.

jQuery.makeArray( document.getElementsByTagName("div") )
// => [ div, div, div ]

jQuery.makeArray( true )
// => [ true ]

jQuery.makeArray()
// => []

beforeSend can cancel Ajax calls

The beforeSend Ajax callback has allowed developers to execute a piece of code prior to a request occurring – now that code can also verify the integrity of some parameters and cancel the resulting Ajax request (useful for tasks like form validation).

$.ajax({
  beforeSend: function(){
    return $("#input").val() == "";
  },
  url: "test.php"
});

Exposed Speeds

jQuery has a number of named animation speeds (such as ‘slow’, ‘fast’, and ‘default’) you can now provide your own names for animation speeds, or modify the existing ones, by manipulating the jQuery.fx.speeds object.

jQuery.fx.speeds.slow = 1000;
$("#test").slideDown("slow");

jQuery 1.2.3 Released

Posted on by

This is a bug fix release for jQuery 1.2. You can view the full list of what was fixed on the bug tracker.

Downloading

jQuery 1.2.3:

.data() and .removeData()

These methods complement the already included jQuery.data and jQuery.removeData methods introduced in jQuery 1.2. The important change, however, is that they’ve been tailored for plugin developers. You can now namespace data additions – like you can with event binding/unbinding. For example:

  $("div").data("test", "original");
  $("div").data("test.plugin", "new data");
  alert( $("div").data("test") == "original" ); // true
  alert( $("div").data("test.plugin") == "new data" ); // true

Additionally, getting or setting data values can be overridden by a plugin. For example, the following code is from the, recently updated, draggables in jQuery UI:

  $(element).bind("setData.draggable", function(event, key, value){
     self.options[key] = value;
  }).bind("getData.draggable", function(event, key){
     return self.options[key];
  });

The above makes it such that all attempts to get and set draggable-namespaced data will be intercepted and handled by the plugin directly (rather than being bound directly to the element). The result is a powerful new interface for dealing with internalized data within a plugin.

.unbind(“.namespace”)

In jQuery 1.2 you could add and remove namespaced events, however you always had to include a name for the type of event being used. With this addition you can now remove all bound events that match a particular namespace, for example:

  $("div").bind("click.plugin", function(){});
  $("div").bind("mouseover.plugin", function(){});
  $("div").unbind(".plugin"); // All handlers removed

The above removes all bound event handlers that are within the “plugin” namespace.

jQuery 1.2.2 Released

Posted on by

This is a bug fix release for jQuery 1.2. You can view the full list of what was fixed on the bug tracker.

Downloading

jQuery 1.2.2:

Important Changes

A lot of hard work was put into this release by Brandon Aaron and David Serduke. David is a new addition to the jQuery core development team and has been making significant contributions – please help us in welcoming him!

Primarily, this has been a bug fix and optimization release. We landed over 120 bug fixes and our test suite now has over 1157 tests in it – which we are quite proud of.

300% Speed Improvements to $(DOMElement)

Once again, we’ve taken a step at micro-improving the most-used features in jQuery. Specifically, the use of passing a DOM element into the jQuery function. (Most frequently used when you see stuff like $(this) in your code.)

Here’s a quick peek at some of the speed jumps that you can expect in all the major browsers:

Browser 1.2.1 (ms) 1.2.2 (ms)
Firefox 2 0.041 0.015
Firefox 3 0.033 0.01
Safari 3 0.017 0.005
Opera 9 0.023 0.004
Internet Explorer 6 0.04 0.03

.ready() Overhaul

The document ready function has been long due for some extra love. We’ve made a number of specific changes.

  • Internet Explorer document ready drastically improved. We use a new technique inspired by Diego Perini. It allows us to not have to do a document.write() anymore, which is really fantastic.
  • All browsers now wait for CSS to be ready, in addition to just the DOM. In reality, it’s not just a vanilla document ready anymore – but we found that users, overwhelmingly, needed to wait for document styling to be active (such as knowing if an element is visible, or what its height is). Specifically we’ve added improvements to Safari and Opera to make this possible.
  • $(document).bind("ready", fn); – You can now watch for the document ready event via the traditional .bind() function. Of course, .ready() still works as you would expect it to.

.bind(“mouseenter”) / .bind(“mouseleave”)

The functionality that was the core of the .hover() function has been split out into two new cross-browser events: mouseenter and mouseleave. These are different from mouseover and mouseout as those events will fire as you move in and out of child elements (which is generally not desired). For example, the following are both valid and work perfectly in jQuery 1.2.2:

$("li").hover(function(){
  $(this).addClass("hover");
}, function(){
  $(this).removeClass("hover");
});
$("li").bind("mouseenter", function(){
  $(this).addClass("hover");
}).bind("mouseleave", function(){
  $(this).removeClass("hover");
});

.bind(“mousewheel”)

We have [http://dev.jquery.com/browser/trunk/plugins/mousewheel/jquery.mousewheel.js a new plugin], written by Brandon Aaron, based on the new Event API which adds mousewheel event support to jQuery core. This will allow you to write things like:

$("div").bind("mousewheel", function(event, delta){
  if ( delta < 0 )
    $(this).append("up");
  else
    $(this).append("down");
});

Complex :not()

Even though it's not part of the CSS 3 specification it's been a common feature request - so you can now do complex expressions in your :not() selectors. For example, the following now work:

$(".hover:not(li.active)")
$("li:not(.active,.hover,:contains(test))")

Accept Headers

For normal jQuery Ajax operations we now send an extra Accept header to let the server know what kind of content we're looking for. If you specify a dataType argument then we'll take care of all the header setting for you. We currently send the following headers for each dataType.

  • xml "application/xml, text/xml"
  • html "text/html"
  • script "text/javascript, application/javascript"
  • json "application/json, text/javascript"
  • text "text/plain"
  • Everything else: "*/*"

Bug Fixes

Here's a sampling of some of the functionality that's seen some important overhauling.

  • .clone() overhaul
  • Script evaluation overhaul
  • height() / width() overhaul
  • Cross-frame DOM manipulation
  • A few memory leaks have been resolved

Event API

There's a new API for dealing with events. You can now create your own custom event types (with custom ways of being set up and torn down). Effectively, it allows you to go beyond simple event triggering and create a full scheme for attaching, handling, and tearing down events on an element. A [http://dev.jquery.com/browser/trunk/plugins/mousewheel/jquery.mousewheel.js demonstration plugin] was created by Brandon Aaron that you can use to learn the powerful new API.

jQuery 1.2.1: Quick Fixes for 1.2

Posted on by

jQuery 1.2.1 is a bug fix release for jQuery 1.2. You can view the full list of what was fixed on the bug tracker.

Downloading

jQuery 1.2.1:

If you wish to checkout the full release from the Subversion repository, you can do so by following the following instructions and checking out the source from the following location:

 svn co http://jqueryjs.googlecode.com/svn/tags/1.2.1

Important Changes

Relative Animations

There was a serious error in the API for the new relative animations that caused a conflict with existing animation styles. To resolve this, in order to do a relative animation, you must now use the following syntax:

 $(...).animate({ height: "+=50px", width: "-=20%", fontSize: "+=2em" });

With += meaning “Add to the current position” and -= meaning “Take away from the current position”.

.eq()

Due to some very-persuasive arguments, and a great deal of reconsideration, .eq() has been brought back. A great number of plugins rely on this single method – and the alternative provided by .slice() simply wasn’t as elegant a solution as what was originally provided.