It’s been a long time since I posted here, for a number of reasons:
- Change of focus from Ruby programming to Linux capacity planning, especially in the realm of I/O subsystems. You’ll find more about that at http://linuxcapacityplanning.com.
- Research in social media, starting with the Portland, Oregon Twitter / tech/ eMarketing community and branching out into the R programming language, data visualization and some cutting edge text mining algorithms. You’ll find more about that at http://borasky-research.net and http://groups.google.com/group/pdx-visualization.
- Becoming a member of the recession. You can find out about that at http://www.linkedin.com/in/edborasky.
- Volunteering at Open Source Bridge. You can find out about that at http://opensourcebridge.org/
But Ruby and Rails didn’t fall totally off my radar screen after FOSCON 2008. I still write Ruby scripts, most recently to collect Twitter data. I go to the Portland Ruby Brigade meetings and probably know more Ruby and Rails developers in Portland than I do Linux developers. Two events occurred recently in the Ruby / Rails blogosphere that captured enough of my attention despite all of that to warrant a blog post.
So … scalability. A few weeks ago, Alex Payne, one of the engineers at Twitter, posted a blog entry on why Twitter was moving some of its functionality from Ruby / Rails to Scala. It can be found here, and some of his previous posts on related subjects can be found here and here. Essentially, the reasons for the move fall into two broad categories: scalability and maintainability of the large and growing code base that powers Twitter.
I can’t contribute to the maintainability debate in any meaningful way. The last time I was involved in maintenance of a large code base was when I was a FORTRAN programmer working on large scientific application codes. As an aside, though, you’d be surprised at how much of many of those codes implement domain-specific languages. But scalability is something I know a lot about.
So let’s talk first about language interpreter performance. Thanks to some really spectacular programming by Isaac Gouy of the Alioth Shootout, here’s a boxplot of benchmark times for GCC, Java, Scala, Java, Ruby 1.9, jRuby and Ruby 1.8.6 relative to the fastest times. The plot is log scaled and lower is better / faster.
Yes, Scala is a lot faster than Ruby, even jRuby, which runs on the same Java Virtual Machine as Scala does. We are talking an order of magnitude — two hemibels.
Now let’s talk about overall Rails performance and scalability. I’ve only done some basic profiling, which you can see described here. The real heavy lifting and expertise on scaling Rails applications can be found here. The net of it is that Rails is heavily constrained by the underlying Ruby interpreter speed.
Yes, you can tune a Rails application for responsiveness or throughput, and you can throw processors and memory at a tuned Rails application to meet service level objectives. But until the bottlenecks are alleviated in the Ruby interpreters, applications written in languages like Scala, Java and C are going to have a significant performance advantage.
Finally, let’s talk about the Ruby / Rails community response to Alex Payne. Alex and the other Twitter engineers did their homework. They measured performance. They tested. And they implemented what worked best for them.
But some Ruby / Rails bloggers chose to descend to name-calling and attacks at what was a business and engineering decision based on that testing. From my point of view, such behavior is unacceptable. Tony Arcieri and Obie Fernandez have made major contributions to Ruby and Rails, and I expected better of them.
Moving on to sexism, there are plenty of resources on the web and in social media about this issue. I’ll spare you the links. If you’re here, you’ve probably seen them. A lot has been written since the presentation at the Golden Gate Ruby Conference that triggered the current round of discussion.
I emphasize “current” because this isn’t the first time that the issue of sexism has come up in discussions about Rails. Again, a web search will find plenty of discussion from years gone by. The issue first entered my consciousness at the 2006 Ruby Conference in Denver, where I noticed that out of a couple hundred Ruby / Rails programmers in attendance, less than half a dozen were women.
So let me add my voice to the chorus of condemnation that is being directed at Matt Aimonetti. The behavior he displayed:
- Developing a sexist presentation for the Golden Gate Ruby Conference,
- Actually presenting it, and
- Defending his behavior and attacking critics of his behavior in public and in private
is unacceptable.