On the Blag Softwares
About six months ago, around OSCon, I bought a bunch of books on Ruby on Rails, because–thought I–Ruby’s hip and all Object Oriented (none of that peskiness with ‘int’ or ‘char’), and Rails is cool, with its MVC and ORM and metaprogramming goodness. At least, it’s not quite the moving target that Java development is (do I learn Spring or not? has it been supplanted yet? What day of the week is it?). And I wanted to rewrite my blog, which used to be two Perl .cgi files and an HTML::Template template. So I figured I’d bone up on Ruby and whip up a replacement blog.
So I got Ruby for Rails, and Learning Ruby and read up. And then I set up the app scaffold I wanted. And then I sat there. Because the sad fact is that Rails really doesn’t make your life any easier. Learning Rails won’t make you wonder why you’ve been programming in Perl or Java or Python all these years. Sure, it makes the scaffolding for you. But chances are that you’ll rewrite it all anyway. So you’ve gained nothing. Sure, it does ORM for you. But chances are you already designed your schema. So you’ve gained nothing. And it has erb. Woooo. Welcome to Everything Else. And it’s slow. Painfully slow. Ow.
Some Things I Learned about Rails
- Rails is for RAD
Rails lets you quickly prototype your application, and build out only those features that are necessary for your demo. The problem is that once you consider real-world use, you’ll end up writing just as much code as you would with any other language. Yes you can useattr :foo, :bar, :baz. But did you remember to secure the setters? No? Joke’s on you! - Rails developers will never be happy
Ruby is slow. And if you run Rails on common platforms (apache/fcgi) you will hate life. Especially if you run a “stable” distribution and don’t know about fastthread. And the Rails community thinks that the answer is “Get a faster webserver” so they keep finding newer and weirder webservers (”nixbat is a pure state machine written in assembler that implements qxcgi in kernel space!”*). I think you’re fixing the wrong thing. Maybe you should help make Ruby better. Then fix the way you do ORM. Here’s a hint: when getting multiple results from the database for a single object type, why not get a recordset first, then objectify them in memory? Why make 20 queries? - PHP sucks. PHP forever!
I hate PHP, let me be clear. Part of my rant is that I like Ruby and Rails because I want to use a programming language with the features that Ruby has. It’s just that Rails provides no real advantage other than “feeling cooler”. And finally, there is simply so much more software in php that’s already done and works. Witness WordPress, which is not only many many times faster than Typo, but has a selection of plugins that makes me swoon. Specifically, the iPhone plugin that lets you manage your blog from your phone. That was the winner. That was when I gave up on Rails.
So I got WordPress. Sure it doesn’t make me feel as cool when I’m editing pages in vi. But at least I can add entries from my iPhone. And in the end, it’s not about the gears, is it. It’s about where your car goes.
*(I made that up)