(This interview appeared before on 30th Aug. 2006 on the PuneRuby blog).
Today’s talk with Ruby Guru, Charles Nutter would be of interest to all of you who have a Java background.
Satish Talim>> Hello Charles, and welcome to PuneRuby. Could you tell us something about yourself – your background; where you are based…?
Charles Nutter>> I’ve been programming computers since I was in grade school. Since 1996 I’ve been a fulltime Java developer, primarily working on web-based applications using Java EE technologies. My most recent job has me as application architect for a number of large Java EE applications, making technology decisions and setting project direction. However for the past year my true love has been JRuby, a Ruby implementation for the JVM. I have devoted much of my free time to making JRuby compatible with Ruby, so Java developers might be able to take advantage of the beauty and power of Ruby.
I am based in the Minneapolis area in the state of Minnesota in the United States.
You can learn HTML as a first step into web programming.
Satish Talim>> Given the choices out there, why did you select Ruby?
Charles Nutter>> I came to Ruby via a recommendation from a friend. Before I’d ever written a line of code, I found that RubyConf 2004 would be held within a few miles of my employer’s home office. I arranged to attend, and was amazed by the level of energy, the enthusiasm of the attendees, and especially the ingenuity and simplicity of the applications and libraries being presented. I began to believe I might have finally found a scripting/dynamic language I could really love. While at the conference, I wondered if there might be a Java implementation of Ruby. That led me to JRuby, and I’ve been a Rubyist and JRubyist ever since.
Satish Talim>> How did you learn Ruby and when?
Charles Nutter>> I’ve learned Ruby a bit differently than most folks; namely, from the inside out. In the process of helping to redesign and reengineer JRuby, I’ve had to learn the language, obviously, but I’ve also had to learn how JRuby and the stock Ruby interpreter work internally. That’s taught me more about the language than any other source, since I’ve had to develop a deeper understanding of features most books and documents only cover from a Ruby point of view. I’m hoping to take my knowledge of Ruby to organizations interested in advancing the language and advancing JRuby, so that the Java world I know and love can benefit from Ruby as well.
Satish Talim>> Which features of Ruby do you like the most?
Charles Nutter>> Closures are certainly the most visible and compelling feature of Ruby…so compelling that most other platforms and languages are compared to Ruby simply by how easily they can implement or present closures. I also like that the language is very terse but very readable, and that whitespace is not syntactically important. Though there are perlisms, most code I’ve had the pleasure to read is still very clear in its intent. I believe Ruby has been carefully evolved not to fulfill some higher vision of what a language ought to do, or to show off crazy language feature X, but to really help people get work done. As has been said many times before, Ruby makes simple problems easy and difficult problems possible. That’s exactly what we need in the Java world, since so many problems we solve again and again with too much code are really very simple at their core.
Satish Talim>> Do you think Ruby has the potential to be a mainstream programming language?
Charles Nutter>> Absolutely, and I think it’s already on its way. The mainstream press has started to realize that the Ruby Way is gathering a lot of momentum, and now major software companies are starting to investigate and fund research in the Ruby world. I believe that Ruby is the best scripting/dynamic language currently available, and I am not at all surprised that its popularity has exploded recently. I have introduced friends and family to Ruby and in every case they have told me “if only I had learned Ruby first, I might have [finished my degree|continued in school|understood programming...]“. It’s simply awe-inspiring how easily people can become productive with Ruby. It has the potential to change the world.
Satish Talim>> What applications, utilities have you developed in Ruby and what platform are you running these applications on?
Charles Nutter>> I have been working almost exclusively on JRuby, a Ruby implementation in Java originally written in 2001. During the two years I’ve been on the project, we’ve worked furiously to improve compatibility with Ruby 1.8, fixing bug after bug after bug and adding as many tests as possible. Over the past nine months, I’ve led efforts to get more complicated applications working like IRB, RubyGems, and Ruby on Rails, to the point that most pure Ruby applications now “just work” under JRuby. I’m very excited that I and other Java developers will now be able to use Ruby alongside our Java code and libraries, within our Java application servers, and in concert with our existing Java infrastructure. The potential for JRuby is enormous, and we’re only seeing the tip of the iceberg right now.
JRuby has taken most of my free time, but I have many other projects on which I plan to spend more time. I’d like to make Rake into a full-fledged replacement for Ant. I’d like to wire in JRuby’s extension mechanism to allow transparent installation of Gems that have native code components. I want to continue to help efforts to get Mongrel running under JRuby. I want to help build out the RubySpec Wiki, an effort to document in a tighter specification format the functioning of Ruby and its libraries. I want to build out tool support for Ruby in the NetBeans IDE. I want to help efforts to build code refactoring capabilities for Ruby. I want to help bring disparate test frameworks and libraries together into a comprehensive suite of RubyTests. I want to make as many existing Ruby apps run well under JRuby as possible. I want to bring the world of Ruby to the world of Java, and help both worlds gain maximum benefit from each other. They’re big goals, but I know they’re all possible…and I think they’re inevitable.
Satish Talim>> Anything else you would like to share with the PuneRuby members?
Charles Nutter>> Have a look at JRuby, especially if you have Java libraries, legacy Java code, or existing Java servers and infrastructure you’d like to Rubify. JRuby has become a viable Ruby interpreter in its own right, but it’s even more compelling as a way to write Java Platform-based applications in a simple, beautiful language. Think of Ruby on the JVM like Ruby under UNIX: Java and C are excellent, powerful languages for writing core components, libraries, and frameworks, and Ruby helps programmers tie the power of those components, libraries, and frameworks together into applications with a minimum of effort. JRuby is hosted on Codehaus, and we welcome code contributions and mailing list discussions from anyone interested. Stop by and let us help you decide if JRuby might be the Ruby for you.
Satish Talim>> Thanks Charles for sharing your views with the PuneRuby members.
You can keep in touch with Charles Nutter via his blog.