Brought to you by

“JSConf” + “NodeConf” === “Awesome”

Posted 7 years ago in Platform by Craig Walker
Posted by Craig Walker

Last week I had the privilege of attending not one but two amazing JavaScript conferences in Portland, Oregon. Started by Chris Williams 5 years ago, JSConf is now one of the highlight events for JavaScript developers, with a veritable who’s who of the JavaScript community attending (let alone speaking). (As an aside, that was one of the more amazing things about this conference – almost everyone attending could have spoken – it was at times both extremely intimidating and extremely inspirational to be amongst so much talent).

Since I spend a lot of time on Twitter (in amongst the many hours of working, of course) there was very little that was particularly new that I hadn’t heard of before but the depth and range of topics was great. It was also very interesting to see how JavaScript is being used at different companies.

One of the big topics at JSConf this year was around modules. Modules are self-contained, interchangeable pieces of code that can be used and reused across projects. As well as being a great way to promote reuse, the ability to modularize has been an issue with client-side performance geeks for a while now. In that context, the ability to package reusable code and deliver it in a fast (preferably asynchronous) way to the browser while also handling any dependency issues that may arise (i.e., modules depending on modules) is a big problem to solve. There are lots of patterns for modularization that were discussed (with Node implementing the CommonJS module system) but nothing has ever been formalized at the language level.

Which leads onto the next big topic – Brendan Eich (the father of JavaScript) talked about the work that’s being done on the next version(s) of the JavaScript language itself. This includes a module system that seems pretty reasonable, though I think there are still issues around how those modules work in the browser (in server-side JS, modules can be loaded synchronously so loading techniques are less important than in the browser). In general a lot of the proposed changes look very much inspired by Coffeescript (in fact Brendan was actually brought up on stage by Jeremy Askenas, the inventor of CoffeeScript, during his talk). CoffeeScript is a meta-langauge that compiles (or as it has been called: “transpiles”) to JavaScript. CoffeeScript is an interesting language – it abstracts away some of the painpoints of JavaScript and for some developers it’s a very clean way of writing JavaScript applications. But it’s not JavaScript – and to have these conventions morph into the standards feels slightly weird. Not that I dislike CoffeeScript – I don’t. But I would prefer it didn’t become the language, and I think trying to solve the problem of the word “function” being too long instead of fixing numbers is slightly misguided (I say that without any disrespect to the team behind since I know fixing numbers is actually a hard problem – but I had to say it). Also interesting are the changes to the language to get around the nested callbacks issue (which is particularly painful in Node) – it’s great that they’ve identified the complexity there and that they’re trying to lower the barrier to entry for new and inexperienced JS developers.

If you want to play with all the new language features then you can right now. Google released Traceur at JSConf, a transpiler for experimenting with features. This is similar to Mozilla’s own Narcissus. Both are written in Javascript, which means you can host the transpilers directly in your pages and play with on the fly.

After a rest day (well needed) was the very first NodeConf. I am going to be talking about Node at the WDCNZ so I won’t explain what Node is here, but trust me – it’s cool :)

Ryan Dahl, the creator of Node, delivered a great keynote. As someone that has created something with so much hype Ryan is a very humble and gracious presenter (and perhaps a little quirky) – his talk on creating the next version of Node to natively support Windows was absolutely fascinating and highlights how low level Node actually is. It actually bordered on captivating (in an extremely geeky kind of way). I totally appreciate all the efforts of the core contributors of Node to make the JS layer of Node completely platform independent – it’s truly amazing work.

The great thing about NodeConf was the fact it was one of the first conferences specifically on Node – a project that was only started in 2009. I’m pretty sure almost all the people developing Node in the world were in that room (apologies if you weren’t :)) – it’s a small but vibrant community.

In fact it was the community aspect of both conferences that was the biggest takeaway – the ecosystem and community built around JavaScript is so inspiring – everyone is really friendly and approachable – egos were left at the door and everyone was just happy to revel in the fact they were with like-minded people, geeking out on JavaScript.

It was a great week. Thanks again to Chris Williams and Mikeal Rogers for organizing JSConf and NodeConf and thanks to all the sponsors for the amazing parties. And a specical thanks goes out to Meno Abels and Malte Ubl, two crazy and unbelievably talented German developers who have managed to invent a solution for conference WiFi that runs on Node and actually works! I had fast, constant, perfect WiFi all the time and on every device – there aren’t many conferences (especially tech conferences) where you can say that, so kudos to them for coming up with a solution to what is actually a very hard problem. Maybe Owen could use them for WDCNZ?

Leave a reply

Your email address will not be published. Required fields are marked *