Interview: Phil Tomson
8/Apr 2007
(This interview appeared before on 18th Aug. 2006 on the PuneRuby blog).
Today, we shall be talking to another Ruby Guru – Phil Tomson.
Satish Talim>> Hello Phil, and welcome to PuneRuby. Could you tell us something about yourself?
Phil Tomson>> I started out as a hardware engineer many years ago. I did board-level and ASIC design in the early 1990’s. Then in the mid-90’s I transitioned to EDA software development and pretty-much went to the software side of things. I still enjoy hardware-related explorations, such as experimenting with FPGAs. I created RHDL which is a hardware design language and simulator based on Ruby.
Currently I’m fortunate to work at a contract that allows me to do development on Linux. It’s mostly in C++, but we’re using Ruby to generate a large amount of our C++ code from XML. So Ruby is playing a very important role in the project, even if it’s not the starring role.
Other than work, I enjoy coral reef aquaria and I have a 12-gallon nano-reef in my living room with some live corals and some invertabrates (shrimp, crabs, snails). I also just finished up my Masters degree in ECE at Portland State University back in February. My thesis involved Particle Swarm Optimization and Ant Colony Optimization (I wrote most of the code for my experiments in Ruby, of course ).
Oh, and I’m not a web programmer. I’ve never used Rails – so Ruby is also good for non-web development as well.
Satish Talim>> Given the choices out there, why did you select Ruby?
Phil Tomson>> From about 1994 till late 2000 I was a huge Perl fan. I wrote lots of code in Perl during those years. I liked Perl a lot at that point. Then I started needed to do some object-oriented Perl and I realized that Perl just wasn’t designed for that – its OO support is quite ugly. Sometime in 2000 I thought I should learn Python. I went out and bought a “Learning Python” book and I sat down and loaded up Python on my PC. After being bitten by indentation-related bugs a few times in the first couple of hours, I decided that the whole indentation-as-syntax idea in Python just wasn’t going to work for me – I really didn’t want to spend a lot of time trying to figure out why invisible parts of my code were causing such problems. So after about three hours of Python, I decided that maybe I should learn to like object-oriented Perl (the “Learning Python” book still remains on my shelf gathering dust after all of these years).
Just about the time when I gave up finding some better alternative to Perl, I found an article about Ruby by Dave Thomas in Dr. Dobb’s Journal. That was in late 2000 (December, I believe). The thing that really got me to try Ruby was the mention of Drb, Ruby’s distributed object system – at the time I needed something like that at work and I wasn’t getting very far with Perl. So I bought a pickaxe book and started prototyping the system in Ruby and Drb. After about 3 days of Ruby programming I found that I felt as comfortable in Ruby as I had been in Perl (and that was after 6 years of Perl programming). After another couple of weeks I felt that I was more productive in Ruby than I ever had been in Perl. So basically, the last Perl code I wrote was sometime in early 2001 – since then Ruby has been my favorite language and looking at Perl code now makes my eyes hurt.
…another thing that attracted me to Ruby was the great community.
Satish Talim>> How did you learn Ruby and when?
Phil Tomson>> See the response to the last question.
Satish Talim>> Which features of Ruby do you like the most?
Phil Tomson>> Code blocks. They’re great for creating DSL’s like RHDL. That and the cohesiveness of the standard libraries.
Satish Talim>> Do you think Ruby has the potential to be a mainstream programming language?
Phil Tomson>> In some ways I think Ruby has already become a ‘mainstream programming language’ (whatever that means), especially compared to 2001 when I started using Ruby. Rails and Watir seem to be pretty popular in their respective domains.
Satish Talim>> What applications, utilities have you developed in Ruby and what platform are you running these applications on?
Phil Tomson>> Early on I wrote a test distribution framework I called TaskMaster. That was in 2001 just after I first learned Ruby. Please don’t look at that code as it’s very Perl-ish, and in fact I don’t think it even runs on Ruby 1.8.x. More recently I developed RHDL, which I mentioned earlier. I’m currently starting to work on a project I call Inline::HDL which involves hardware acceleration using FPGAs, (more details coming soon). I also developed QDL (Quantum Description Language) a DSL for describing quantum circuits for a class on Quantum Computing I took a couple of years ago. Also, I’ve been fortunate to be able to use Ruby in just about every job I’ve had since that fateful one in 2001. I primarily develop on Linux or OS X.
Satish Talim>> Anything else you would like to share with the PuneRuby members?
Phil Tomson>> It’s great to hear that you have so many members. I started the Portland Ruby group (PDX.rb ) back in 2002 and until about mid-2005 we generally only had 3 or 4 people show up to our meetings. Then came Rails and now we often have 20 and sometimes more.
Satish Talim>> Thanks Phil for sharing your views with the PuneRuby members.