jsconf followup

I am consistently delayed in writing the things I want to write, so it should come as no surprise when I give my post-jsconf reflection over a month after the event itself. That said, I really wanted to get these thoughts down, so I have decided to opt for better late than never.

jsconf.us 2011 was held in the Portland Art Museum in Portland, OR. The venue itself was simply amazing. The food was probably the best I’ve had at a conference, and the after parties were a blast as well. My wife accompanied me to the conference thanks to the allure of Portland and the promise of a fully-sponsored significant-others track (thanks to Jupiter consulting), and she absolutely loved the whole thing. I’ve been trying to get her to understand what about the JavaScript community resonates with me so clearly (the unicorn and pirate allusions apparently were unconvincing), but I think she gets it now. JavaScript has a community that is as irreverent and fun-loving as it is technically excellent and engaged, and that is special and worth celebrating.

These are points that I fully understood going into the conference, but it was actually at the conference, at Andrew Dupont’s “Everything is permitted” talk, where I had my epiphany and the last piece fell into place explaining why I love JavaScipt.  I realized that community is somewhat of a language construct.

For context, when I graduated college I immediately jumped into .NET programing on a WinForms application. I’ve been working the same job and continue to work there to this day, though the work has shifted from installed applications towards web for me. As a developer on the Windows stack I have enjoyed an amazing IDE in Visual Studio where I can rename functions/variables throughout my application without batting an eye.  I have benefited from an amazing and passionate local .NET community in Indianapolis that has inspired, mentored, and pushed me in my development.  Still, in c#/vb, the code I wrote in my WinForms app was at worst making my little module worse so if I wrote bad code that was on me and on me alone.

JavaScript, on the other hand, is a dynamic language allowing extension of the building blocks of our code in a way that can completely change everyone’s code in your application in addition to your module.  Because of this flexibility and power, the community has stepped up to provide clear best practices and rules to guide developers towards a more successful experience.  This community involvement, though, is new to me.  In the statically-typed world, the compiler tells me I’m not allowed to rewrite String, that I must disambiguate if I’m importing classes with the same name, and if I’m using my own version of some system-provided classes, the linker will associate my module with my special classes and other modules with the system classes.

Normally, when you see that in the same post as “c#” and “js,” it’s in a rant, but I love it.  I think it’s beautiful that the flexibility of the language requires you to be mindful of those you will affect.  This is where Zakas’s famous “don’t touch what you don’t own” rule came into contention as Andrew argued we should frame the community mindset in terms of social polite and impolite actions instead of moral right and wrong actions.  These objects are shared and social norms have proven to be effective ways to manage shared property.

So there I sat, mind blown by this context switch when Mary Rose Cook got up to talk.  Her talk began as a deep dive into the world of a game developer and ended as a beautiful story about code as art.  Normally, when we engineers take on a project, we start by researching similar implementations and best practices, but she wanted to approach this personal project through a more intimate process of discovery.  She even likened it to lovers discovering how to make love- a metaphor I found remarkably beautiful.  From that point, she shared an anecdote where the interaction between her code and her life moved her to write a song.  She also shared how she solved a hard problem in her game while partaking in this particular drink she loves and how now that drink is forever tied to that piece of her code and vice versa.  It was a story of totally putting yourself into your work and discovering your work in yourself.  Ahh, it was just amazing and you should watch out for the video when it’s posted.

The next talk I deemed important enough to live tweet was Rebecca Murphey’s Modern JavaScript talk.  This talk was about the modern JavaScript community and how we need to proceed to ensure a brighter tomorrow.  I think the biggest aha moments for me was when she noted how there is more social reward for building something that is new than there is for improving what’s already there.  This was further emphasized by the fact that her previous point was about the need for community outreach to show everyone the way.  No one likes to write documentation, so there are many challenges facing the community.  It was interesting, also, to see rewardjs be announced not long after this talk.

The final talk that I really loved was Brendan Eich and Jeremy Ashkenas on js.next, coffeescript, and prototyping language features.  I’ve often thought that coffeescript was a language written so that Ruby people wouldn’t feel like they were writing JavaScript, but this talk helped me understand that’s not the intention at all (I do know a good deal of Rubyists who feel that way, but this is beside the point).  Coffeescript didn’t just take JavaScript and remove the {}s and ;s but actually created a powerful language that builds on the idioms of JavaScript.  Personally, I had never heard about expression assignment in coffeescript which is a really elegant extension of the “everything is an object” simplicity in js.  But the talk was even more interesting as it turned from “look what I did” to “look what we should do.”

JavaScript is a very flexible language, but growth has been stunted by a need to maintain syntax with older browsers.  Coffeescript found a very interesting way around the syntax problem by “transpiling” into JavaScript, but this gets really exciting when you realize that this means there is a path forward gaining new, more powerful syntax without limiting  the reach of your website.  In fact, it was immediately after this talk that Google announced their own transpiler traceur and explained its usage.  Couple this, Mozilla’s narcissus, and Ashkenas’s call to build your own JavaScript, and the potential for cowpath paving seems extraordinary.  I really enjoyed the comment that “JavaScript is too important to be left to the experts.”

And then the closing party came.  We were told we were supposed to try Voodoo doughnuts when we were in Portland, so I was amused to learn they were being featured at the party.  We had to get up before 5am the next morning to catch our flight, so we didn’t shut the party down.  Still, when Laura was walking around and asked Kathryn and myself to get the dancing going, we delivered, as we always do.  So that’s the quick wrapup.  There were many other interesting frameworks released, tools discussed, and people met as well.  It’s such a great conference, and I am so glad I was able to go this year.


About joeldart

I am a 29 year old software developer living in Indianapolis, IN.
This entry was posted in dev, javascript, jsconf and tagged , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s