JSConf.eu: All the magic of JavaScript, all the cool of Berlin

I just want to say something upfront. This post is full of superlatives, but that's just how JSConf was, and frankly it deserves every one.

Earlier this year we raved about the first JSConf that happened in Washington DC. Well, they took the format over Atlantic to Germany and last week JSConf was back as strong as ever. As a front-end engineer, JSConf continues to be one of my all-time favourite conferences.

Where to start describing it? Let's take a look at the line-up; Doug Crockford, John Resig, Dion Almaer, Thomas Fuchs... add representatives and users from every major library to these industry leaders and you've got a heck of a mix. One of the things I really enjoyed about the conference was the incredible amount of smart people. Everyone really got JavaScript and the talks were really deep, no-one pulled their punches. Some people even took the chance to get their hero's autograph (yes that's Crockford's).

The venue was incredible too. If you've never been to Berlin before, it's a very urban city. There is a lot of graffiti art and cool urban scenes. This set the tone for the venue which was a warehouse south of the Spree river that cuts Berlin in half. Throughout the conference the two speaking rooms were packed. The conference was completely sold out. I even saw people who had to drop out at the last minute giving up their tickets on Twitter because of the waiting list.

Tom's biased guide to the talks at JSConf.eu

Server-side JavaScript was absolutely the star of JSConf.eu. There were a bunch of talks on server-side JavaScript. My favourite, and probably that of everyone else was the Node.js talk. Ryan Dahl presented the Node.js project. It runs on Google's V8 JavaScript engine (the one in Chrome). However, the main selling point is its entirely asynchronous I/O. Like scripting DOM events in a browser in Node.js, you use callbacks attached to events in order to interact with anything connected to I/O. This means that you can request a URL and then keep working while the URL is fetched from the Web. Ryan's demo was incredible. He invited us all to connect to an IRC server written in Node.js while he projected the channel live on stage and manipulated it from the server. Simply amazing. You can check his slides yourself:

Other great server-side include the talk Tom and Kris did on Narwhal. While Narwhal has more applications than just pure servers it's a great application of it. Narwhal is an implementation of common.js (I'll talk about that later). Essentially you can run Narwhal on a number of JS environments such as Rhino, SpiderMonkey or V8. Narwhal has a ton of packages that you can include to do various things. Its really very mature. I said it was more than servers because 280North, where Tom works, use it to make builds of their Cappuccino product.

Of course, I talked about some server-side JavaScript stuff too. We use server-side JavaScript to enhance the Open Tables in YQL. I'll save that for another blog post though.

Performance was another huge topic with amazing talks. Thomas Fuchs kicked it off with the best advice on performance you'll ever receive. "DO NOT, EVER, OPTIMIZE PREMATURELY" (caps not added). He then went on to show some really interesting examples of counter-intuitive aspects of the JavaScript programming language and how it performs in browsers. While I'm personally not a fan of extreme micro-optimizations like this, it was very interesting to learn a lot about the JavaScript language. I also wonder if some of these techniques could be applied with a build-script or with the new Closure compiler.

Steve Souders gave a great talk on web site performance. While I can't hope to summarise such a comprehensive talk here are some key points:

  • Lack of progressive rendering makes sites feel slow
  • Learn how to load scripts in parallel without blocking
  • Load only scripts needed to render first, load other scripts last

Steve also pointed out that there are tools like our YSlow and Google's Page Speed to help you along the path of better performance. You can download his full presentation in PPT format from his web site.

One of the most popular talks at the conference was an aside, but Nicole Sullivan's CSS Wish List talk was hugely popular. Nicole discuss how a CSS expert organises her code, and what she'd like to see to make CSS even more awesome. You should definitely check it out. It's a must read for any front-end engineer.

Another theme with several talks was HTML 5. Since HTML 5 is in final call, it was a great time to recap. Remy Sharp did a thorough overview of the features of HTML 5 and how they might affect you. If you aren't familiar with the features of HTML 5 yet then this is fabulous overview.

Faruk Ates talked about how HTML5 and CSS3 aren't changing some of the implementation inconsistencies in browsers, but that's ok. He reminded us that feature detection is a much better approach than trying to correct every flaw in every browser and maintain that whole mess; Very sound advice.

You might also be interested in an amazing demo of WebGL from one of the infamous Brian LeRoux's colleagues at Nitobi. Cube Defense is a 3D tower defence game literally on the surface of a cube. You'll need the latest WebKit nightly (and to run the command defaults write com.apple.Safari WebKitWebGLEnabled -bool YES) or the latest Firefox nightly (but that's a bit slower). We really are living in the future.

The one final thing I want to mention is the awesome Common.js project. This is a wonderful idea to standardise many common components of JavaScript libraries, both client- and server-side. This goal of this project as presented by Kris Kowal is to make it possible to run the same JavaScript on the client and the server. Yes, we want progressive enhancement, no we don't want to write anything twice. As you can see with projects like Narwhal mentioned above, a lot of the server-side libraries are already supporting Common in full or in part. I think this is going to be very much a project to watch for the future.

You can also check out this great summary video of the conference on youtube:

The conference organisers filmed every session and the video will be online in a few weeks. So, please, don't hold your breath (but you should still be excited).

Tom Hughes-Croucher (@sh1mmer)
Huge JSConf fanboi
Yahoo! Developer Network

Thanks to janlehnardt on Flickr for the use of his photo.