Midwest.JS Weekend Report

midwestjs-logo-400It’s been a while since I’ve given you guys an update on what I’ve been up to (Left Foot Right M is still forthcoming) but in the meantime, I figured I’d post this weekend report on a programming conference I was at recently.

Back in August, I had the opportunity to travel out to Minneapolis, Minnesota for a programming conference called Midwest.js. I’m not going to lie, the conference’s incredible name was about 25% responsible for my decision on attending. But one of the other major draws was its price, at $300 for three days including a full day workshop, it was probably one of the cheapest (if not the cheapest) conference in North America, especially considering what you got out of it. Speaking to many of the other attendees, this was also one of the main reasons they were attending. Who wants to spend $2000 to learn languages from Apple in San Fran, when you can get a much better taste of the current wave of Javascript frameworks for a fraction of the price?

When I arrived in Minneapolis early Tuesday morning, I realized that I hadn’t actually printed out any maps for how to get to my Airbnb. Without access to Wi-fi or data (as I was roaming), I decided to just take the train into the city and wander around until I found my way. For the uninitiated, Minneapolis is widely known as part of the Twin Cities (the other being Saint Paul). It’s also home to the Mall of America which is the largest mall in the U.S. (you probably could have guessed that) which is also home to the magical land known as Nickelodeon Universe. I didn’t end up going to either, but that was only because I spent most of my time at the conference itself.

2008-0712-MPLS-panorama

When I finally did find my Airbnb (through some maneuvering with offline GPS), I sat down to figure out what my schedule for the next few days would be. Going into the conference, I was already pretty well versed in Meteor, and didn’t really have much interest in spending a lot of time with Angular (ever since they announced that the 2nd iteration would break all of the older projects and that there was no migration plan). Since I had really only dabbled in React.js, I decided that that would be my focus for the next few days.

CONFERENCE DAY 1: Workshop day with React.js

One of the better ideas to come out of a conference, that I found here, was that they had a central Github repo for all of the presentations and materials. So if you, dear reader, have already decided that you’re bored and simply can’t take any more of this, you could skip ahead to this link and essentially get everything I’m about to talk about. But that’s no fun, now is it?

Ok, so React.js. What is it? At first glance, you might think it’s one of the ten billion Javascript frameworks that has come out over the past few years, but in reality, it’s not really a framework at all. It’s a library that Facebook and Instagram developed that’s been described as the V in MVC applications (that is, Model View Controller). The central idea is that if you have a big application with a lot of data and changing components (i.e. Instagram), you really want to limit what on your page is getting refreshed when something is updated to the component(s) that were changed. When applied correctly, this makes React.js extremely fast and is one of the main reasons why it’s becoming more and more popular even though it only came out in 2013.

Disclaimer though: React.js has a fairly steep learning curve, at least for anyone who has spent a significant amount of time on the front-end of web applications. With React, you really aren’t doing a lot of the UI work in HTML files anymore. Rather, you’re writing all of the components in “jsx” files which are then compiled into HTML files.

The entire workshop consisted of creating a fully-built employee timesheet form in React (and by fully built, I mean with testing implemented, running Gulp tasks etc). Needless to say, I did not finish the workshop, along with many of my colleagues, but React was less of a mystery at the end of the day anyways. If you want to try out the workshop yourself, you can check out the Git Repo here.

DAY 2: Javascript free for all

I didn’t really have a grand plan going into the second day of the conference, mainly that I would continue to give Angular the cold shoulder and try to learn more about testing methodologies in general.

The main keynote for the day was given by Venkat Subramaniam who is already super popular on the Interwebs for delivering presentations that are more fun and not overly technical (though not lacking in the technical aspect so much that you wouldn’t get anything out of it). The talk was called “The Art of Simplicity” and was basically about how pointless it is to rewrite and over complicate code that works and reads fine on its own just for the sake of doing it. A lot of developers tend to take blocks of code and refactor them until they are basically incomprehensible to the human eye. Said developers call it efficiency, but everyone else calls it a subtle way of obtaining job insurance.

Other highlights from the day included a lecture on ECMA6 which is the latest version of Javascript that came out this year (a lot of people were talking about it at this conference). It’s pretty big news given that the last major update to Javascript was in 2009. I haven’t personally dug into too many of the new features yet (I’ve only started using arrows in place of functions) but if you’re curious, you can check out the complete feature list here. Another solid talk focused on Sails.js, which is essentially what Ruby on Rails is to Ruby but to Node.js. I’ve been following Sails’ development for a few years now, and though it’s not at 1.0 state yet, the community has been growing quite rapidly and it has amazing potential for full-blown production apps that use purely Node.js.

By the time the second day had ended, we were all ready for a drink (or two). Happy hour! This was the part of the conference where I went up and down the exhibitor booths and essentially refreshed 1/10th of my wardrobe with the sheer about of free conference t-shirts I picked up. The also raffled away a seemingly endless number of tablets but alas, I was unlucky.

DAY 3: Too much Javascript, need sleep

By the final day of the conference, my brain had very little room left for more Javascript, but I was determined to check out the remaining lectures. This day, I decided to focus primarily on test driven lectures and workshops as the only TTD experience I had was with RSpec (and even that was pretty limited). The highlight of the day was probably the lecture on React Native which is a framework for building native iOS or Android apps in Javascript. Yes, you read that correctly. No longer will you be forced to spend hours upon hours downloading and updating Xcode—finally, there is a way to bypass the whole enclosed Objective-C/Swift machine and write an app with the one true language. Take that Apple! Take that PhoneGap!

It is fitting though that React Native was talked about on the final day of the conference, as it did fit in with the whole philosophy (that was prevalent throughout the conference) that the world of web applications is leading towards a Javascript singularity. Though Javascript is extremely popular at the moment, and I’m sure ten new frameworks that end with “.js” have probably emerged since I began writing this article, I think it’s a bit of wishful thinking (or wishful wanting) to think that non-believers won’t put forward their own alternatives. Case in point, though it’s a fairly radical idea that may or may not gain much traction, there has already been some discussion of HTML6 potentially existing to allow single page apps without Javascript. Whatever the future holds for this language that was developed in ten days, I think it’s safe to say that Javascript isn’t going anywhere and more and more companies, particularly ones that have been slow to embrace new languages, are now being forced to see the light thanks to the prevalence of single-page methodologies.