I gave a talk, recently, at @Media Ajax on jQuery (and a similar one at the Ajax Experience in Boston). I covered a broad amount of information (all the way from the absolute basics up to building and using plugins).
Three major releases, and one minor release, in less than a month will do that to you. If anyone has tried to email me and hasn't gotten a response, you now know why. Please ping me again if I haven't responded yet, I'm still working my way through the deluge.
I think this is the most non-stop programming that I've ever done, I plan on taking a short break to try and re-gain my bearings. I've got a couple un-loved side projects that I've been wanting to tinker with and release, so maybe I'll get those out the door - and possibly do some more writing.
Also, in early October I'm going to be giving some talks at the Future of Web Apps conference in London. Specifically, on the Mozilla Platform and on Client-Side User Interfaces. It looks like there's going to be a lot of fun people in attendance - I hope to see you there!
This past Friday I gave my first Google Tech Talk on Building a JavaScript Library. I was invited to speak by Jon Wiley and had a chance to speak with a bunch of people on the User Experience team at Google (and, of course, try the always-popular food).
Based upon some of the questions that I got, it definitely seems like there's a market for a jQuery presentation, at Google. Maybe I'll be able to give another talk there someday - time will tell!
I'm glad that I've been able to start codifying my thoughts surrounding JavaScript Library design and implementation. We'll have to see where it leads (if it does lead anywhere besides a presentation) - maybe it'll end up in the form of a book or set of articles.
Please let me know if this talk interested you as I'm trying to gauge what interests other web developers - because all of this stuff fascinates me (JavaScript programming, open source projects, etc.).
I recently had the opportunity to read through some of the, brand new, Learning jQuery book and I wanted to take this opportunity to write up some of my thoughts concerning the jQuery project and open source in general.
Learning jQuery was written by Karl Swedberg and Jonathan Chaffer and I feel lucky that they were the first to have been given the opportunity to write about jQuery. Being part of the core jQuery team, I've had the opportunity to come to know Karl quite well in the past months, and especially within the context of his book writing effort. Looking at the end result, it's clear that his skills as both a developer, and a former English teacher, will suit the reader well.
What's most interesting for me, though, is the subject matter and context of the book. jQuery has always meant something completely different to me, than to most people, so to see it described in such a frank and descriptive manner is quite an experience.
For example, whenever I talk about jQuery, I inevitably discuss the design decisions that surrounded picking the feature-set that I did, and why I chose to set the focus of the library on DOM interaction above all else. Whereas, Learning jQuery immediately jumps into "What You Can Do" with the library, followed by many chapters of "How You Can Do It". In the context of the book it works quite well, but it provides a stark contrast, for myself, as to how the library relates to me, personally. For example, the sum total of my work and design decisions that have gone into the library is relegated to a single line of a single paragraph at the start of the book:
Created by John Resig, jQuery is an open-source project with a dedicated core team of top-notch JavaScript developers. It provides a wide range of features, an easy-to-learn syntax, and robust cross platform compatibility in a single file...
Seeing my work divorced from my personal experience is surreal and fantastic, for all that I know about jQuery is my personal experiences in creating, and sculpting, it over the past couple years. Seeing the library progress to a point that transcends anything that I've put into it is both exciting and daunting.
For me, jQuery is much more than a block of code. It's the sum total of experiences that have transpired over the years in order to make the library happen. The considerable ups-and-downs, the struggle of development together with the excitement of seeing it grow and succeed. Growing close with its users and fellow team members, understanding them and trying to grow and adapt.
Seeing this long tome talking about jQuery and discussing it like a proper tool, as opposed to the experience that it's come to encapsulate for me is what makes this such a strange read for me.
I'm not the only one who enjoys jQuery on a plane that is far different from a normal tool-user relationship. I don't know if I can properly encapsulate why this is, but it's something that you can't get from reading a book, nor produce simply through following tutorials.
It's almost cliche, at this point, to say that your open source project is community-oriented, or that you want to focus on helping new users get started. But it's not just an orientation for jQuery, it's the liquid-oxygen fuel for the project.
I'll confess that I've never truly participated in a large open source project before, nor have I really, truly, understood how they worked internally. Taking nuggets of information that I could pan from projects like Drupal and Dojo, I began to better understand how an open source project could be structured and run. Before that point, though, I made a couple (and in retrospect, rather radical) decisions that have helped to truly shape the project and make it what it is today.
The first decision that I made with the library was to sculpt a sort-of custom programming language around the concept of HTML-JavaScript interaction. Instead of enhancing the normal DOM layer (using simplified method names, for example), I instead decided to make selectors the absolute core of the library (making it a sort-of CSS-JavaScript-HTML-DOM domain specific language).
I love being able to see users who truly understand just how different the end result can be, especially in comparison to normal DOM scripting. There's a specific moment where it just clicks for them, where they realize that, this tool that they had been using, was in fact much much more than that all along. And suddenly their understanding of how to write dynamic web applications completely shifts. It's an incredible thing, and absolutely my favorite part of the jQuery project.
The next decision was to form a jQuery Evangelism team, led by Rey Bango, to drive the jQuery community. At first, I only really expected this team to focus on things like handling community participation on the mailing list and blog tracking/response, but it has since progressed rather drastically.
Blog tracking is a particularly interesting area of project evangelism. A couple points had come up to make it necessary: First, that it was important to get a good response to user comments and questions (and it had simply overwhelmed me, personally) and secondly, that it was important to get a good, consistent, response to people, coming from the project itself. (We had had a number of instances where misinformation was spread, and although it was done with best intentions, it was better that we get an accurate message out first, acting as a definitive voice of the project.) Tracking is also quite controversial. We've been able to answer the questions and doubts of dozens of bloggers. The end result being users who aren't just interested in this new project, but almost fanatical.
This brings up the second interesting point about evangelism, and its logical next step: relation management. While we don't, internally, yet have a proper CRM to keep track of all our users (we're in the process of switching to Basecamp to try and make this possible) we do keep very close ties with all of users, even giving special attention to high profile companies and open source projects (at our discretion). This is something that the evangelism team really takes to heart, and something that most users don't see. We keep internal threads to track specific problems that a user might be having, trying to figure out ways that we can best help them (either through bug fixes, pointers to specific resources, or simply affirmation that we're there and we care about their progress with jQuery). We don't really have a specific means of picking which people we pay extra attention to (if we were a business, it would be the customers that paid us the most, I would assume) but it boils down to which people have the biggest opportunity to make the project look good. (So open source projects, companies with public-facing web sites, and vocal/influential users and bloggers; and roughly in the order too.) This is something that we're still working on, and we're starting to get real good at it. What's interesting about this, though, is that this is what helps us to turn a normal user into a devoted user - one whose interest in the project goes beyond that of the normal tool-user relationship.
All of this is related. How we run the project, and how you use the code, is fundamentally very different from most open source projects, and most JavaScript libraries. We're incredibly devoted, and understand this fundamental difference in how our code works, and pass that on to our users. Devoted users breed more devoted users, and the cycle continues. This isn't something that you can get from a book, nor is it something that you can read to understand. It's something that you actually have to experience in order for it to fully sink in, and something I hope that most of the book readers will be able to enjoy.
Incidentally, I get the feeling that the jQuery community will be increasing the book sales, and not the other way around.
I just got back from giving a presentation at the Boston Ruby Group on jQuery. You can find the contents of the slides below. There's going to be a video of the talk, so I'll post that too, when it's ready.
This is a presentation that I recently gave at Yahoo for a number of their developers. It was on the importance of JavaScript Libraries, and how their introduction and use changes how JavaScript development works.
Specifically, I discuss some of what I've learned from developing, and working with the users of, jQuery and developing the new FUEL library for Firefox 3.
Bookmarklets:
In the presentation, I refer to a bookmarklet that you can use to introduce jQuery into a web page. Drag these bookmarklets to your Bookmark toolbar to use them.
» jQuerify « - Introduce jQuery into any web page.
» Fix Digg « - The final bookmarklet that we made to remove all buried comments from a Digg post.
If you enjoyed this screencast, don't forget to Digg it up!
Update: If you wish to use Greasemonkey instead of a bookmarklet, then by all means, please do so. You can use the ability to quickly analyze and inspect a page that Firebug and jQuery affords you, using the results to build a Greasemonkey script, instead of a simple bookmarklet. I only really intended this to be a quick introduction to the subject, so please feel free to explore it more!
More Tips: Here are some more jQuery selectors that you can use on a Digg Post:
$("li.c-bury > div").remove(); - Remove all buried comments, but none of the direct replies.
$("div.c-body").show(); - Show all comments, even ones that've been buried.