As promised, a recap of my experience at the jQuery Boston 2011 Conference. I plan to share the info from these talks with my team at work, where we’ll hopefully implement some of it. I’ll definitely use some of this in my personal projects now and in the future.
A few main themes from the incredibly fun and brain-expanding weekend:
- JavaScript developers are crazy. Some of the funniest presenters and conference attendees I’ve ever come across. Other conferences I’ve been to (NFJS, DevDays) haven’t been this much fun.
- The jQuery community is awesome! You can tell the whole jQuery team and all the developers who get involved in some way really care about the API, code quality and making developers’ lives easier.
- You can build some serious applications with only HTML, CSS and jQuery/js. Coming from a background in internal web applications, built using a “classic” architecture with JSP/Java/SQL with a sprinkling of jQuery on top – I was blown away by the capabilities of some of these newer frameworks like Node.js, Backbone.js/Spine.js and even jQuery itself.
Below are the talks I attended, along with my observations and some notes I found interesting. I was often torn choosing between two talks, and hope to look through all the slides at some point. The quality of speakers was great! Inspires me to give a talk at a local meetup sometime. Some slides are posted here (I’ll link them below directly when possible):
http://events.jquery.org/2011/boston/schedule/
(This won’t be brief. TL;DR: If you like writing jQuery and JavaScript code, go to the jQuery conference. Hilarity and learning ensues.)
(Proof that I was really there and enjoyed cups of coffee)
Day 1
John is a great speaker. It was interesting to see some of the usage statistics of jQuery, and get aninside look into how the team is thinking.
- jQuery is soon to be used by 50% of top 10,000 sites on Internet. It is currently more popular than Flash…
- 1.7 beta 1 is out, complete with a simpler Events API! (.on()/.off() instead of .delegate(), .live(), .bind())
- John also went into how to get involved with the project, and how the core team operates
Wow, jQuery Mobile looks amazing. Extremely easy to get started and have a great looking mobile site with jQuery magic enabled. Todd and Scott work for Filament Group, the company who redesigned BostonGlobe.com – the site looks really sharp with its progressive enhancement fanciness.
- One useful feature is prefetching HTML, by using the “data-prefetch” attribute in your anchor tag: <a href=”prefetchThisPage.html” data-prefetch> … </a> or by using jQuery’s
$.mobile.loadPage()
- The demo of the new Themeroller was equally amazing. My favorite part of that is the “pick a main color, get some nice-looking secondary colors if you’re not a designer” feature…
- More info at the jQuery Mobile blog
Attributes and Properties in jQuery – Timmy Willison [slides]
Timmy admitted he was nervous before this talk, but he loosened up with the audience questions – Audience Member: “What’s your favorite property?”, Timmy Willison: “Window.location. It’s very existential”.
- Essentially the .attr() method caused some confusion and bugs in earlier versions, and the .prop() method has been introduced in 1.6 to address that.
- .prop() will always give the current value of an input’s property, even after user interaction. .attr() will give the initial value only.
- .prop() is faster than .attr()
Node.js for frontend developers – Garann Means [slides]
I’d been hearing about Node.js so I was interested in this talk. Node is a server side javascript framework – that’s right, JavaScript on the server side…wacky stuff, but it would be nice to limit the # of languages in building an app. We didn’t get much in the way of a demo or example apps, but I did learn enough to know I’d like to play around with Node to find out if it’s “something I might be interested in”.
- http://nodejs.org/, runs on V8 js engine
- Avoid the cross domain issue by making cross domain calls on the server!
- Packages for anything you can think of…much of the work is done.
- Recommended packages from npm: express (app framework) and socket.io (async communication)
Extending your jQuery application with AmplifyJS – Elijah Manor [slides]
I enjoyed this presentation, and will definitely be playing with AmplifyJS soon. Elijah also pointed out MockJSON, a tool for randomizing JSON data.
- http://amplifyjs.com/ contains 3 components – pub/sub, persistent storage, and request
- Pub/Sub is basically the observer pattern to decouple events and event handlers
- Persistent storage picks the most useful storage for the browser, and can store anything that can be serialized to JSON
- Request splits up the request config and the actual call, so they can be used separately!
Chrome Dev Tools (audience chosen topic) – Paul Irish [slides]
Paul Irish’s talk was a late add to the agenda. I’d heard the name and knew I’d read some of his stuff, but didn’t really know much more about him. When I overheard several groups of attendees talking about Paul Irish like he was an idol, I figured I’d better check out his talk. He didn’t disappoint – I appreciate his dry humor and complete command of all things web, html and css. He had several talks ready, and the audience decided on “Chrome Dev Tools”. I use Chrome Dev Tools all the time, and still learned a thing or two.
- Dev tools is just another app in html/css/js – so you can even inspect dev tools with dev tools
- Keeps a complete history of local changes to css! Awesome feature.
- Script pretty-printing feature is great. Use the {} icon. Think minified.js to an readable, breakpoint-able script
- smus.com/devtools-cheatsheet
Plugin Authoring Best Practices – Ben Alman [slides]
Ben Alman is a jQuery plugin fiend. He’s created a ton of them, and I’ve used a few myself already (Thanks Ben!). One cool thing about his talk is that it was completely written in a .js file, which was a nice way of showing off the code in it’s native form, without swapping windows. The key thing I picked up is that you really need to understand what scope you are working with when you write a plugin. I’ve dabbled in created plugins before, but Ben’s talk gave me some more concrete things to look out for.
- Best practice – empty param list is a get, param list is a set (follows jQuery standard!)
- Slides show how to allow optional args in your plugin (line 603)
- IIFE – Immediately Invoked Function Expression
Looking at my notes from this talk, I don’t remember much from it. Perhaps it was the late afternoon lull in energy. Nevertheless, I had a few key points jotted down:
- UI widgets can be extended for your own custom needs! (e.g. default options you always use)
- http://docs.jquery.com/UI_Developer_Guide#The_widget_factory
- e.g. https://raw.github.com/jquery/jquery-ui/master/ui/jquery.ui.progressbar.js
Remote debugging with jQuery Mobile – Mike Taylor [slides]
I hadn’t considered that with mobile html websites, debugging could be an issue. Then again, I haven’t developed one. Mike works as a “Web Opener” at Opera…which is probably one of the most unique titles I’ve heard (aside from the BS startup titles like “Chief Technology Ninja”). There was some connection trouble during the demo portion (a common theme for the conference), but otherwise I found the talk useful and Mike’s use of humor helped save a failed demo.
- General jQuery debugging tips: fixingthesejquery.com
- Emulators aren’t always reliable, need to debug on the device itself
- Current remote options: socketbug, weinre (note the spelling!) and opera dragonfly
(Note: I decided to skip the after party hosted by MediaTemple, because I was still hungover from Friday’s Harpoon Octoberfest…normally I wouldn’t pass up an opportunity to meet other devs and enjoy an open bar…)
Day 2
jQuery UI is already 4 years old. Sounds like some new widgets are coming in the next few releases, including a redesign of the datepicker, and a grid widget. This is great news for me, since we use datatables heavily at work and are always interested in better options.
- Timepicker plugin to come (as part of datepicker redesign, more individual components!)
- “Mask” plugin under development (to format telephone, ssn, etc.)
- wiki.jqueryui.com for more info on development progress and demos
QuickUI, a web control framework – Jan Miksovsky
I happened to sit down at Jan’s table for lunch the day before his talk, so I had a chance to hear a little bit about QuickUI ahead of time. I’m always interested in frameworks which might make project development time a bit shorter, and entrepreneurial projects are always fascinating to me. QuickUI seems useful, but it was tough to get a real sense in just the short 1/2 hour talk.
- quickui.org, used at cozi.com
- Use markup to create javascript-enabled web controls
- One downside is that ids are repeated in your markup
- The beta version compiler is written in C#, so it requires Mono to be installed if you’re on a Mac
This talk was full of sword fights and crazy hair. The basic gist of the talk was that anyone can get involved with the jQuery project, and all participation is much appreciated by the project team. Also, follow the style guide, suckers.
- Style guide - nothing too shocking here, consistency is key
- “Curly braces every God damn time!”
- “Your brain is your parser. Optimize your code to understand it easier later.”
- Only case when == is OK is when you are testing for null and undefined…can test in one fell swoop with someObj == undefined
“Event API, better drink my own piss” – Bear Grylls
This talk, as advertised, was chock full of Internet memes. You know, those pictures and sayings that get passed around so much they lose their original meaning but for some reason are still really funny. This talk was equal parts informative and hilarious – great job Dave.
- There are currently 3 event apis in jQuery 1.6 – live(), bind(), delegate(). This is bad. We want 1.
- In 1.7, just use the new API – on() and off()
- Faster event delivery in this version, due to fancy refactoring I didn’t quite follow
I heard one of the early “This Developer’s Life” podcasts where Sara was a guest, discussing some early career failures and getting fired. She seemed very into her craft on the podcast, so I decided to check out her talk at the conference. Browser plugins are something I haven’t considered dabbling in, but after seeing how easy it is, maybe I will.
This talk was more about Javascript MVC frameworks than Spine specifically, but it was a good heads up to all the MVC goodness out there for js. Backbone.js seems to be a big one in that area, along with SproutCore.
- TodoMVC – implementations of a TODO list app in each of the MVC frameworks
- Highly recommended js book – JavaScript Web Applications (O’Reilly)


CoffeeScript and You: Become a better JavaScript Developer – Mark Bates [slides]
CoffeeScript seems excellent. Reminds me of Python – less crap syntax, easier reading/writing. Compiles to js.
- http://jashkenas.github.com/coffee-script/
- Doesn’t let you use ==, as a safety net
- Shorthand syntactical sugar for existential checks – console?.log means log only if console is present
Contextual jQuery in Practice – Doug Neiner [slides]
The kind of performance optimization techniques Doug went through seem critical for complex sites, with aggressive performance requirements. Unfortunately I work on internal applications, but the tips were great to think about either way. Doug gave a related talk last year, which I still need to check out.
- “Write code like you spend money” – only bind your events when the user actually needs it (e.g. on mouseover)
- “Write code like you buy a car” – consider the tradeoff between speed and cost (complexity)
- Technique – base your event binding based on what is in view. If the user can’t see it, they can’t interact with it, so don’t setup those events yet.
Speeding Up the Future: How jQuery Can Help – Yehuda Katz (w/Paul Irish cameo)
This talk was a bit too much “inside baseball” for me. Seemed to be a lot of inside info on the jQuery team’s decision process in supporting certain features or not. There were even some team members taking shots via Twitter while Yehuda was presenting. Kinda weird. Also, it went way over the scheduled time – which would have been fine except it was the LAST talk on a Sunday…and I just wanted to get home and rest my brain.
- jQuery probably won’t provide an API for all the new HTML5 features, because the HTML5 api is fine as it is
- The flashback to core js APIs was a nice trip down memory lane. Ugh.