JSConf Day 1: The philosophy of JavaScript

I traveled to Amelia Island, FL the day before the first session started. I was supposed to arrive at Jacksonville at 6:45PM on Monday, but due to a delayed flight I missed my connection at Dulles and there weren't any other flights on United to JAX that evening. I managed to get transferred to a Delta flight that had a stop over in Atlanta, but I didn't get to the hotel until around 2AM (sans luggage) after being up since 4AM. Suffice to say, I didn't make it to the opening remarks the next morning. Also, suffice to say, I'm avoiding United for the foreseeable future.

Fortunately, I forgot all about my travel problems almost as soon as the talks began. The first day really seemed to focus on more philosophical aspects of JavaScript development. The focus was on questions of how we can make the world a better place as JavaScript developers, and how does our community relate to the world at large, rather than the usual technical questions of "how do you do x."

The first talk I attended was "APIs and Making Humankind Better at Programming" by Carter Rabasa (@CarterRabasa). What a fantastic talk! It really set the stage for the rest of the day. In his talk, Carter discussed the issues with STEM enrollment in the US and the gender gap in engineering. The classic assumption is that we need to focus on increasing enrollment of women and minorities in university STEM programs, and then taking steps to make sure everyone feels welcome in these programs. These are obviously worthwhile goals that should be pursued, but they are by no means the only (or primary) path we should follow. Carter posited that the JavaScript community is somewhat uniquely suited to increasing diversity in engineering because a) web dev is typically easier to learn than other programming stacks and b) the democratic and FOSS driven nature of our community lends itself to creating a welcoming environment. The key issue we face though is that web dev can get tricky at times, so the way to get around this is to design better APIs. jQuery has historically done a good job at this, and we should continue on projects like it. But we shouldn't just focus official public APIs on big projects; everything we do should be done with clean interfaces, and all code we write that is put on github, bitbucket, etc should be written as if a newcomer will read it, because in practice someone will. This is how we, as a community, can help fix these issues.

The second talk I attended was "JavaScript is Literature is JavaScript" by Angus Croll (@angustweets). Hi-freaking-larious! Angus wrote a bunch of implementations of the factorial and Fibonacci algorithms in the style of various literary figures. You can check out some of the code on GitHub. If you have an appreciation for both JavaScript and literature, it's worth a read. As funny as it was, I felt that there was this message hiding just below the surface. There are many ways to write JavaScript, and many people have opinions on what the "one true way" is, but, just like many of the famous authors Angus parodied, there is merit to them all. In fact, Angus gave another talk titled "The Politics of JavaScript" that discusses this issue directly. Side note: I have immense amounts of respect for Angus for giving this talk. He has a speech impediment that causes him to stammer, but he hasn't let that get in the way of sharing is rather brilliant ideas. Mad props to Angus.

Next up was Andrew Dupont (@andrewdupont) and his talk "Learning New Words" that drew parallels to the development of the English language vs. the French language and the upcoming ES6. Essentially, the English language has grown organically and has borrowed words from other languages on more than one occasion, much like how ES6 is borrowing features from other programming languages, but unlike how the French language has evolved. Contrary to naysayers hundreds of years ago, the English language is still going strong, and ES6 is still going to be JavaScript and will still be awesome (awesome-er?).

Another talk that was rather fascinating was by Ray Daly (@raydaly) titled "JavaScript Journalism." The web is changing how we interact with news, and new forms of journalism are being invented as we go. The web has the ability to tell a story that is unique to our medium, engaging audiences in ways that television and print simply cannot. The most well-known use was on the eve of the 2012 US presidential election, in which most of the major news sites has interactive pages up that showed how the votes were broken down across the country and were updated live as the votes were counted. It has been, and continues to be, an uphill battle for JavaScript Journalists though, as they are often not taken seriously by the more established forms of journalism, much the same way photography was not considered a "proper' form of journalism for a long time. The times they are a changin', though, and these new forms of journalism will only become more meaningful and pervasive.

One of my favorite talks from the day was by Raquel Vèlez (@rockbot), titled "AI.js: Robots with Brains!". In short, JavaScript + robots = win. She discussed how robotics are typically done in university labs by people that have, or are working on, a Ph.D. with massive amounts of funding. Robotic work is difficult work, but the traditional approaches and tools certainly aren't helping. Raquel is working on making robotics more accessible though, and is using JavaScript and node.js to do it. Traditionally robotics are done using C/C++ with custom drivers, etc, which requires the use of lots of threading and general know-how. Anyone who has done highly parallel C/C++ knows that this is difficult to do correctly. A much better approach, though, is to use JavaScript and node.js because it is very well suited to asynchronous programming and handling lots of events. Brilliant! It was like a light went on in my head; I had never thought of this before, but it's so obvious now! If only my undergrad college self knew about this when I was doing robotics labs instead of using C and even assembly...sigh.

I attended some other talks that day that were also good, but these were my favorites. JSConf did something really clever with their talks. They were all 30 minutes long, not an hour. This is what made it possible to attend so many talks in one day, and it worked exceptionally well! The talks felt more focused and to the point as well.

Monday night was the first social event of the conference: a giant cookout and miniature golf! I met a lot of great people and had a lot of good talks. Before I went to the party though, I had to go back to the airport to pick up my luggage which had arrived earlier that afternoon. The Omni hotel staff was amazing though! The bellhop manager personally drove me out to the airport and back (a 45 minute drive each direction) just to get my luggage. It's interesting, you know, how even though we come from different generations, backgrounds, and (possibly) different socioeconomic standings, I felt that there was a real kinship between us. We discussed all sorts of topics, ranging from education to politics to travel to fishing. In a way, it was nice to step completely outside of the world of engineering for a while and form a connection with someone else not based on work. At the end of the day, we're all just people. It was a nice bookend to a philosophical day and, in a way, one of the highlights of my trip.

In my next blog post, I'll talk about day 2, where much robot hackery transpired!