Friday, April 6, 2012

JSConf 2012 Notes

Introduction

JSConf has a pretty great reputation. Node.js, Phonegap and other
huge projects were announced in JSConf's past. There are legendary
parties and fantastic speakers. This year was no exception. As such, the
250 conference tickets sold out in less than 5 minutes. We dressed up like cowboys, rode a mechanical bull and even had shoot-outs. It was a pretty awesome adventure.

Themes

I try to look for themes in the talks that I saw to figure out what's
going on in the community right now. Other than the cowboy theme there were a couple of ideas I heard repeated more than once:

Experimentation / play leads to great ideas.

Everyone is working really hard to make JS faster.

We need more women/diversity in JS.

Build tools / dependencies let us do cooler things.

My Talk

I gave a quick talk about some things I think are important to the JS community.

Best Talks

I obviously couldn't see all of the talks, so I may have missed a few
things, but here were some of the top talks I saw at least in relation to front-end development, which is what I do at my day job. Many other amazing talks were also given about improving JS Performance in the browser, other programming languages and politics.

Jeff Archibald: AppCache is a Douchebag

Summary: AppCache is not progressive enhancement, it completely changes how the browser handles your site.

This talk laid out basically all of the flaws and awkward parts of
using HTML5 AppCache and how to use localStorage, iframes and other
hacks to get it to behave properly. He made a separation between "get
stuff" sites like blogs and wikipedia, and "do stuff" sites like drawing
apps and games. It was really entertaining, but ultimately a depressing
talk, because of how hard it is to get the AppCache to work properly :(

Remy Sharp: Build Anything

Summary: Use HTML5's JS APIs to progressively enhance your site.
A good reminder of the latest crop of fairly well supported HTML5/JS
APIs. We're already using most of these at oDesk, but some that we are
not yet using include the HTML5 Drag'n'Drop API to handle file
uploading, HTML5 input types, HTML5 History/PushState API, and
EventSource (Server sent events).

Paul Irish: Tools

Summary: There are a lot of great tools out there to help web development. Embrace these dependencies.
Paul Irish laid out every testing framework, css pre-processor, debug
tool, and CI Server you could use to maintain your site. He also talked
about source maps and some mobile web tools. He mentioned Jenkins and
Travis as decent CI Servers.

Jacob Thornton: Brûlons les musées

Summary: We can make things better by starting over,
but we need to have clear specs/tests to make sure our new thing still
works the same.
The creator of Twitter Bootstrap and ender.js took us for a journey
through Dada-ism and french futurism, finally landing on a quote by a
famous futurist which translates to "burn the libraries". Jacob tried
doing that with ender.js and it ended up being kind of awesome, but
quickly people realized small differences with jQuery made it really
hard to use. He took a similar approach at re-writing mustache.js in a
project called Hogan, which ended up being really successful, because
mustache.js had unit tests that could be used to ensure it was perfectly
compatible. His approach ended up being significantly faster than the
original and eventually was accepted into the mustache.js core. Super
funny talk. Final quote "Burn all the libraries without tests".

I spoke with Devrim Yasar from Koding about his in-browser IDE. It's very similar to Cloud9,
but it's more friendly to non-js environments. I'd really love to give
something like this a try, but it will take some work to tweak our dev
infrastructure.

Ben Alman from Bocoup showed me his command-line tool Grunt, which is similar to my odesklint tool. It has built-in jshint, minification, and can run qUnit on the server-side with PhantonJS
out-of-the box (almost). Grunt has a plugin architecture and may be a
good starting point for future tools. I'm going to try and get the unit
testing thing working and integrated with a CI server. :)

I talked to the guys from Twillio,
who make a really easy to use API for building SMS sender/receivers.
Think user-verification and other use-cases. Fantastic stuff.

John David Dalton had some ideas about how to speed up ES5 shims for things like Array.forEach. Really smart guy!