Clojure, Software Design, Frameworks and more...

Powered by JavaScript

The first annual Powered by JavaScript conference, organized by Manning Books, took place in St Louis this past week. How did this inaugural event work for someone like me who really doesn’t JavaScript?

I’m fairly public about my dislike of JavaScript - and it’s an easy language to take pot shots at. Indeed, in the following two days of The Strange Loop conference, several speakers reminded us why JavaScript’s flaws have led to so much innovation in both the compile-to-JS (“altJS”) and the native JS framework space. Despite the (many) flaws, JS is ubiquitous and has evolved from a hastily constructed scripting engine to become the powerhouse of the modern web and with Node.js has moved into the server side development space and as a common part of a build chain that touches almost every web development shop, regardless of their core technology.

The conference opened with keynotes from Dan Shaw about Node.js and Tomomi Imura about the state of the mobile web. Tomomi’s keynote was particularly interesting, as she went through the evolution of mobile browsers in detail, looking at features and releases of Chrome, Firefox, Opera, Safari, and Internet Explorer, as well as some of the politics behind the modern “browser wars”. I always enjoy a keynote that teaches me something practical I can use as well as providing inspiration, and Tomomi scored on both.

Since this was the first year of the conference, I had signed up long before I knew how the schedule would pan out and as the number of speakers announced continued to grow, I was wondering how they would fit everyone into a one day event. The answer turned out to be three tracks of seven sessions each, which made for a lot of difficult choices. Here’s what I chose to attend:

Steven Luscher - Decomplexifying UI Code with React. Steven did a great job of explaining the motivations and concepts behind React.js. We’re just starting to use React.js at World Singles, for an internal application, albeit wrapped up in a ClojureScript framework and I haven’t had to suffer through the pain of large-scale JS development, so it was very interesting to hear why this approach helps - declarative and reactive.

Josh Powell - Unravelling the Knot: Client & Testable Client Side Code. One of the authors of “Single Page Web Applications”, Josh walked us through a relatively simple example that showed how data dependencies quickly build up and can lead to bugs and offered us a design pattern to address this: a central data store that is updated by all components and which shifts dependencies from a web of component-to-component to a hub'n'spoke architecture of component-to-data. For me it was a nice follow-on from Steven’s talk which also dealt with the complexity of dependencies.

Sarah Groff-Palermo - Art.js: Transfigure Data to Create 21st Century Art. Time for a complete shift of gears with a talk that covered emotion and whimsy and what can be grown out of fragmented data with a variety of JS tools and frameworks and some creativity. It was a very engaging talk and it inspires me to be more experimental with some of the visualization tools that I’d like to play with but have previously been intimidated by.

Brian Lonsdorf - Fact, Fiction, & Functional Programming. After lunch, Brian took us on a whirlwind tour of monads, functors, and point-free programming in JavaScript, using a web application written in a nearly pure functional style. I was impressed at how far this sort of thing has come in JS, with things like Project Ramda!

Mike Mikowksi - Dump Less and SASS: Dynamic CSS Manipulation with JavaScript. This was the real dud of the day. The other author of Single Page Web Applications, Mike was far more interested in telling us how clever he was and how lucky we were to have chosen his session (seriously dude?) than actually showing us anything useful. He made at least one sexist joke, and several other very dodgy comments, and came off as an arrogant jerk. I’d heard complaints about his arrogant, sexist behavior in the bar the previous night but was still intrigued by the topic - unfortunately it was a waste of time.

Trek Glowacki - Single Page Applications: The Web’s Horseless Carriage. After the break, the conference got back on track with a fascinating look at the evolution of web applications and how we talk about them, positing that “Single Page Web Application” is a term that indicates we don’t really have a handle on what this space is really about - and what it will become.

Marcus Kobler - React.js and the Importance of Isomorphic SPAs. For the last session of the day, I chose another React.js session and it was another good choice. Marcus dug into React.js in more detail than Steven so it was a good progression and I hadn’t heard about “Isomorphic JavaScript” before so that was yet another topic to Google and add pages to Pocket for later reading!

Manning made an excellent choice to close out the conference with a roundtable of JavaScript experts playing what turned out to be a hilarious version of The Newlywed Game which touched on the good and the bad in JavaScript.

In addition, Manning set up a comprehensive library of their books in the lobby of the conference and selected various tweets they liked throughout the day to award free books. I picked up “Java 8 in Action” for one of my tweets - and I’d signed up early enough to get “Single Page Web Applications” as well as a registration gift so I was very happy with that.