
Peter Cooper is a 24 year-old developer and trainer who's at the forefront of the British Ruby and Ruby on Rails scene. He's also in the middle of writing Beginning Ruby for Apress, our foundation Ruby title, which will form the cornerstone of Apress' Ruby and Rails line that will hit the market later this year.
Peter's that rare example of a non-geeky developer and is both funny and intelligent in conversation. He's also a prolific blogger, both on his personal blog—www.petercooper.co.uk—and www.rubyinside.com.
I caught up with him today for a chat.
Tell us a little about yourself.
I'm Peter Cooper, author of the forthcoming Beginning Ruby, which will be published by Apress. When I'm not writing I'm usually busy working with my RSS reprocessing company, Feed Digest (www.feeddigest.com), or am out on the road giving Ruby and Rails training and consultation via BigBold, a company I own and run. Luckily a lot of the things I'm interested in tie in quite well with Ruby, so I get the chance to use it in most of my various 'jobs'.
Feed Digest is a fascinating project. What was the impetus behind it?
Well, it didn't begin life as something I intended to build into a company. Two years ago I just wanted to take my del.icio.us bookmarks and have them automatically appear at the top of my blog (with a small piece of JavaScript or a PHP include, say). So I created some basic code to do that by turning RSS into JavaScript/HTML. To cut a long story short, I leaked a small release of this and it exploded. Over the past two years it's become formalized, received funding, and become one of the world's biggest RSS processing services with over 20,000 users and 50,000 'digests' (blends of feeds).
What's it built on?
The front-end is built on Ruby on Rails but all of the back-end stuff, the actual feed parsers, proxies, and the main daemon, are all built on Perl. I truly believe in using the right tool for the job and while I now feel Ruby is perfect for, say, 90% of all jobs, when it comes to Unicode, character encoding and system level stuff, Perl becomes more practical (although Ruby is close to overtaking!).
So you're the webdev equivalent of a multi-instrumentalist? Perl, PHP, Ruby... You use all of them?
I've used PHP grudgingly a couple of times. It's a great environment but I find the language extremely verbose and inconsistent, having originally come from Perl. I like to study different languages (LISP being my current favorite, along with Steve Dekorte's experimental Io language) so I can extract different ways of thinking to bring into my main development environments, which are now just Ruby and Perl. Perl is losing a lot of favor with me as Ruby takes over, though, so who knows, it might be a 99% Ruby shop here soon!
I find that a lot of the Rails guys I'm working with on book projects are PHP converts. Do you find this?
It's natural. PHP has ruled the roost for a few years now and the number of developers is phenomenal. At least half of the developers I know in the community came via the PHP route. The hype around Rails and its ease-of-use for developing complete Web applications now is a little similar to that around PHP and developing simple 'one-page' Web tools. It seems like a natural progression, even if the languages are rather different.
Let's talk about training. Most Ruby/Rails guys I know are fighting off people approaching them with work, but you've taken a different route in that you provide training. What's the thinking behind that? What kind of clients do you have?
Training wasn't something I'd planned to provide or get involved with. It's an area I'd previously had little experience with. I saw the success of the 37signals workshops, however, and felt that there had to be a market for something similar in the UK. Initially I conceived a 'Build an entire Web application in 24 hours'-type workshop, and spoke briefly with Ryan and Gillian Carson of Carson Workshops about how to put such an event together. Their sage advice made me realize I was aiming a little too high so I posted on my blog that I was offering on-site Ruby and Rails training instead. Within two days I had my first training client and spent several days in London with them (a team of seven ColdFusion developers who are now total Rails converts!). It went superbly from that point onwards. My clients now range from single developers trying to get into the industry up to teams of about ten in, mostly, up-to-date, modern environments (although just one traditional 'blue-chip' company so far).
Did you come to Ruby via Rails or were you a Ruby fan prior to that?
As a Perl developer I was aware of the emergence of Ruby and Python reasonably early on (around, say, 2000) but only dabbled with Python. Unfortunately Python didn't resonate with me then and although I can see some of its beauty now, I still try to avoid using it. As with several other developers, Rails caught my eye but I immediately dismissed it as a buzzword-ridden pile of fancy tricks. I tried to implement something similar in Perl, feeling it'd be better to stick to my main language. Of course, as with many other developers who've tried the same. I was eventually defeated and won over by Ruby on Rails. Initially I tried hard to avoid getting my head into Ruby, but it was unavoidable. Over the last year in particular, however, I've become more interested in Ruby than Rails!
It seems that a lot of people initially wrote off Rails. Indeed, it might be that we've yet to reach the tipping point. Why do you think that happened?
The marketing of Rails has promoted a very consistent line of 37signals-type Web application development, but it's only after using Rails for a few months that you realize that the power it (and Ruby) provides means you can use it in many more situations. I've known a lot of coders who've written it off because they see the hype and think it's only useful for a certain subset of applications. That's true, but the subset is significantly larger than any newcomer to Rails will see.
Secondly, people are naturally hesitant about new development methodologies. They displace current systems that developers are comfortable with, and usually result in large periods of change and upset. It's like being told to start a fitness plan. You might be able to see the benefits up front, but it's not until you're hitting the treadmill three days a week and enjoying it that you'll be converted. Luckily, Rails provides one of the lowest entry barriers out there. it's too fun to not have a go!
I think one of the oddities about Rails is that it wants to own your mind, as well as your websites :) Do you find this?
It's true that a lot of previously disinterested programmers pick up Rails and immediately become evangelists who just can't shut up about it! The Rails culture and community encourages this and it's still reasonably easy to get your voice heard, so a lot of people are blogging about Ruby and Rails. I've certainly been swept up by this.
Is the agile development philosophy important to you?
As a (usually) lone developer, the agile development processes aren't of immediate useful, although the basics, such as testing, can be implemented in any environment. My first Rails training client, however, has adopted a complete agile process (SCRUM) with its seven developers and is reaping massive rewards. When I recently went back to do more training I was won over with their process, as every developer told me how much better it was developing that way. They all expressed great dread over having to create extensions and perform bug hunts on their old ColdFusion system, because they had no unit testing in that environment!
Let's talk about your blogging. You're a prolific blogger, on both your personal blog and your Ruby blog. My main question is: How do you find time?!
The simplest answer is that I work from home and have a very supportive partner! I've done the two-hour commute before and it was a killer. Luckily, as a Ruby developer, I'm coming across lots of great Ruby news, tutorials, and articles on a daily basis that I have to check out anyway, so adding in the process of filtering, summarizing, and blogging is only a minor step. I've just added a third string to my bow and joined up with Obie Fernandez to work on the Ruby channel at InfoQ.com, an enterprise software development news site.
You have a background in journalism, right?
I was told to go into journalism when I was at school but I've always had too many other interests. Nonetheless, I wrote for a few nascent technology Web sites in the late 90s during the dot-com boom, which were all bought out, and I ended up being Co-Editor of WebDeveloper.com for Internet.com, who were a massive influence in the industry at the time. After that I remained a freelance copywriter for a couple of years but now all of my writing efforts go into Beginning Ruby and my blogs. With all of the opportunities available nowadays, blogging can pay better than writing full-time.
Final question. Looking to the future, how far do you think Ruby and Rails can go? I think that, in some regards, people are only just waking up to the usefulness of Ruby, despite its age.
I agree, although I think it won't be until Ruby 2.0 that a lot of the promise is realized. Many developers still look down on Ruby's performance and its lack of true support for character encodings and Unicode. Both of these are becoming non-issues as we move towards 2.0 but until we get there, there are no definitive answers. As a dependent of Ruby, Rails will only continue to improve as Ruby moves on too. It's not hard to imagine a Rails application being almost as fast as even a rudimentary PHP application in a couple of years' time. Even now, some developers are finding Rails can outperform Symfony, a PHP5 equivalent of Rails. Ruby's flexibility and innate agility are what keep it a 'young' language, and if it can continue to maintain this flexibility, it's bound to see a long future.