Relevance Craftsman Swap Day 1

I’m honored, humbled and excited to represent 8th Light, Inc. on it’s most recent Craftsmanship Swap, with Relevance in Durham, North Carolina.

I’d first heard about Relevance through Stuart Halloway’s excellent book Programming Clojure, and their reputation precedes them in the Clojure community, as well as in the Ruby on Rails world.

Jason Rudolph had me come in a few minutes early this morning to give me a quick introduction to the company before their company-wide standup, where the whole company gathered and very efficiently went through the interesting goings-on of the day. The plan for now is for me to spend a couple days working in Ruby on Rails, and a couple on Clojure—I’m excited about both.

An office at Relevance, Inc. I paired up with Chris Redinger to work on a Rails project that’s just a few weeks old, but already doing some pretty cool stuff. There’s a pretty slick graphing library on the project called Highcharts, which even works on IE6!

We did some refactoring, which was a pleasure. Chris has a great eye (nose?) for code smells and writing excellent code, and I often felt like we were on the same wavelength as we made improvements.

We ran into a strange issue with the RSpec version we were on: models seem to be loaded twice during our spec runs, which gave us annoying errors about redefining constants when we were only defining them once.

It turned out the right place for the non ActiveRecord models was actually under lib/, and that cleared up our problem. Chris thought this may have already been fixed in the latest RSpec 2 beta, but unfortunately we can’t upgrade because newer versions are only compatible with Rails 3, which we’re not using on this project.

We also got some feature work done, of course. The code is a pleasure to work in—clean, plenty of tests, and several Thundercats references, which is perhaps most important of all.

In all seriousness, it was pretty easy to jump in and contribute, and that’s been due in large part to the high quality of the code. Bundler, by the way, seems awesome. I’ve heard mixed reviews, but my experience installing gems today was such a breeze that I’m definitely going to try to use it on my next Rails project.

I also sometimes forget how freeing it is to work on a project using Git. All of our greenfield projects use it, but I’ve gotten used to being on Subversion projects, where making a branch is a big production. Chris uses feature branches regularly, and they seem to work pretty well.

The environment at Relevance is really nice. It’s a big open space with lots of pairing stations, drinks and snacks, and even a keg of Aaron Bedra’s delicious home brewed Belgian style wheat beer on tap.

We had a great lunch of Thai food and very techy conversation—Node.js, Clojure, and EventMachine all got some playing time, and everyone agreed that Aquamacs was very pretty. Wait, maybe that last part went differently…

After work, Aaron, his fiancee, Stuart Sierra, Jared Pace and I grabbed some Mexican food after what was apparently a second failed attempt to eat at a place that serves something called a “Defibralator” (which is how they spell it on the menu).

Chris and I ended the day working on tracking down a data issue, which we hadn’t completely solved by the end of the day, but we narrowed the possible culprits down significantly. I’m sure it’ll be obvious to us in the morning. Looking forward to tomorrow’s adventures!

Colin Jones, Director of Software Services

Colin Jones is particularly interested in web security and functional programming, using languages like Clojure.