Satish>> Welcome Paul and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your self?
Paul>> Sure, I’m a Web Developer from Baltimore, MD. I’ve been doing web development for over 10 years in a variety of languages and frameworks including Perl, PHP, Java and Ruby.
Satish>> How did you get involved with Ruby programming?
Paul>> I got started with Ruby programming the same way I suspect many other Ruby developers did, which is through Rails. At the time Rails hit the scene, I was pretty entrenched as a Java developer. My initial reaction to Rails was that it seemed to have a lot of good ideas in it, but I figured we could find a way to implement those idea in Java. The more I dug into Rails, the more I realized that it was the Ruby language that made the clear, powerful abstractions that make up Rails possible and that I could use Ruby to create useful abstractions in my own code as well.
Satish>> Could you name three features of Ruby that you like the most, as compared to other languages? Why?
- Blocks: The best thing about blocks is that when you first start using Ruby, Ruby’s block syntax gets you to start using anonymous functions and higher-order functions all over the place in your code without even realizing it.
- Everything is an object: This is makes some aspects of the language simple to understand in that everything follows a few simple rules. String, Integers, Regexs, and most importantly Classes, are all just objects, just data, that you can manipulate at runtime.
- Class definitions: These are just expressions that are evaluated at runtime, expressions that have access to the class that is being defined. This allows you to create methods that when called will generate other methods, such as has_many in Rails.
When you put these three features together, you have a metaprogramming environment that I would argue is as powerful as what Lisp macros give you, although I’m sure there are some hardcore Lisp programmers out there that would disagree with me.
Satish>> How was experience of taking part in the Ruby Programming Challenge For Newbies (RPCFN)?
Paul>> I’ve really enjoyed it. It’s a great exercise to come up with a solution to a problem and then be able to compare your solution to what other developers came up with. Most of the challenges so far have been just the right size, which is hard enough to make you think about it, but short enough to where you can work out an interesting solution without having to invest too much time in it.
Satish>> You are based in Baltimore, USA. How is the Ruby and Rails scenario there?
Paul>> Baltimore has a great Ruby and Rails community. Of course, RailsConf is coming to town, which we’re all excited about. Many of us that are part of the B’More on Rails group, are working on various initiatives to make sure everyone has a great time at RailsConf. The Baltimore Ruby on Rails group has a bunch of smart people that meet regularly at various events. We’re always trying to do everything we can to help new people become part of the community as well. There’s also a lot of overlap with the DC/Northern Virginia communities which are close by and very good as well.
Satish>> What are your future plans?
Paul>> I’m going to Disneyland!
Just kidding. There is so much stuff I want to learn more about, it’s hard to find time for all of it. I really like where Rails is going with Rails 3. As much as I love Ruby, I’m also interested in other languages as well, especially functional ones like OCaml, Erlang, Clojure, Scala and Haskell. I think asynchronous IO/evented frameworks like Node.js and EventMachine provide a better model for building network servers. Technologies like XMPP and the WebSocket API that’s part of HTML5 are also going to be key in the next generation of real-time, connected web and mobile applications.
Thank you Paul. In case you have any queries and/or questions, kindly post your questions here (as comments to this blog post) and Paul would be glad to answer.