More on Rails

Lesson 1: Never post about a hot topic in haste.
Lesson 2: Never assume nobody reads this stuff.
Lesson 3: Never make passing statements about personal experience unless you have hard scientific, statistically significant chartsand graphs with circles and arrows on the back to prove it.
Lesson 4: I actually like that people read my post and were turned off; it was too "hype-y".

I posted a brief note earlier about my experience with Rails, and got several interesting responses.

Mike Spille, in a comment on Dion's blog, says:

Hey Dion, I have a bridge to sell ya :-) You gotta start reading with a more critical eye, man. He spent 5 months writing an app and then re-wrote 80% of it in a new language in 4 nights? That alone should get your radar jangling. Then he says it's fast, sometimes even faster than the old stuff - but he won't know for sure until he measures it. Huh? He hasn't done measurements but he can say one or the other is faster? Sorry Dion but the whole blog entry you're referring smells from one end to the other.

For Mike's benefit, you are right, my post was not rigorous enough in its numbers or definitions. So, here's a quick recount: I've been working part-time on an application for ~5 months, with a domain model that has been through three *major* revisions. So the total amount of time I spent writing code on the project was somewhat less than 5 months of full time work.

Regardless, being able to recreate 80% of it in 4 nights of work was thoroughly rewarding, but not particularly shocking given the readily understood 80/20 rule of software development. The first 80% is ALWAYS the easiest. Its the last 20% that kills, and it took longer to get that in.

As for whether or not I can say one is faster than the other without measurements, well, I'll be doing some benchmarks over the weekend, but c'mon, Mike, I have eyes and an internal clock that's *reasonably* accurate, and can tell the difference between a call that takes 1.5 seconds and one that takes .5. :)

Comments over at David's blog weren't quite as specific, but were also looking for numbers. Check back on Sunday, and I'll let you know. But for those who want something to chew on:

Original app:

  • MySQL
  • Java 1.4.2_05
  • Tomcat 5.0
  • Hibernate 2.1.2 (with extensive optimizations)
  • Spring 1.1
  • JSTL

New version:

  • MySQL
  • Rails 0.10.0
  • Ruby 1.8
  • Lighttpd w/ FastCGI

I'll let you know what the numbers look like after my weekend of air travel.