Ancient City Ruby 2013
St. Augustine, Florida, was packed with brilliant minds this past week, and I’m glad to have been a part of it. It’s a bit startling to think about all the information that was delivered and receiving during the two short days we met for Ancient City Ruby (ACR).
If you’re a Ruby developer you probably won’t be surprised that the talks fell pretty cleanly into three camps: your environment, testing and pairing.
Here’s a glimpse of what blew my mind:
- Russ Olsen gave us some great tips on cutting down the noise in our apps so that we can get down to the important stuff: programming.
- Nell Shamrell delivered a wonderful love story about test driven development in narrative form.
- Chris Hunt filled his time with a ton of ridiculously insightful
- Jim Weirich gave us the rundown of his
rspec-given, and how it can make our tests lean and mean.
- Eric Redmond taught all we’d ever need to know about distributed programming and communication.
- Jacob Burkhart gave us the rundown on background jobs.
- Paolo Perrotta told us things we’d never known about our (chicken) brains!
- Andy Lindeman represented us like a champ with some sick live coding of a mock library for
- Ben Orenstein showed us how to refactor like a TDD champ… and did it live.
- Sandi Metz boiled the massive subject of unit testing down into a brilliantly minimal set of rules (pic) that will make any programmer better.
- Avdi Grimm reminded us that pairing makes you and me better programmers. Do it well and do it often!
- Ben Smith humbled us with his insight into Ruby gem security and scared the crap out of some of us!
What’s arguably the most important part of our (virtual) development environment? The text editor, of course! If you came to ACR with any doubt of the current trend in our community, it should be settled. It’s a vim, vim world.
One of the coolest things I picked up for vim is use of its macros. Chris Hunt showed us how to create a macro capable of doing math to calculate people’s ages and sort lines accordingly. Check out his presentation if you’re interested in the details.
Another tool we can’t seem to get enough of is
tmux. Just about everyone had something to say about this slick little terminal multiplexer. I was also introduced to
wemux, a wrapper that is supposed to smooth out some of the issues you have when trying to share a tmux session with others. Additionally, I was reminded of
mosh, a “mobile shell” written by MIT that aims to let you work effectively in a remote shell over a highly latent network. Sweet.
If there’s anything we claim to be in the Ruby community, it’s testers. We can’t have a conversation about our craft without getting into testing, and this is a wonderful quality. The trick has always been doing it right, and that’s not an easy problem to solve.
Our very own Andy Lindeman stepped up to the plate ready to crush his opportunity as a first-time conference speaker. He delivered what was described as some of the absolute best live coding I’ve ever experienced. It was hard to believe he was actually typing, it was that smooth.
Jim Weirich told us about his
rspec-given library, which adds some elegant syntax to rspec for writting minimal specs. He asserts (ha) that the descriptive string following
it is duplication that should be easily read in the spec itself and showed us how
rspec-given addresses that problem.
After learning that, here’s how to spec them:
| Message | Query | Command | | ------------ | ------------- | ---------------------------------- | | Incoming | Assert Result | Assert direct, public side effects | | Sent to self | Ignore | | Outgoing | Ignore | Expect to send |
So simple, so elegant, so Sandi.
The last theme was pair programming. All of us do it. All of us like it. Avdi Grimm used his extensive experience to tell us why it’s essential. Pair programming is arguably one of the most effective ways to help a new developer level up to a seasoned status in as little time as possible. It requires great energy, but delivers big results.
Avdi reminded us to “put out the pairing welcome mat” with www.pairprogramwith.me and his pairing badge. He also mentioned the use of #pairwithme and #pairingwith Twitter hash tags to get the word out.
Honorable Mention: Security
Ben Smith brought some serious perspective to the table with his talk on gem security. He reminded us that despite the general trust and character in the Ruby community, gems are code executing on your computer. That means they shouldn’t be trusted implicitly.
He proved his point by showing us several inconspicuous gems that seemed to perform run-of-the-mill tasks with a little “extra.” He went on to demonstrate gems capable of inserting themselves into systems as log readers, source code revealers and private key stealers.
He wrapped up the show by humbling several of us (myself included) by revealing his social experiment
gem install ancient-city-ruby (don’t do it!). Long story short, the victims had their usernames emblazoned across the projection screen mid-talk (and now the Internet). Burn.
This is a one-track, regional conference to keep your eye on. The folks in attendence seemed to have a blast—I know I did. You definitely don’t want to miss out on this one next year!