CascadiaJS 2013

I attended CascadiaJS 2013 in Vancouver, BC last week, and wanted to compile some ideas I found interesting and useful from the conference. There were so many amazing talks that I don‘t have time to write about everything, but I’ll try to write a bit about the talks I enjoyed the most. All the sessions were recorded, so go and watch them!

My Favorite Talks

Chris Dickinson gave a very interesting talk on abstract syntax trees. He started by giving the audience a clear understanding of what an AST is, and how it can be used for interesting purposes. Then he walked us through a few of his projects that stemmed from his interest in ASTs. I thought the cssauron project was particularly interesting. In the same way CSS selectors allow you to query the DOM (via native CSS or jQuery), cssauron allows you to query any nested object structure, for example: JS AST (through the use of Esprima), JSON, or HTML. With this, Chris was able to build things like JIK, which allows you to use CSS selectors to grep your JS codebase, or, perhaps more practically, JSL to lint your codebase based on CSS selector rules.

Zach Bruggeman's inspiring talk was about his perspectives on how to get teenagers interested in programming. His perspective is an interesting one, since he is a teenager… who is interested in programming. Zach is a high school student who also works part time as an engineering apprentice at DIY. He brought up a good point about current solutions for getting young people interested in coding: the rolemodels are all successful adults. This is cool and all, but most young people don't give a shit about successful old people, though they might be more receptive to having successful peers as their rolemodels. He then lead on to talking a bit about JS (it's a JS conference after all!), and why he thinks JS is a great platform for teaching beginners - especially kids.

The two most important things in teaching someone to code are “zero to hello, world” and “hello, world to whoa”

I definitely agree with his main points: it‘s easy to get setup (all you need is a browser and maybe a text editor), it’s easy to learn (console.log('hello, world!')), and it‘s easy to build amazing things (eg., with tools like Canvas/WebGL, WebAudio, WebRTC). I thought Zach hit the nail on the head. I find it truly amazing that someone as young as him can stand and speak at a conference like CascadiaJS and give such a great talk, and I think he’s on the right track to creating more people like himself.

Henrik Joreteg gave a great talk about what exactly WebRTC is, why it's interesting, and why we should care. He brought up some really interesting points about how Google (hangouts), Apple (facetime), Microsoft (skype), and Facebook (fb messenger) are all becoming the new “telecoms”, but none of them can communicate with each other (ie., they are not federated like normal telecoms). WebRTC, on the other hand, is federated communication, because the spec requires browsers' implementations to be interoperable with other browsers. This puts the web in a very interesting position for the future of realtime communication. It means you can build really amazing things that will work on billions of devices with very little effort. Henrik went on to give examples of some of the various things you can build (and things people have built) with WebRTC. WebRTC is here, and it's ready for us to hack on.

In less than 5 years WebRTC will be the #1 way people make voice calls.

Other Awesome Talks

I also really enjoyed the following talks, which I'll give short summaries of:

Soledad Penadés gave a fun talk on Audio Tags - web components mixed with web audio. She showed some fun demos of oscillators and oscilloscope generated by extremely simple markup!

Charles Bihis showed us some JS Puzzlers - bits of buggy JS code with explanations of why. Here are some JS quirks that came up:

  • the % operator keeps the sign of the left operand (eg., -9 % 2 === -1)
  • 2^53 is the largest integer value representable by Number in JS (because numbers are represented using the IEEE 754 floating point spec)
  • floating point arithmetic can be innacurate when representing fractions (eg., 0.8 - 0.6 !== 0.2)

Tom Dale told us to Stop Breaking the Web by breaking URLs or building web apps that don't properly use them.

If you‘re building apps that don’t use URLs, then you're just using the web as a distribution platform

Peter McLachlan shared some really useful findings from his RUM testing of mobile performance:

  • mobile latency is a big problem that's not going away
  • key optimization: use “just enough” connections and good values for connection timeouts
  • use < 400 bytes of cookies to prevent header spanning multiple packets
  • domain sharding is no longer an optimization, and will soon be an anti-pattern

James Long gave a really cool talk on the performance benefits of using asm.js, either as a compile target from C/C++ with emscripten or by writing LLJS.

There were so many more awesome talks at the conference, and I thought all the talks were amazing, but these ones were particularly interesting to me.

Aside from the great talks, the conference itself was extremely well organized and well executed, and the people were amazing. I loved the addition of the Hacker Olympics on Thursday night and the after party (featuring on the projector at the bar) on Friday. I made some really great friends, and now I can't wait for CascadiaJS 2014!