Hot on the heels of Reject.js was JSConf EU, a weekend conference about, well, JavaScript! It was my first time there so I was a little unsure what to expect, I was absolutely blown away by the venue, the organisation, the food, the drinks, the talks and most importantly the people. Thanks this time goes to Holger Blank, Malte Ubl, Jan Lehnardt and Tiffany Conroy.

Keynote

Brendan Eich (the creator of JavaScript) opened the conference with this Apple-inspired satirical advert for ES6.

He was closely followed by Jed Schmidt (I knew I hadn't seen the last of him!) and Mandy Lauderdale performing an incredible assortment of topical songs about JavaScript. Unfortunately the quality of this video isn't great, but you'll get the idea!

Mary Rose Cook - A Programming Language for Children

Mary introduced a programming language that she's aiming at children called Isla. During her talk she said something that has really stuck with me. Programming is about magic. The magic that happens once you've typed in your program and then you first see it run. Much the same as stacking dominoes and then knocking the first one over. Mary was right, I had forgotten that's why I love programming.

Sticking to the theme, she suggested that every programmer should at some point try writing a language (if you're using JavaScript PEG.js and multimethod.js might come in handy).

Michael Bebenita - Low Level JavaScript

This talk was turtles all the way down! The Google Mozilla guys have implemented a tool that allows a C-like language along with structs, pointers, malloc and free, to be built on top JavaScript TypedArrays. They suggested that it can be useful for performance critical sections of code e.g. for physics calculations etc..

Sam Dutton - WebRTC: Real-Time Communication Without Plugins

A frustratingly high-level look at WebRTC, which you can think of as a P2P version of WebSockets. I was hoping for a real deep-dive into some of the details but we were only shown the shiny demos. Don't get me wrong the technology itself is very cool, I think we'll be seeing a lot more of it as the browser support improves.

Lennart C. L. Kats - Effectively Building Language Tools

This talk was a bit of a sales pitch, encouraging developers to start writing plugins for the Cloud9 IDE platform.

That's me! Thanks to Martin Kleppe for the photo.

Florian Loitsch - JavaScript as a Compilation Target - Making it Fast

A look at how the DART team has approached optimising their JavaScript output. DART itself doesn't interest me too much but it was interesting to see how similar the DART optimisations are to the optimisations applied by the JavaScript JIT compiler. The take home from this talk, DART's not quite as bad as it used to be.

John Bender - Faster JavaScript with Category Theory

John gave us a crash course on category theory and how it could be applied to the jQuery internals to speed things up. I'd recommend checking out the Wield project page.

Garann Means - Improvisational JavaScript

Garann noticed that bloggers were applying Tina Fey's rules of improv to everything from the workplace to dieting and thought that JavaScript was missing out. Her talk was a very interesting take on how to design robust, easy-to-use library code and interfaces. I think the most relevant of the improv rules was "Say yes and...", i.e. expect that users will give you partial or broken input sometimes, so try your best to work with it instead of throwing it back in their faces. E.g. don't interrupt a sign-up flow with an error if someone chooses an existing username, use their user ID instead and allow them to change it at a later date.

Axel Rauschmayer - JavaScript Inheritance: Beyond the Basics

Axel did a deep dive into inheritance as it was in JavaScript in ES3, how some new features in ES5 can help tidy up your code and how the proposed class feature of ES6 could help even further. My pro-tip -

Functions have a prototype property
Objects have an internal prototype reference


Angus Croll - Break All the Rules

A great talk systematically arguing the case for each of JavaScript's "Bad Parts". It was another spot-on reminder not to take advice at face value, but to look deeper into the problem and try to fully understand it.

Margaret Leibovic - Firefox for Android

Margaret flew the flag for the recently revamped Firefox for Android. Most of the browser chrome has been thrown out and replaced with a native UI to speed things up. The talk inspired me to try it out again as my experiences with the old version were very disappointing. Something I was pleasantly surprised to see mentioned was that Mozilla are looking to copy the iOS add to homescreen functionality over to Android. UPDATE - It is actually implemented but very well hidden in the menus compared to the iOS approach.

Stuart Memo - JavaScript is the New Punk Rock

A fascinating well-delivered talk on how the new web audio API could shake up music production again. Interspersed with live musical demos, Stuart delivered one of my favourite talks.

James Halliday - Code Collage

A nice reminder of the unix do one thing and do it well approach as applied to Node modules from one of the biggest package contributors on NPM, substack. This was extreme live coding, executed brilliantly. I didn't meet one person who wasn't in awe of this talk.

Anders Heijlsberg/Luke Hoban - Introducing TypeScript

This was a talk I was surprised to see on the schedule but I'm very glad it was. I'd already given a quick summary of my thoughts before the conference so I was looking forward to the talk. However, the feeling of people I talked to prior to the presentation was unanimously negative. Microsoft certainly don't have the best history on the web and I think people were concerned that this was VBScript2.

The talk was great, it was really interesting to hear that Microsoft have been working on this project for 2 years, and to me it shows. If you haven't tried it out then I encourage you to checkout it's playground on the official site (start with the Walkthrough: JavaScript then Walkthrough: Types) and read through Nicholas C. Zakas's very balanced discussion of it's pros and cons.

On a side note, wildly extrapolating from some shreds of evidence, I think we might soon see a browser-based Visual Studio from Microsoft. The editor used in the playground is a custom component that Microsoft has authored, which seems a strange choice for such a simple demo, as there's plenty of very good open-source options. Digging a bit deeper into the code behind the editor, all of it is namespaced under "vs". Even if they did choose to write one just for the playground the internal architecture is vastly over engineered for something so trivial, e.g. using multiple web-workers in the background. Even just comparing the size of the codebase to CodeMirror, it comes out suspiciously large.

Francisco Jordano - OpenWebDevice: First Mobile Running Firefox OS

Francisco introduced Firefox OS, Mozilla's late (and as yet unfinished) entry into the smartphone operation system race. In essence they've made PhoneGap, but at the operating system level instead of the app level. It's an interesting concept, but it's one that's already been tried unsuccessfully by Palm, so I'm hedging my bets on this one.

Matthew Delaney/Jing Jin - The Web's Black Magic: As Viewed from Within WebKit

Matthew and Jing picked a bit of a strange storyline for their talk but the content was really interesting. In essence they picked three optimisation techniques that are often touted on the internet as being the solutions to various performance problems, then set about explaining the WebKit source code behind the problem and the solution.

The first was why you need to use setTimeout to trigger CSS transitions. This was a fairly basic explanation of the JavaScript event loop, but it was interesting to learn that a single execution cycle is called a runloop.

The second problem was mixing DOM writes and reads in a loop. The solution is obviously to bundle all your reads together and your writes together but I was surprised at how hard it can be to spot that you've fallen into this trap.

The final problem was the widely misunderstood just slap transformZ(0) on it. The talk covered the benefits of hardware compositing and how it can be abused. In summary use it wisely!

Angelina Fabbro - Inspector Web and the Mystery of the Shadow DOM

Angelina's talk on the shadow DOM was great, it's a very exciting topic which she devlivered with some steady-handed live coding. The shadow DOM is definitely the biggest thing yet to happen to the web and I'll be following it's progress closely.

Divya Manian - Web Components with <insert favourite bleeding edge CSS spec>

Divya took a deep dive into some of the topics Angelina introduced, showing how they can work together with other new CSS technologies e.g. regions, shaders(!) and more.

Emily Rose - Node.js & Black Box Prototyping

Thomas Kroeber - JavaScript on the Raspberry Pi

Sebastian Golasch - Prof. JavaScript and his Incredible Machines

There were then a number of hardware related talks, hardware I hear you ask, at a JavaScript conference?! Well yes, four talks in fact, mostly based around the Johnny-Five Node module.

Johnny-Five is a framework for controlling an Arduino board from your computer using the Firmata protocol. To be clear this isn't JavaScript running on the Arduino itself, but rather JavaScript running in Node controlling the Arduino via the serial port.

Emily Rose, Thomas Kroeber and Sebastian Golasch all showed off hardware projects to varying degrees of success. If you thought the software demo gods were bad, they've got nothing on the hardware demo gods! It was really interesting to see these projects, but as so few of the demos came off I think it would have been nice to see them condensed into a single talk.

Jason Huggins - Everyone Loves Robots

Those paying attention will have noticed that I said there were four hardware talks mentioned three. That's because Jason's hardware talk deserves special mention for a number of reasons.

Firstly his demo came off without a hitch, secondly he used a robot to play angry birds and thirdly, HE USED A ROBOT TO PLAY ANGRY BIRDS! Even better he had a legitimate reason for doing so. He's one of the co-creators of Selinium and was looking for a fun way to automate UI testing on an iPad, I think he found it!

I'd previously come across Jason's project on Hack-a-Day after he gave a talk earlier in the year at Pycon. The robot uses his miniaturisation of Grid-Beam called Bit-Beam for it's structural components, as soon as I saw Grid-Beam I was fascinated and had to try building some. I lost a four day bank-holiday weekend to that endeavor, so it was great to meet him and pass on the opinion of my significant other!

Andrew Miadowicz - What Does Chakra do with your JavaScript?

An interesting talk on how the IE10 (and therefore Windows 8 ) JavaScript engine works. JITs are like black magic to me so it was nice to get a crash course in how to write an efficient one. I can't begin to summarise the talk technically but I was impressed by the lengths they're going to when trying to achieve the best possible performance and security. With my limited knowledge, I think his top tip for writing a fast JIT was to optimistically assume the best and re-JIT if that proves not to be the case.

Markus Leutwyler - How to get rich (quick) with JS

Markus delivered quite a slow talk extolling the virtues of open-sourcing your product and making money from hosted services. I'm not sure I agree with him that you can't make money from developer tooling, Microsoft and JetBrains seem to be doing alright from it!

Mr.doob/AlteredQualia - What's Next for Three.js?

If you've not heard of Mr.doob I can only assume you're some kind of archivist looking over centuries old blog posts looking for the meaning of life (it's 42 by the way). Mr.doob is responsible for a good share of the crazy HTML5 experiments you'll have seen (this list is less than half). Together with AlteredQualia he is also responsible for the THREE.js JavaScript 3D graphics library which I've scratched the surface of previously.

They took turns talking us through the history of THREE.js. I hadn't previously realised that the leaps in functionality e.g. WebGL support, had come from working with various Google sponsored projects. It was really interesting stuff and as these screenshots show, the progress the web has made in the past two years really is astounding -

Click to view the latest version (requires WebGL support)

Paul Campbell/Eamon Leonard - Seacht

Paul and Eamon are the organisers of Funconf, if you've never heard of it before (I fell into this category) -

  1. Know that you've missed out on something very special.
  2. Read this write-up of Funconf II.
  3. Imagine that Funconf III introduced more DeLoreans, a private train, helicopters and horse and carts to the mix.

The gents treated us to a very honest informal chat introducing the conferences, telling us about what it meant to them and now that it's run it's course how it's encouraged them to go on and organise more community events. It was a very inspirational talk that has pushed me to make more of an effort engaging with local user groups and tech meetups.

Chris Williams - Disconnect

_

(space intentionally left blank)