Welcome to this week’s edition of Rails TakeFive, our weekly chat with prominent players around Ruby on Rails. This week, we’re happy to welcome Karmen Blake, noted Ruby on Rails developer, teacher, presenter, and software engineer for Salt Lake City-based GeneTree.
FiveRuns: Welcome Karmen, and thanks for taking the time to share your thoughts. Let’s get started by talking a little about test-driven development. Our own Adam Keys recently gave a talk at RailsConf titled Oh, the Fail I’ve Known. In the talk, Adam outlined a few different kinds of fail: learning failure (the knowledge was available but you didn’t have it), technological failure (you did have the right tool), problem failure (barking up the wrong tree), and so on. If you don’t mind, give us an example of the fail you’ve known?
Karmen Blake: I remember having my eyes opened to test-driven development. I started working with a guy who was big into TDD. I had not been exposed to it before. He showed me he was writing tests, and I thought that was cool for him but not for me (“I just want to crank code!”). Then I started breaking his tests without knowing it and he would come talk to me about why his tests are there and feel free to fix them or add my own. I would think “Why? Just whip out the code!”. His visits to my desk, with patient frustration, increased as the code base grew and his tests were breaking when I checked in code. I had a nickname for him, “test nazi”. I eventually “saw the light” and let him explain to me why his tests were there and the process he went through when writing the tests. At the end of my time on the project, even though I was not fully doing TDD, I learned a lot about it. It was that experience that caused me to research extensively on TDD/BDD and immerse myself into it fully. Now it is a part of my day-to-day coding. Thanks to the “test nazi”.
Over the last couple of projects I’ve worked on I have come to realize how much pair programming has prevented major “fails”. Having a continual code review will do wonders to your code. No cheating or shortcutting your code, no IM or blog-reading distractions, getting immediate help and receiving an alternative view on writing a piece of code are some great benefits of pair programming.
FiveRuns: Let’s talk a bit about Rails 2.1, which was recently released with the help of over 1400 contributors. What about the new release excites you the most – time zones? Gem dependencies? UTC migrations? Better caching? And as a follow-up, what are the most important things in your mind to get done for the next major release?
Karmen Blake: Named scopes are awesome and see a lot of potential coolness with them. Rails 2.2 will be coming with localization and thread safety. Beyond that, I am excited about things I’m seeing with database connection pooling.
FiveRuns: Spurred on by the recently announced Ruby Hero Awards, who is your own personal Ruby hero, and why?
Karmen Blake: Obie Fernandez would have to be my Ruby hero. The things he has been doing in recent years have been very exciting: Rails evangelist, wrote a great Rails book and started a killer software company. I’ve seen Obie speak at OSCON about DSLs in the enterprise. I enjoy his blog and watching videos from conferences. To me Obie is characterized as an initiator, innovator, opinionated, and on the cutting edge of Rails work. His accomplishments motivate me to be better at what I do.
FiveRuns: Bruce likes to talk about “backpacking” through other languages. What others have you dabbled in and/or are you learning right now? How have these travels impacted your work in Ruby? Your overall approach?
Karmen Blake: Other than my computer science schooling which gave me a rigorous foundation, I cut my web-development teeth on PHP, Java Enterprise Edition and Javascript. Developing in these technologies taught me a lot of how the web works and its quirks, too. Developing in Java solidified my understanding of OOP and common code patterns. Developing in JEE and PHP gave me exposure to programming for the web and interfacing with MySQL. I was able to apply those to Ruby right away. I also had to unlearn some Java idioms and patterns because in Ruby many of them are trivial. I am an avid reader of blogs and books. Currently I am reading Smalltalk: Best Practice Patterns by Kent Beck. I spent a small amount of time getting acquainted with Erlang. It looks appealing on many levels. My job has not had a need for it… yet. :)
FiveRuns: Obie Fernandez’s new startup Hashrocket, which has been blogged about extensively, is all about being ultra-productive in 3 days. What are your own tips around, to paraphrase Obie and 37Signals, getting real—on steroids?
Karmen Blake: Be passionate. Be a continual learner. Work on communication skills as much as technical skills. Be a team player. Encouragement goes farther than negativity. Actions speak louder than words. Be up for a challenge. When I was younger my dad and uncles would remind me that someone out there is always better than you (for me it was in sports). Not to be negative but to push me to be better. They would tell me that if I wanted to improve I would have to compete against better athletes. I apply that to my career as well. If I get an opportunity to rub elbows with smarter people I take advantage of it and soak up what I can like a sponge.
Karmen Blake is a Ruby on Rails developer and software engineer for GeneTree out of Salt Lake City, Utah, but working from Coeur d’Alene, Idaho. Blake previously taught Ruby and Rails at Spokane Community College in Washington State. Blake presented at the 2006 Course Technology annual conference on Rails back when many in academia had not even heard of Ruby or Rails before.
















Continued Discussion
1 response to this entry
I am a former student of Karmen Blake. I feel beyond lucky to have had him for an instructor. He has been my best and favorite instructor. He knows his stuff, and knows how to communicate with people. When he talks about what he talks about in this interview, I know I can trust what he says because I have already seen him live like he says he does.
One of my favorite memories of Karmen is once when he called me an animal when he saw how much I loved to code and how fast i’d turn assignments in. It’s a shame I later on let my family become higher priority than my love and passion for coding. I am swinging around now though. :D
on September 26, 2008 at 10:56 AM