Ibuildings blog

Ten years ago JavaScript was considered a toy, then the XMLHttpRequest object was discovered, then came the JIT engines, making JavaScript fast, now with new specifications (ES5, ES6, ES7) coming out and more libraries than you can shake a stick at JavaScript is as big an envinronment as any server-side language.

At Ibuildings we believe it is important to master this language and it's ecosystem and one of the ways we do this is by sending developers to conferences. Off course if you're talking about JavaScript, there is one conference that rises above all others: Below is a review of JSConf.eu 2012 for those that want to get a feel for what the conference was like for our JavaScript specialist: Boy Baukema.

About JSConf

JSConf is a technical conferences centered around the JavaScript language, started in the US in 2009 and was 'ported' to the EU where it immediately became legen... wait for it ...dary by the introduction of Node.JS. Ever since it's been held in a different location every year (except this year) and has steadily grown in size and reputation, receiving rave reviews like: "JSConf.eu is the Best Conference Ever. Amen." - https://getamen.com/statements/jsconf-dot-eu-is-the-best-conference-ever "JSConf is raw. JSConf seems to be capturing the mindset of the community right now. Their food is better, their venue is better, their prices (I think) are better, their destinations are better, their speakers are better, their parties are better, their swag is better, and their community is better." - http://blog.noderiety.com/on-why-jsconf-rocks "It's awesome and gets better every year" - Developer I spoke to at the event Being a JavaScript Specialist and enthusiast and being peripherally involved with the organization of our own conferences, the Dutch Mobile Conference and the Dutch PHP Conference, I had to see what all the fuss was about. I was not disappointed.

Bacon and singing

JSConf starts off very good... with lots of bacon as a communal breakfast: When breakfast was over the event got started with a hilarious keynote of singing about debugging and cross compilation (and a lot of other topics) and Brendan Eich parody of iCommercials for the JavaScript ES6 class keyword.
The first talk of the day was meant to inspire: "A programming language for children" a discussion on building the 'Isla' language in JavaScript. Having recently become a father I can relate to wanting to introduce children and other non-programmers to programming and she discussed various considerations in designing a language around these special kind of developers. And while at the very end she freely admitted that the compiler was ported from Clojure to JavaScript for the sole purpose of giving a talk on it at JSConf.eu, it does go to show that JavaScript can be a good compilation target. One interesting library she talked about was Multimethod.js that adds Clojure style MultiMethods (see also C2 for a good explanation) to JavaScript. After this the conference was split up in 2 tracks, a 'Production' track (large hall that fits everyone) and a 'Bubble' Track that was held in an air dome bubble: I checked out the following talks (alternating between Production and Bubble):

A C like dialect for JavaScript for high performance, inspired by Emscripten a compiler that compiles LLVM bytecode (like those generated by a C++ program) to JavaScript, both projects are created / maintained by Mozilla engineers (and sponsored by Mozilla). Interesting to see and know it's out there, but as long as you're not writing performance critical graphics or other algorithms it probably won't be useful for general purpose business programming. He did mention two interesting projects:

WebRTC is all about making the web suitable for near real-time use-cases like voice calling, video chat and P2P file sharing with just the DOM and JavaScript. The speaker went very in depth, but in all honest I could not see myself building a VOIP server just yet. However it is good to know it's being worked on and it did introduce the 'getUserMedia' API, which lets you grant web apps access to your camera and microphone without a plug-in, with some nice demos.

Effectively Building Language Tools

The description was very broad but this was basically a Cloud9 IDE promo talk, but an entertaining one with some interesting tidbits like that Cloud9 has 300.000 lines of code and it uses the ACE code editor. Definitely taking a closer look at Cloud9 again sometime soon.

Client Side Internationalization

I must admit I had expected a lot of this talk, being a software developer in Europe means that products we help develop often have to support multiple languages. PHP has support for Locales and with Zend Frameworks Locale component you can go a long way (although Unicode support is still a big issue). JavaScript has some locale support but it's notoriously finicky (often using not the browser language but the OS language, which isn't really what you want when you're in a German cybercafe as a Dutch tourist). All in all, high hopes for a silver bullet. Unfortunately I wasn't the only one and by the time I got to the Bubble, where the track was, it was full and I had to go to the impromptu 'overflow' room, which had horrible acoustics, a small screen showing the speaker from a distance with his slides which were not visible (this was later fixed fortunately!). I did get that the speaker was the author of a Jed Toolkit (named after Jed Schmidt of Node.JS fame, go ahead watch his presentation on Fab.js, it will blow your mind). Jed Toolkit is a gettext port, but the author is also the author of messageformat.js, an ICU MessageFormat helper, apparently ICU is a better format then gettext? I found this interesting because it seems that in the PHP world nobody is quite sure what the 'One I18n Format' should be (Symfony seems to favor Xliff, Zend Framework 2 seems to have favored gettext), but I'd never seen the ICU format. Definitely something to look into next time and I'm very much looking forward to revisiting this talk when the video comes out.

Improvisational JavaScript

Which was all about error handling and took JQuery as a model for how to handle errors, she seemed to advocate the opposite of the Unix philosophy (Rule of Repair: When you must fail, fail noisily and as soon as possible.). At the time this seemed very wrong, although that may have been motivated by a Unixy background. Another presentation that I look forward to re-watching. Also the slides are already up at Speakerdeck.

JavaScript inheritance beyond the basics

This was definitely a good talk for those that were confused about inheritance in JavaScript, it featured a microframework called Proto.js but the authors blog with excerpts from his upcoming JSGuide book is very much worth a visit as well: 2ality - Technology, Life. Also I now know to pronounce __proto__ as 'dunder proto'.

Break all the rules

By Angus Croll, @angustweets

One thing I really love about JSConf is how inclusive they are, Angus (of Twitter Bootstrap fame) has a stutter, but nobody cared and his presentation about when to, selectively, use the 'bad parts' of JavaScript was very good. I still won't be using 'with' any time soon, but it's still good to push back against 'groupthink'.

Let your tool help you imagine

Kirill Safonov of JetBrains (maker of WebStorm and PHPStorm)

A WebStorm demo that showed off the live editting of HTML, CSS and JavaScript, open your editor on one monitor, your browser on the other and see your browser auto-update as soon as you make a change. While this was an awesome demo, it was geared more towards the visual (HTML/CSS) aspect, it does also update function definitions of JavaScript, but is not nearly as useful there because you need to trigger actions or have some state usually. Still when you're designing or building out wireframes in HTML this is a very powerful tool.

JavaScript is the new punk rock

I caught only the last bit of this presentation, but it used getUserMedia to capture the input from a guitar and perform effects on it. Certainly one of the coolest demos at JSConf.

Rendering Mona Lisa by Solving TSP

A while back we hosted a challenge with a traveling elephant which had about a dozen places spread out over the world. This presentation demonstrated a solution in JavaScript that worked with the 100.000 point Mona Lisa painting TSP Test Data file. He eloquently explained the "Is P equal to NP?" problem and the TSP problem and discussed the concept of TSPArt, I had hoped he would have gone into the algorithms a bit more. He ended with a call for participation for his personal project, Dear Sophie, to collect letters to his daughter from female role models in the technical fields, a very laudable goal.

Code Collage

Substack has contributed a lot to the Node.JS ecosystem, he showed off modules like code-art that shows your indentation like this: and shoe extolling the virtues of Streams which apparently is new in Node.JS? He also linked to some good advice on the callback hell problem.

Dinner and dancing... or sweet sweet sleep

JSConf is a full service conference, breakfast, lunch and dinner is included, free drinks , frozen yogurth and gourmet coffee whenever you want it. Even the parties were included and the day 1 party was actually hosted at the venue and featured a live band (same singers as the opening) and lots of beer... I'm told. In all honesty I have a 3 month old baby and the prospect of spending a quiet night at the hotel catching up some sleep was just too tempting!

Static typing, assembly and mad Russian VM hackers

Where day 1 was good, day 2 was awesome, deeply technical.

Introducing TypeScript

When I first heard of TypeScript I was a fan of optional typing and type inference. After this talk (again deeply technical) I am a fan of TypeScript. As soon as TypeScript support makes it in PHPStorm and they auto-generate JSDoc (please help by voting!) it will definitely be a big help.

Iframes: A look in to the black heart of the browsers

Ibuildings is no stranger to working with OpenSocial gadgets, which are basically glorified iframes, so many of the strange behaviors were not foreign, but it's still good to see someone mention X-Frame-Options and window.postMessage. This is definitely a presentation to watch before you have to run untrusted code in an iframe.

We do more and more mobile web development and it's not always easy (I'm looking at you Android). Kamen is an engineer from the KendoUI (commercial jQuery widgets) team and does an excellent job of laying out how to trigger hardware rendering and walks though some gotchas, his presentation is at: bundyo.github.com and is worth clicking through if only for the excellent example of impress.js a Prezi inspired CSS3 slideshow.

Inspector Web and the Mystery of the Shadow DOM

By @angelinamagnum

The new HTML5 elements like video and the date picker are nice and completely native looking, which is what you probably want on most devices but one... your laptop / desktop (seriously anyone still have a desktop?). Web Components seek to fix this and more, by allowing you to create custom elements that are 'secretly' their own documents. I had not heard of Web Components before JSConf, but it seems like a great solution for letting web developers finally declare their own elements. Angelina mentioned the official W3C Introduction to Web Components document as a good way to get started and she has "An ongoing project to catalog all of these sneaky, hidden, bleeding edge selectors" at GitHub. Web Components has me excited for the future and even for some use-cases today where you can use the (IE9+) polyfill at X-Tags

By Michael Starzinger of the Google Chrome V8 Team

This is definitely one to (re)watch, but the basic lesson is to remember that the engine tries to statically type your language and if you let it, it will be faster (at least in V8).

mo.js - explaining js vm in js

Vyacheslav is a compiler writer that worked on V8 and now works on Dart. His talk was very amusing and he dove deeper into 'what actually happens when you do...' than I've ever seen (showing generated assembly, doing crazy stuff like manipulating stack frames). Below is another talk of his so you get an idea of what he's like, highly entertaining, but as a JS guy not a compiler engineer, hardly practical.

A novel, efficient approach to JavaScript loading

Google Module Server was open sourced by Malte Ubl (who is crazy for both organizing and speaking) and the description is

Module server is a system for efficient serving of CommonJS modules to web browsers. The core feature is that it supports incremental loading of modules and their dependencies with exactly 1 HTTP request per incremental load.

It sounds really interesting but unfortunately I will have to (re)watch this as I was in the Bubble overflow room and didn't catch much.

A story of when assumption met a magic hat

Olov talked about JSShaper, which is an Open Source tool that acts as a pre-compiler for JavaScript, letting you do some crazy stuff... Want the + operator to be rewritten to always call an operation on it's operands? No problem! One of the supported 'plugins' to JSShaper he introduced was 'Restrict Mode', which works similarly to Strict Mode but restricts what you may do with operators (like throwing a runtime error when you try to subtract an object from a string or other nonsensical operations like that. I really like Restrict Mode and it's definitely something to check out if you want to catch typecasting errors early.

The circuit as a point-free general model of computation

While this talk, which features a lot of functional programming, seemed very interesting and had an interesting promise (no pun intended):

Inspired by category theory, point-free, and functional reactive programming, this talk will present some ideas on how to describe a program as a circuit, and why it could help to minimize complexity over the program’s development.

I'm still not convinced you are making it 'easier' by introducing these concepts. Certainly worth a viewing if you're interested in FP in JavaScript.

What does Chakra do with your JavaScript?

By Andrew Miadowicz

I always think Microsoft speakers are brave souls for getting up on stage and trying to spread the good word about Internet Explorer. Andrew dove deeply into the Chakra IE 9+ JavaScript (or as they call it JScript) engine and how it JIT compiles to native machine code. Lots of assembly in this talk and while it was cool to see the engine in action, I had hoped there would be more takeaways (like the V8 talk) for developers that are not out to write their own JIT interpreter but simply want their code to run efficiently on IE.

Why functional is the new black

This is a very good 'Functional Programming in JavaScript for beginners' talk, she covered map, filter and reduce, Currying and Monads and why it's important to understand these concepts. Another good talk she mentioned to 'grok' monads: Why is a Monad Like a Writing Desk.

Disconnect

Conclusion: The Good, the Bad and the Ugly

Good

You can really tell that JS also attracts amazing designers and people who care about high quality. The venue, lighting, catering was all top notch and the seating was maximized for social interaction (round tables in production room) or relaxation (bean bags in the bubble room). The WiFi was a special point of pride and apart from some start-up problems (and my S3 phone that kept losing it's connection?) it worked fast and flawless. But these things are tangentially related to what you're actually there for:

Content

People

Both were excellent, the content was deeply technical and very relevant and the people were friendly (if a little standoffish, but that's just in the nature of developers). One thing that JSConf did really right was to get so many female speakers and relatively more female attendees.

Bad

Innovation comes at a price, when you keep trying new things, you're going to fail sometimes. This bubble was fun but hardly practical, halfway through it suffered from an outage due to bad weather and it was far too small, and the overflow room wasn't really usable until the end of the conference. The main room had it's own challenges with a door that fell off it's hinges during breakfast, a power outage during dinner (short circuit in the lights?) and a food court that turned into a giant food line with lots of waiting. Strangely enough there was much less chatter on the social media about #jsconfeu than I was used to from DPC, and little to no 'feedback', maybe the JavaScript community isn't as vocal as the PHP community?

Ugly

The pricing is EUR 700+, combine this with flight and hotel and it's definitely not one of the cheapest conferences around, but if you're into the deep tech of JavaScript and can convince your employer, it's definitely worth it!

Transportation and lodging

If you're going to JSConf 2013, note that:

Berlin public transportation is very good

Android: Turn on Google+ Party Mode and have your photos automatically uploaded to the event