In this brief interview, Satish Talim of RubyLearning talks to Todd Huss of USA, winner of the third Ruby Programming Challenge For Newbies.
Satish>> Welcome Todd and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your self?
Todd>> Thanks Satish for the opportunity. I am 36 years old and for the past couple of years have been spending half the year living on our sailboat in Mexico (with my wife and daughter). During hurricane season in Mexico we haul the boat out and come back home to San Francisco, where we work as independent contractors. I keep a work related blog and my current contract is working as the interim CTO of Common Sense Media.
Satish>> How did you get involved with Ruby programming?
Todd>> My interest in Ruby started when I was the VP of Technology at Greatschools.net and we were looking to move from our homegrown Perl environment to an MVC platform with OR Mapping and a testing framework. This was in 2004 the early days for Rails, and while we ended up going with Java/Spring MVC/Hibernate, I was really impressed with both Ruby and Rails. As Rails matured and new projects came up I started using both Ruby and Rails whenever I could because I found that I really enjoyed coding in Ruby and was really productive in Rails.
Satish>> Could you name three features of Ruby that you like the most, as compared to other languages? Why?
Todd>> As a CTO-type my favorite feature of Ruby is less about the language and more about the community. It’s the way in which test (and more recently behavior) driven development are considered essential in the Ruby community. Having seen first hand how testing reduces bugs, forces us to write cleaner code, and in the end helps us ship features more quickly, is really exciting. No other language community (that I’m aware of) has embraced testing to the degree the Ruby community has. Second, I love how Ruby lets you write highly expressive DSL’s which helps express the intention of our code, making it far more maintainable when another developer needs to work with it. Lastly, Ruby really taught me the value of blocks and closures and it drives me crazy when I have to work in a language without that now.
While Ruby is hands-down my first choice of language, I do want to be balanced and say that when working with dynamic languages like Ruby, I find doing big refactorings more labor intensive. My opinion is totally subjective and unscientific but generally when working with statically typed languages I shoot for 70-80% test coverage whereas with dynamic languages I find you really need to be close to 100% test coverage to do a big refactoring with confidence. That said, IDE’s like Rubymine and Netbeans have come a long way in helping ease the pain of big refactorings and the productivity of Ruby far outweighs the additional effort of refactoring.
Satish>> How was experience of taking part in the Ruby Programming Challenge For Newbies (RPCFN)?
Todd>> Thanks so much for hosting the Ruby Challenge! I’ve participated in all 3 so far and really enjoyed focusing not only on solving a problem, but figuring out how to solve it elegantly. With each challenge I’ve learned something new and exciting about the language. This time around I learned about Ruby’s support for infinity which was great because it allowed me to compare paths without having to use nil (and therefore extra nil? checks) for dead-end paths.
Satish>> What are your future plans?
Todd>> We’re planning to go back to our boat in Mexico and then sailing her to Hawaii, Alaska, and then back home to San Francisco in 2010. Our daughter is getting close to high-school age so we’ll be settling back down and I’ll be looking for a full-time job again. I’m also thinking of coming up with a new language and web framework, because my daughter already has a name for it- “Emeralds on Tightropes”.
Thank you Todd. In case you have any queries and/or questions, kindly post your questions here (as comments to this blog post) and Todd would be glad to answer.