MettaProgramming

Thoughts on Software and Technology

Ruby Can’t Scale!

6 comments

This weekend, during my wife’s birthday celebrations, I talked with someone about my recent programming exploits, including how much fun I’m having programming web applications in Ruby on Rails. The response:

“Sure, Ruby’s fun, but it’s not really useful. It’s a cute scripting language, but it can’t scale.”

Until recently, this was an opinion that I agreed with. Hell, it was actually something I told other people.

One day, I realized why I agreed with it.

Now it’s just an opinion that makes me want to smack someone.

Geeks are Dumb

I don’t really know where the whole “Ruby can’t scale” argument comes from, but I have my suspicions.

The main suspicion is that, as a general rule, programmers are geeks, and geeks spend a great deal of their childhood development getting beaten up by non-geeks.1 Thus, we child-geeks tended to focus our efforts on something we knew that we did better than the wrestlers and football players. That something was generally not wrestling or football. It was academics.

We geeks are smart.

Think about the football player who spends his entire school day like a stupid monkey, proving that he’s tougher and plays football better than the other stupid football playing monkeys.

Geeks aren’t stupid monkeys. Geeks have a brain.

And we use that brain to spend our entire school day like a stupid monkey, proving that we’re smarter and use our brain better than the other stupid brain-using monkeys.

Oop. There it is.

Truth Hurts

Oh stop being dramatic! You know it’s true! You’re just too busy being a stupid brain-using monkey to want to admit it!

You can’t name a single geek-dominated situation that wasn’t essentially a “I’ll take your obsure science fiction reference and raise you an obscure Dungeons and Dragons reference” chest-pounding war of the stupid monkey-brained geeks.

No, you can’t. Stop trying.

The point is, it’s all about being the übergeek. And the competition of übergeek is a constant struggle of

“No, I was the smartest person in my class! So if you say something smart, I have to say something smarter!”

And so when someone tells me that they are programming in some hot, trendy new language, I can’t say something like

“Oh, it’s great that you’re moving forward and trying something new… I’ve been feeling a bit old lately, kind of in a rut, and was somewhat scared to learn that shiny new language.”

Yeah, right.

Imagine a geek actually admitting weakness! HA!

No, when I hear someone say they’re programming in some hot, trendy new language, I say:

“But hot and trendy are stupid, like that hot girl who wouldn’t date me in high school. And your new language is stupid too! And I think I overheard someone say that it has a defect, and so even though I don’t know anything about your new language, I’m going to spout out this defect to prove that I’m better than you for not using it. There! I win!”

Fun fact: Geeks, as a general rule, are freakin’ terrified of anything that carries the descriptor “trendy,” because if we knew what that word meant, we wouldn’t be geeks, we’d be popular.

Datapoints

This may seem harsh, but stop being all “must not admit weakness”-y and use that monkey brain to actually think about it.

Here’s a nice datapoint: Twitter.

(I already hear you, by the way)

“But Twitter was down all the time! Because Ruby can’t scale! That’s why they moved to Scala!”

Was it? Was it really? Is that smart monkey brain actually working? Saying Twitter was down all the time is like saying that the United States Postal Service is not a good choice to carry mail because it’s inefficient and looses a lot of mail.

But, but, they lost a letter of mine once!

Yeah, sure. And they deliver on the order of a billion freakin letters every day! Did your super smart übergeek brain never actually grok percentages?

Do you have any idea what kind of traffic Twitter had when they moved to Scala? Saying Ruby can’t scale because Twitter had a freakin’ failwhale every once in a while is like saying that the space shuttle’s not a real spacecraft because it only goes into near space.

It goes into freakin space… and you don’t have jack shit that’s ever going to be any better.

Why are you even talking?

Coffee Shop Critics

The truth of the matter is that the people saying that Ruby can’t scale are not the developers from Twitter, or from 37 Signals, or from Github. They are not the developers from the companies that have built ridiculously freakin’ big web applications in Ruby.

No, they are the developers who are sitting in coffee shops– secure in the knowledge that if someone just knew how smart they were, they wouldn’t have to sit in that coffee shop and talk about their amazing idea. If someone only knew their greatness, they could be a contender!

It’s simple. The people who are busy having the “my language is better than your language” battle in coffee shops are pretty much guaranteed to not be the same people who are actually building large-scale applications. Why?

Because those people are too busy actually building large-scale applications to get into stupid chest-pounding arguments with monkey-brained nitwits.2

Look, none of us likes to admit weakness. Me worst of all. All I’m saying is that admitting weakness can make us stronger.

And saying something like “Ruby can’t scale–” especially when you’ve never programmed in Ruby and are just spouting stupid shit that you heard someone else say just so you can say something– is weak.

Unless you actually have something built– and that something is so freakin “oh my god we have more data than Twitter”-big that you actually know that it couldn’t be done in Ruby– then you’re full of shit, you know you’re full of shit, I know you’re full of shit, so you might as well just admit that you’re full of shit. Because if you don’t then you just look stupid.

And no true geek wants to look stupid.

Sometimes I think I may slap the next coffee shop critic that tells me Ruby can’t scale.

Me: “I’m learning Ruby”

Monkey: “But Ruby can’t scale”

Me: “Hrm. I guess you’re right. By the way, what do you use for Source Control”

Monkey: “Github.”

Me: <SMACK!>

See?

Duck typing with Duct Tape

I’m learning Ruby. I’m programming web applications in Ruby on Rails.

Moreso, I’m programming web applications that absolutely must scale.

“But why are you using Ruby? Ruby can’t sc–”<SMACK!>

Because let me tell you something: Having a “0.01% of users sometimes complain that it’s broken, can’t really scale because it worked for Twitter just fine” webapp is much better than having… oh, say nothing!

I’m not going to fool myself. Maybe Ruby can’t scale beyond a certain point. Who knows? I sure as hell don’t, because I’m not at that point. And the person telling me that Ruby can’t scale isn’t at that point either, I’ll bet.

We’re not at the point where we have 25 million users.

We’re not at the point where VC firms are dumping $15 million dollars in our laps.

We’re at the point where we are so busy talking that we’re not actually doing anything.

I’m in a freakin coffee shop, with a maybe good idea. And with a really fun language… one that’s powerful enough for Github and which scaled well enough to bring VC firms to Twitter after 25 million users came!

And with enough freakin’ bravery to at least want to admit weakness– that I don’t know what the hell I’m talking about when someone mentions the next trendy language that I’m too scared of, or too lazy to learn, or simply not really interested in.

I’m in a coffee shop, and I’m ready to use duck typing, or freakin’ duct tape if I have to, if that’s what it takes to actually stop spouting bullshit about scaling issues and actually accomplish something

…and get the hell out of this damn coffee shop!

  1. That was pretty much my childhood, anyway, so maybe I’m projecting a bit. []
  2. Oh stop being dramatic! I don’t have anything to show either. I’m in a coffee shop writing a freakin’ blog post instead of actually accomplishing something. []

Written by john

March 23rd, 2010 at 10:44 am

Posted in Ruby

Tagged with , ,