Many voices were heard at the 2013 Golden Gate Ruby Conference proclaiming it to be the best ever. Time will tell, but what’s for sure is that it was an outstanding conference. It was both technical and social. Ruby has come of age; Rails saw its 4.0 release this year, after a seven-year journey from its 1.0 release. What can a conference add when many of the tricks have been found, when many of the tools have been built, when most of the adventures have been told? Well, GoGoRuCo 2013 had some good answers in store.
Sam Saffron and Jeff Atwood of Stackoverflow fame kicked off the conference with a deep technical presentation on the rack-mini-profiler and other tools such as Ruby 2.0’s DTrace probes. The details were relevant and recent. The upshot was an old one, going back to one of the fathers of computer science, Donald Knuth, that optimizations are premature unless you measure. And measuring the presenters did. My favorite visual were his flamegraphs. He went out with a strong call to action, to integrate rack_mini_profiler into your life from the get-go.
I got to catch up with Sam at the after party on Saturday (thanks Yammer!), and we discussed long polling client requests and how to handle many of them. I learned about a nifty gem he wrote, message_bus, which uses socket hijacking, a hot new feature in Rack 1.5. The big advantage is you can do this in the same web stack as the rest of your Rails app, without having to resort to 3rd party tools services for websockets or to spin up a separate Celluloid/EventMachine/node.js stack.
Many voices mentioned this talk as the gold standard of technical presentation of the conference. Those same voices lamented the dearth of deep technical subjects.
And while this may be true, this wasn’t your average run-of-the-mill tech conference. It’s GoGaRuCo, and Josh Susser and his team (thank you Leah and Jim!) can be trusted to not put on a run-of-the-mill event. In fact, what I love most about Josh’s conferences is how fearlessly authentic, flamboyant and quirky they are. They don’t fit anywhere else but San Francisco, but we are so very proud to have GoGaRuCo.
One of the more entertaining talks was Chris Hunt’s “Solving the Rubik’s Cube in 20 Seconds.” It sounded too fast to be true, but he really did. He even brought in a Rubik’s Cube Competition Timer for the occasion and gave us the full sales pitch. Aside from the entertainment factor, I found his presentation quite educational. There are sets of algorithms for solving a specific sub-problem, like rotating a given corner piece to the opposite color. The algorithms vary in complexity of the number of steps and in their power. The mastery of speed comes down to knowing lots of algorithms for many configurations of the cube and picking the best (fastest) ones. There is always more than one way to get to the solution. Just like with Ruby.
In one of the highlights of the conference, James Edward Gray II spoke candidly about the disease that confines him to the wheelchair, a form of Muscular Dystrophy, and how all the things that most humans take for granted, present a challenge for him, like eating or typing. He shared with us, in his deeply moving presentation, how he turned these challenges into an advantage. He taught us about the “economy of action” and how living with a very constrained daily budget of energy he’s become a better programmer: How less is often more, how he learned intimately about workflows and how to automate them, how upkeep matters soon and a lot. His message to us: Make the change easier to make than making the change.
At the end of this talk, he circled back to the social aspects of programming. He says he’s less interested in what individuals can accomplish on their own, but that: “Programming is about people. We are only interested in the work we can accomplish together.” A quote often retweeted.
Yehuda’s talk started off as a rant on a 2-year-old tweet by DHH about having MVC’s both on the server and the client is less than perfect. This may be so, but Yehuda’s talk sadly didn’t seem to progress much beyond the ranting stage. Surely, we learned about structured GUI programming and how the Cocoa framework was a big inspiration for Ember.js. Great.
But at the end I shared the sentiment of a conference attendee that I spoke to: Wouldn’t it have been great for Yehuda to share his passion of where he sees Ember going in the next two years? It seems the JS frameworks are continuing.
Anthony Zacharakis and John Wilkinson of Lumosity shared their view of how to decompose the dreaded Monorail app without quite going all the way to a distributed service-oriented architecture and all its overhead and testing challenges. The approach wasn’t novel, but the talk was a nice illustration of the power of Rails engines. Gem-ifying key components of the app is a good way to reduce tight coupling and encourage re-use. It’s easy to do, but not nearly as widely used as it perhaps should.
Sarah Mei capped the first day with a well researched talk, perhaps my favorite of the whole conference. She posited the provocative question why Ruby hasn’t won yet. As “Head of Propaganda” in her new consulting firm “Ministry of Velocity” she had a few opinions on why people choose the language they choose.
Starting with analyzing how her colleagues select a gem, she deconstructed the mechanisms behind technical choices made by teams and individuals. She boiled it down to four basic themes for any project: Activity (e.g. by commits on github, issues…), Interface (API, Readme, examples of use), Popularity (by mention on Stackoverflow, Hackernews, Google) and Familiarity (reading code directly)
She pointed out a surprising truth in this analysis: Three out of four factors are social, rather than technical. Moreover, when all other factors are equal, the key decision driver is familiarity. Does the code feel good? She explains familiarity in terms of pattern matching, and the better we’re trained, the better we can pattern match to what we already know. Malcolm Gladwell refers to this at the 10,000 hour threshold to true mastery. But does it really take this long, Sarah challenges? Or is it that some people are just “born” better -- like the myth of the 10x programmer coined by Joel Spolsky? She doesn’t believe that either. Yet, we’ve all seen colleagues who seem to leap ahead faster than everybody else. What’s their secret? Sarah believes that both Gladwell and Spolsky got some of it right, but 10,000 or an innate gift are just two ways to get there, they’re not the only ways. Her own experience in pairing with hundreds of programmers is echoed by scientific studies, that the folks who probe a little deeper when they encounter new things, who lift the covers here or there as part of their natural curiosity as they’re learning, who mix new information with what they know are the ones who progress faster than their peers. This is how the route to mastery can be hacked, and the best thing you can do for Ruby is to go learn something else and come back.
Social Factors II
A good number of attendees of GoGaRuCo were more recent entrants to our community, desiring to become better programmers and Rubyists. After Sarah laid the theoretical foundation the night before, Sunday morning kicked off with practical tips on how to do this. Ben Orenstein gave a wonderful presentation on “Frequently Asked Questions” that he gets as mentor at Thoughtbot’s Learn Service from people seeking to become better programmers.
Some of the suggestions: Pair with someone better than you; admit when you don’t understand something; keep friends in the community, because that’s where you’ll get your next job.
And one quote that buzzed through the Twittersphere: Treat your test code nicely, treat it better than production, because test code has no tests.
He also had some sound advice on money. If you think you’re underpaid, you are. When asking for more, all you have to do is pass the giggle test: If you can say a number and keep a straight face and have the other side not laugh out loud, then you’re inside the giggle range. But if they give you more than you asked, or even as much as you asked, you blew it. If it grates on you, you’re underpaid.
As this is such an important topic, I want to add two resources for the money negotiation piece: Gerald M. Weinberg’s “Secrets of Consulting” which is a wonderful book in a fun and easy-to-read tongue-in-cheek style. And the Kalzumeus post.
For conference attendees interested in trying Thoughbot’s Learn Service, they can use the GoGaRuCo discount code.
Nell Shamrell delivered a nice presentation about Regular Expressions in Ruby and how they’re implemented with finite state machines. It gave me ideas for future interview questions. I also learned about the “possessive quantifier” as in /No++/ which would not backtrack, different from /No+/ which is greedy but will backtrack in order to continue the match.
The future has arrived
The prize for most entertaining talk of Sunday went to Ron Evans and his team. In “Ruby on Robots” he showed the robotics interface Artoo. He explained that Artoo is to robotics what Rails is to web frameworks. The framework runs inside Sidekiq, using bleeding edge evented Ruby programming with Celluloid. He had some most impressive demos lined up for a receptive audience, like a version of the Game of Life with Demo Spheres, and my favorite, the Ardone. In one demo, the Ardone, a flying Ruby-powere drone, was rigged with OpenCV face recognition software and able to track a person’s face and hover at eye level in front of them. In another demo, the drone zipped through the lecture hall operated by a Wii controller. In his closing thoughts he recalled Isaac Asimov’s three laws of robots and called for the peaceful use of the technology.
Steve Klabnik’s talk “No Secrets Allowed” stood out of the afternoon sessions. His message to us was to use all the plethora of open source encryption already available but endeavor to make them more usable.
At the end of it all, there was a very grateful Jim and Josh Susser about how every talk is awesome, even though not all of them are about Ruby, but they're awesome because of the community that gets together here.
I couldn’t agree more. GoGaRuCo from its first year at the Swedish American Hall was never about just tech but about authenticity and community and technology, in a way that few people could curate and embody better than Josh himself. Thank you Josh!