If you’re obsessive about dynamic languages and Web frameworks (and who isn’t?) it’s been a juicy few days. Let’s start with a bunch of pointers: Mike Pence interviews Avi Bryant & tries to start a fight. Avi says “huh?”. DHH too, in his own space and an InfoQ interview. At the same time, a Twitter developer disses Rails. DHH says smart things and so do Kellan of LaughingMeme and Ryan Tomayko. Phew. Now it’s my turn.

First, I was in that original Mike Pence interview (via IRC in #jruby) and he left out what I thought was the most important thing I said: Right now, Ruby and Rails, out of the box with not much tinkering, are plenty fast enough for lots of applications. I mean, really a lot of applications.

Second, as an investor in Avi’s company, there’s a chunk of my own money that says I’m OK with Seaside. When I first saw it, I wrote a piece that asked, more or less “WTF!? Can you abstract the Web away?” and I’d like to draw your attention to Sam Ruby’s reply: “Pssst: don’t tell anyone, but this is only true for small values of ‘the web’.” And DabbleDB is the nicest small piece of the Web I’ve ever seen; replicated enough times, in aggregate it won’t be small. For great big honkin’ Internet-facing apps that want to be platforms too, I’d probably push back on what Avi’s said about the unimportance of clean URIs but, you know what? I suspect in that context we might agree.

Third, I had an off-the-record conversation recently and learned a whole bunch of things about the Twitter/Rails situation. Holy shit, that’s a scary load they’re trying to stand up under and there are some hurtin’ engineers.

But the thought I came away with was this: In the big picture, Twitter did exactly the right thing. They had a good idea and they buckled down and focused on delivering something as cool as possible as fast as possible, and it’s really hard, in early 2007, to beat Rails for that. When all of a sudden there were a few tens of thousands of people using it, then they went to work on the scaling.

Oh, “Respect”. There’s a lot of it going around, with correspondingly little religion. And while I think InfoQ is by and large doing good stuff; guys, it’s a new millennium, we’re trying to re-invent journalism and maybe we can learn to get past “if it bleeds, it leads”?



Contributions

Comment feed for ongoing:Comments feed

From: Don Park (Apr 14 2007, at 02:55)

"They had a good idea and they buckled down and focused on delivering something as cool as possible as fast as possible, and it’s really hard, in early 2007, to beat Rails for that."

Rails is great for prototyping a webapp but *sheesh* I don't think there is anything about Twitter that required Rails nor Ruby. IMHO, Ev was foolish to not rewrite the *critical path* in Java. If Ev had asked, that's the advice I would have given him and it wouldn't have taken an average Java engineer very long either. Instead, they chose to be a pure Ruby/Rails shop when there was no need to and am now fussing over a feature Ruby lacks for the moment when the problem was obvious from the start.

[link]

From: Blaine Cook (Apr 14 2007, at 10:22)

Thanks for the kind comments, Tim!

I'll be giving a talk on Scaling Twitter next weekend at the SDForum Ruby Conference; if you're around, it'd be fun to chat. More details here: http://romeda.org/blog/2007/04/scaling-twitter-talk.html

[link]

From: Matt Chaput (Apr 14 2007, at 12:43)

"Developer disses Rails?" That's hardly how I'd characterize what he said. He said that for something the size of Twitter, Ruby/Rails is slow, and replicating/caching isn't as much fun as writing a Rails application in the first place. That's it.

DHH's response came off as pissy and defensive to me ("I guess it's too much work for him..."), like most of the things he writes (but usually to actual critics, not to a guy who spent his post talking about how great Rails is).

[link]

From: Alex Payne (Apr 14 2007, at 15:26)

My colleague Blaine already commented above, but thanks again for your thoughts, Tim.

Thanks too to the commenter above. I wasn't trying to diss Rails, just tell it like it is. I'm glad that got through to some (most?) of the developers out there.

[link]

From: Avi Bryant (Apr 14 2007, at 16:55)

"For great big honkin’ Internet-facing apps that want to be platforms too, I’d probably push back on what Avi’s said about the unimportance of clean URIs but, you know what? I suspect in that context we might agree."

Yep, I suspect we would.

[link]

From: Mark Haniford (Apr 14 2007, at 21:36)

"And while I think InfoQ is by and large doing good stuff; guys, it’s a new millennium, we’re trying to re-invent journalism and maybe we can learn to get past “if it bleeds, it leads”?"

Oh please. Developers posting to the web tend to be drama queens anyway, and that's not even counting open source zealots.

[link]

From: Brent Rockwood (Apr 15 2007, at 00:18)

There has been this ongoing discussion about the value of state in web apps. I just don't think about it that way. Of course there is always state. The difference, as I see it, is where you choose to keep it. Lots of the frameworks out there (WebObjects, ASP.Net, Seaside (apparently)) try to abstract it away and pretend that you have state between requests on the server.

I don't have a huge problem with that, per se. However, the huge advantage of keeping all the state on the client is it allows you to scale out with relative impunity (back end data-stores notwithstanding). If your framework adds host-affinity or introduces significant contention in keeping track of that state, you've suffered a huge loss. No amount of performance in your VM can compare to the simplicity of throwing more threads at the problem.

[link]

From: Gordon Weakliem (Apr 16 2007, at 08:37)

I completely disagree with Don - any web app that relies on a database and provides zero buffering between HTTP and the DB will hit a wall. I've not done Java since the turn of the century, but I've worked on very high volume .NET applications (I believe the performance characteristics are similar). You can't have a "shared nothing" architecture if every piece of your app is sharing a single DB.

DHH's post did come off as kind of petty (I find the phrase "blame game" is highly ironic in American English and should only be used with tongue firmly in cheek), but he nailed the core issue - optimization is the process of moving the bottlenecks around. It's incredibly frustrating to come up with a brilliant optimization that in the end achieves nothing because you've broken down one dam in the river, only to find a logjam a bit further downstream. Compared to the joy of getting functioning code written quickly, optimization sucks.

[link]

From: Mike Pence (Apr 16 2007, at 18:09)

Sigh. For the record:

Whether I was trying to start a fight or not is, obviously, subjective. I was trying to start a discussion on the relative merits of different approaches to web development, including using JRuby, not a WWE grudge match. Most people seemed to find it well-informed and provocative, not gratuitously conflict-oriented (like the InfoQ article).

What Avi was saying "huh?" to was the InfoQ article, not the interview. The interview, he said, was "beautifully written." :)

Finally, I was not asking Mr. Bray about the performance of Rails for this piece. I was asking him about JRuby, so, natch, his comments about Rails performance were not included. I did not comment on Rails performance in the article.

[link]

author · Dad · software · colophon · rights
picture of the day
April 13, 2007
· Technology (77 fragments)
· · Dynamic Languages (45 more)
· · Web (385 more)

By .

I am an employee
of Amazon.com, but
the opinions expressed here
are my own, and no other party
necessarily agrees with them.

A full disclosure of my
professional interests is
on the author page.