The musings of a nerd

Ancient City Ruby 2013

— Apr 09, 2013

Originally posted on the Big Nerd Ranch Blog.

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:

Development Environment

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.

Sandi Metz attacked unit testing and broke it down into some simple rules. We should worry about testing methods, and those can be categorized into two camps:

  1. Query

  2. Command

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!

© Jay Hayes