posted: 14 Jan 2016
Today marks the 10th anniversary of the release of jQuery. I announced it back at BarCamp NYC 2006 when I was still in college. It’s incredible to think of how far it’s come and just how many people have contributed to its success. To them I am forever grateful, thank you. Last year I wrote […]
posted: 28 May 2015
Since the fall of 2013 I’ve had the opportunity to collaborate with the Frick Art Reference Library Photoarchive, a venerable art history research institution here in New York City. We’ve been especially interested in finding ways of applying computer vision technology to improve art history research. Art history photo archives are an interesting tool used […]
posted: 20 May 2015
In my spare time I’ve been working on a database of Japanese prints for a little over 3.5 years now. I’m fully aware that I’ve never actually written about this, personally very important, project on my blog — until now. Unfortunately this isn’t a post explaining that project. I do still hope to write more […]
posted: 07 Apr 2015
Recently I was prompted by Daniel Lamb to try and find old versions of jQuery for his jQuery Archive project. Thankfully I was able to find one in the Internet Archive from just a couple weeks after its release, in January 2006. I then took that opportunity to put that code online and I used […]
posted: 22 Nov 2014
In an effort to be more privacy conscious I’ve been looking to transition to having Domain Privacy enabled on all the domains that I own. As it turns out many domain registrars, including my current one, charge an additional fee for this service. In an effort to save some money I did a price comparison […]
posted: 10 Apr 2014
Last fall work on my coding side projects came to a head: I wasn’t making adequate progress and I couldn’t find a way to get more done without sacrificing my ability to do effective work at Khan Academy. There were a few major problems with how I was working on my side projects. I was […]
posted: 21 Nov 2013
First, some background: I highly recommend that you read the following two blog posts: by Ashe Dryden: The Ethics of Unpaid Labor and the OSS Community and by James Coglan: Why Github is not your CV. They make some fantastic points and communicate the issues surrounding “Using Github as your CV”. Both of these were […]
posted: 15 Nov 2013
This summer I had the opportunity to attend NodeConf and it was a fantastic experience. I really appreciated how every session was a hands-on coding session: I felt like I walked away knowing how to put a bunch of advice directly into practice. One of my favorite sessions was the one run by James Halliday […]
posted: 16 Jul 2013
For a while now I’ve been a huge fan of Gittip. I think they’ve created one of the most interesting models for funding Open Source development. One of the missing pieces, for most Open Source developers, is having consistent, reliable, income backing your development. Some developers are sponsored by their work place, others have a [...]
posted: 03 Apr 2013
Like many developers I’ve been excited by the promise of Asm.js. Reading the recent news that Asm.js is now in Firefox nightly is what got my interest going. There’s also been a massive surge in interest after Mozilla and Epic announced (mirror) that they had ported Unreal Engine 3 to Asm.js – and that it [...]
posted: 13 Feb 2013
The news has just come out that Opera is switching all of their browsers (both mobile and desktop) to use WebKit (specifically, Chromium). I’ve seen a lot of gnashing of teeth on Twitter and I feel like I can respond because I use to feel the same way back in 2008-2009. However this is 2013 [...]
posted: 08 Feb 2013
As an avid user of Ghostery, which blocks all sorts of tracking scripts, pixels, and other web bugs I frequently run across a surprising issue: The case in which the Google Analytics ga.js script has been blocked from loading (which is intended) but then some critical piece of functionality on the site is broken. The [...]
posted: 07 Feb 2013
Happy news! My book, Secrets of the JavaScript Ninja is finally in stock on Amazon! It’s been available on Manning.com for over a month now but I think Amazon has been struggling to keep the books consistently in stock. You can get an ePub or Kindle version of the book at Manning.com. I’ve written about [...]
posted: 06 Feb 2013
I learned a neat tip from my co-worker, Craig Silverstein, recently and I thought others might find it to be useful. It has to deal with the eternal question: How do you store sensitive configuration options (such as usernames, passwords, etc.) in source control? Typically what I’ve done is to just punt on the problem [...]
posted: 15 Jan 2013
As a follow-up to my post from last week on a strategy for i18n and Node.js I've published my module for handling internationalization in Node and, specifically, Express.js. The module is now available on NPM and can be installed by running: npm install i18n-2 The code and documentation for the module is available on Github [...]
posted: 11 Jan 2013
Recently I internationalized a Node/Express web application that I've been working on and it seems to have gone fairly well (users in multiple languages are using it happily and I'm seeing a marked increase in traffic because of it!). Not much of what I'm writing up here is particular to Node, per se, just a [...]
posted: 11 Jan 2013
Recently I internationalized a Node/Express web application that I've been working on and it seems to gone went fairly well (users in multiple languages are using it happily and I'm seeing a marked increase in traffic because of it!). Not much of what I'm writing up here is particular to Node, per se, just a [...]
posted: 26 Oct 2012
This past weekend I gave a talk at EmpireJS on the Computer Science platform that I’ve been developing at Khan Academy. The talk explores that platform and then goes into deeper technical details about how the real-time execution on the site was achieved. I recorded the talk on my laptop (so please excuse the echo [...]
posted: 14 Aug 2012
I’m incredibly excited to take this opportunity to announce a new project that I’ve been leading here at Khan Academy: Khan Academy Computer Science. We’re releasing a completely new platform that targets people with no programming knowledge and gives them an engaging and fun environment to learn in. Over everything else we wanted to emphasize [...]
posted: 11 Jul 2012
Jeff Atwood wrote up a post today on the merits of writing a technical book in this day-and-age and specifically called out my past post on programming book profits and my work-in-progress Secrets of the JavaScript Ninja. I wanted to give a brief status update on the book and how it’s going. I started the [...]
posted: 13 Feb 2012
I’ve been working on a few projects in my spare time and one service, in particular, would greatly benefit from a high quality image similarity search. I’ve been trying a number of the Open (and non-Open) Source tools (a great list of which is on Wikipedia here). Thus far none of the tools that I’ve [...]
posted: 21 Dec 2011
At Khan Academy we've been investigating teaching Computer Science to students in some new and interesting ways. The most interesting aspect of which is that we're likely going to be teaching them JavaScript as their first language. We're in a very unique position as we're primarily aiming to teach students who've been through our previous [...]
posted: 28 Jul 2011
Today we’re pushing live a complete rewrite of the Khan Academy Exercise framework (live demo). A big push at Khan Academy has been to write more-and-more exercises for students to practice with. Naturally, to increase the number of exercises that we have, we needed to make it easier for team members, and casual committers, to [...]
posted: 19 Jul 2011
We're taking an innovative new approach to providing students with exercises in the new Khan Academy exercise framework (which will be released for beta testing soon). In the old framework a problem would be randomly generated and provided to the user. This would result in a near-infinite number of randomly generated problems. This ends up [...]
posted: 13 May 2011
jQuery 1.6 and 1.6.1 are out the door. Congrats to the team and everyone that was involved with the release! A relatively controversial change in 1.6 was regarding how attributes and DOM object properties were handled. In 1.6 we wanted to take the major step of completely separating the two, allowing us to create an [...]
posted: 03 May 2011
Today I’m announcing a major change in my life: I’m leaving Mozilla Corporation and joining Khan Academy. I joined the Mozilla Corporation in January of 2007, just over 4+ years ago, as a JavaScript Evangelist. During my time at the company I had an amazing opportunity to promote JavaScript. It’s been an incredible experience working [...]
posted: 21 Apr 2011
I’ve created a simple tool for landing pull requests from Github, which I’m calling “Pulley“. Landing a pull request from Github can be annoying. You can follow the instructions provided by Github (pulling the code, doing a merge) but that’ll result in a messy commit stream and external ticket trackers that don’t automatically close tickets. [...]
posted: 22 Mar 2011
After my two previous posts discussing dictionary lookups in JavaScript and JavaScript Trie performance analysis even more excellent feedback came in from everyone. Out of all the results two techniques seemed to be most interesting - and promising for reducing general memory usage and load time. String-based Binary Search The first technique proposed was left [...]
posted: 17 Mar 2011
After my last post discussing dictionary lookups in JavaScript the unanimous consensus seemed to be that utilizing Trie would result in additional space savings and yield performance benefits. A Trie is a relatively simple data structure. At its simplest form you're building a tree-like structure where each final leaf results in a complete word. This [...]
posted: 15 Mar 2011
I've been working on a browser-based word game, naturally written in JavaScript, and have been encountering some interesting technical challenges along the way. I've written up my thought process here for others to learn from (note that most of this happened over the course of a month, or so). I've often found that while a [...]
posted: 21 Jan 2011
The other day I saw the announcement for the new Chrome OS test laptop and decided to sign up on the off-chance that I might be able to snag one. In the request form I made it very clear that I would be attempting to use this laptop for development (easily my primary activity). Surprisingly [...]
posted: 21 Jan 2011
An issue popped up on Twitter this past week that caused the web site to be generally unusable for many users. It appears as if attempts to scroll were unbearably slow and caused the site to be unresponsive. The Twitter team investigated and determined that if they reverted the version of jQuery that they used [...]
posted: 04 Mar 2010
I'm giving a number of talks this spring on jQuery and especially on some of the recent additions made in jQuery 1.4. Below are all the slides and demos that I've given. The conferences / meetups that I spoke at (or will speak at, in the case of MIX), and the talks that I gave, are [...]
posted: 18 Dec 2009
A new method signature is slated for jQuery 1.4: .closest(Array). It builds upon the previous .closest() method and hyper-optimizes the logic needed for handling event delegation (and live events). closest() (and by extension, is()) has become a critical function in jQuery. With more people using live events reducing any overhead has become of the utmost importance. [...]
posted: 24 Nov 2009
When working with the DOM .nodeName property there are two hard-and-fast rules that most people abide by: The node names of HTML elements are always uppercase, even if they're explicitly created using lowercase characters. <html> will result in a .nodeName === "HTML" (see the HTML 5 draft). The node names of XML elements are always in the [...]
posted: 17 Nov 2009
After reading a recent post by Steve Souders concerning a free tool called dynaTrace Ajax, I was intrigued. It claimed to provide full tracing analysis of Internet Explorer 6-8 (including JavaScript, rendering, and network traffic). Giving it a try I was very impressed. I tested against a few web sites but got the most interesting [...]
posted: 27 Oct 2009
As far as I'm concerned, Google Groups is dead. For the jQuery project we've run all of our community discussions through Google Group mailing lists for the past four years. At this moment the main jQuery group is the second most popular programming group (next to Android developers) clocking in at over 21,000 members. We also [...]
posted: 16 Sep 2009
This past weekend was the 2009 jQuery Conference here in Boston. It was an incredible event - 300 people attended and a ton of discussion, collaboration, and learning happened. Nearly the entire jQuery project team had the opportunity to meet for two days prior to the conference and hash a number of things out - figuring [...]
posted: 16 Sep 2009
The video from my talk at JSConf has been posted. Thanks to Chris for organizing the conference and the excellent quality of the video. The description from the JSConf site summarizes the talk well: John Resig presents his mystery topic, which is actually three topics that strike his interest. First up is measuring performance and a quick [...]
posted: 16 Sep 2009
I just posted a run down of some of the new DOM Traversal APIs in Firefox 3.5. The first half of the post is mostly a recap of my old Element Traversal API post. The second half of the post is all about the new NodeIterator API that was just implemented. For those that are familiar [...]
posted: 16 Sep 2009
Previously I analyzed ECMAScript 5's Object and Property system. This is a huge new aspect of the language and deserved its special consideration. There are a number of other new features and APIs that need attention, as well. The largest of which are Strict Mode and native JSON support. Strict Mode Strict Mode is a new feature in [...]
posted: 16 Sep 2009
ECMAScript 5 is on its way. Rising from the ashes of ECMAScript 4, which got scaled way back and became ECMAScript 3.1, which was then re-named ECMAScript 5 (more details)- comes a new layer of functionality built on top of our lovable ECMAScript 3. Update: I've posted more details on ECMAScript 5 Strict Mode, JSON, and [...]
posted: 16 Sep 2009
One of my favorite sources of active mining is that of Peter-Paul Koch digging in to mobile browsers and how they behave. Sponsored by Vodaphone to do a study of various mobile devices and their respective browsers, PPK has been doing some serious analysis of what the landscape looks like. Armed with a battery of tests [...]
posted: 16 Sep 2009
Thanks to some generous contributions, there now exist well-designed web sites for two projects of mine: Processing.js and Sizzle.js. Design and logo by Alistair MacDonald (on Twitter) Processing.js was released almost a year ago (May 8th of last year) and it finally has an official web site. At this point the project is being primarily maintained by [...]
posted: 16 Sep 2009
A common question that I hear from developers is "What is the market share of Firefox?" (or, more recently, "What is the market share of Firefox 2?"). There are a couple answers but generally you shouldn't care about the results. How do you determine the global market share of a browser? It's hard to give a proper [...]
posted: 16 Sep 2009
This past weekend I had the pleasure of attending and presenting at the annual SXSW conference, down in Austin, TX. I participated in a panel discussion called 'More Secrets of JavaScript Libraries' (a follow-up panel to last year's talk). The synopsis was as follows: In a reprise from last year's popular panel - the JavaScript libraries [...]
posted: 16 Sep 2009
I've been slowly working on a new JavaScript book that covers many of the specifics behind how and why JavaScript libraries are designed they way that they are - titled Secrets of the JavaScript Ninja. I'm still working on the book - I have four chapters left to write - and am hoping to have [...]
posted: 16 Sep 2009
TestSwarm, the project that I've been working on over the past 6 months, or so, is now open to the public. Mozilla has been very gracious, allowing me to work on this project exclusively. At the beginning of April I moved from my old position as a JavaScript Evangelist on the Mozilla Evangelism team to [...]
posted: 16 Sep 2009
Unfortunately I'm short on time at the moment (trying to launch a project this week) but I have to say, at least, a few words about the hacker and artist _why. At this moment, _why's online presence appears to be no more. All of his sites and code are gone. This includes, and is not limited [...]
posted: 16 Sep 2009
Web Workers are, undoubtedly, the coolest new feature to arrive in the latest version of web browsers. Web Workers allow you to run JavaScript in parallel on a web page, without blocking the user interface. Normally in order to achieve any sort of computation using JavaScript you would need to break your jobs up into tiny [...]