Rails Is A Ghetto

Updated with Part Two on Wed Jan 2 22:27:37 EST 2008: More rant, more honesty, and a shout-out to the heroes. Sections that look like this are new so you don’t have to read the whole thing again.

I’ve more or less kept my mouth shut about some of the dumb and plain evil stuff that goes on in the Rails community. As things would happen though I’d take notes, collect logs, and started writing this little essay. As soon as I was stable and didn’t need Ruby on Rails to survive I told myself I’d revamp my blog and expose these fucks.

This is that rant. It is part of my grand exit strategy from the Ruby and Rails community. I don’t want to be a “Ruby guy” anymore, and will probably start getting into more Python, Factor, and Lua in the coming months. I’ve got about three or four more projects in the works that will use all of those and not much Ruby planned.

This rant is full of stories about companies and people who’ve either pissed in my cheerios somehow or screwed over friends. I can back all of them up from emails, IRC chat logs, or with witnesses. Nothing in here is a lie unless it’s really obviously a lie through exaggeration, and there’s a lot of my opinion as well.

The best part about ripping on these guys though is this:

If they have a blog, speak at conferences, publish papers, 
or write books then they are public figures just like me.

This means that thanks to Larry Flynt and others I can stab them in the ear verbally, insult them, question their sexual orientation, and say anything that’s true and they just have to take it. Their only recourse is to write their pathetic little rebuttals in their stupid little blogs.

I’ll add one more thing to the people reading this: I mean business when I say I’ll take anyone on who wants to fight me. You think you can take me, I’ll pay to rent a boxing ring and beat your fucking ass legally. Remember that I’ve studied enough martial arts to be deadly even though I’m old, and I don’t give a fuck if I kick your mother fucking ass or you kick mine. You don’t like what I’ve said, then write something in reply but fuck you if you think you’re gonna talk to me like you can hurt me.

I’ll never be afraid of some pilsner fresh fat fuck who eats donut hamburgers and only gets exercise when he plays World of Warcraft on a DDR pad.

Personal Responsibility

When people first read this rant they mistakenly assumed I was whining about not having a job and blaming that on Rails. I’m not whining, I’m not sick, or crazy, just pissed off and I can write about it so fuck you very much.

Being unemployed while others make money on your work can hurt anyone. Having those same people benefit while they insult you, tell you you’re full of shit, and deny things you find true is even worse.

However, everything that ever happened to me is entirely my own stupid dumbass fault. I wrote Mongrel, I made stupid decisions, I left jobs that paid the bills for “bigger things”, I moved all over the damn world, and a whole string of dumb ass stupid decisions.

Not everyone can be smart all the time.

I believe that in order for anyone to create meaningful change in their life they must take personal responsibility for their own actions and start with themselves. This is difficult at times since it’s human nature to not want to look at yourself and say, “Damn I suck.” That’s usually the first step though.

In the name of fairness, I’ll admit right now that no matter what people tell you, I am not a great guy, not nearly as smart as people think I am, and my only claim to fame is this blog and a tiny little web server used by only a few people compared to others. I’m horrible at business even though I have an education in it. I still have personal communication issues, and I deal with a temper every day.

Now, that’s also my advice to the entire Ruby on Rails community. Take a good hard nasty honest look at yourselves. Do you feel proud of what’s going on? I don’t. I feel like a dirty whore trying to get straight after a 10 year stint in a Tijuana donkey show. I’ve taken stock of who I am and I accept what I’ve done as entirely my own fault. Time for you assholes, cheats, con-artists, and liars to do the same damn thing.

Yet, compared to some of the fucks in the Rails community I’m like Jesus and Gandhi smashed together into an awesome gigantor kindness monster.

The General Personality

In my dealings with the Rails community I’ve encountered some world class asswipes, and I’m sure they think the exact same thing about me. For a long time I couldn’t place why these weird inner circles like caboose and Rails Core bothered me so much. Here I was with supposedly the cream of the crop for Ruby smartness, and they did and said some of the dumbest shit ever. Like how Fuzed is actually named “F-U Zed” in honor of me. Honor? Fuck you.

Yes, that’s actually true that the VaporSet crew named a web server FUCK YOU ZED just to spite me. Aw, I can feel the love all the way from Tokyo you bitches. What happened to Fuzed? Well, it’s currently hidden behind some google login that I’m too tired to go through so I’m guessing it’s not doing so great. Who knows. All I know is that’s what you deal with in the Rails world these days.

To prime the pump, let’s talk about Kevin Clark. Me and Kevin don’t get along because he once tried to demand some free tech support out of me for Mongrel. His dumb little company VaporSet had this stupid setup where the people deploying Rails didn’t have root access. I told Kevin that this was stupid and apparently it was Kevin’s idea because he told me “fuck you”. Ever since then Kevin’s been a mouthy little shit with nothing to back it up.

This particular discussion started with Kevin Clark deciding to tell me that my idea to restrict access to the main repository for Utu until it’s solid makes me a “dick”. But, read to the end of the chat for the punch line. It’s great.

02:18 < zedas> evan: http://utuprotocol.info/repos/
02:18 < kevinclark> evan: I thought so too, but it still seems to 
                    happen (atleast on my system). And lightning has 
                    a few that hang out
02:18 < zedas> evan: http://utuprotocol.info/repos/utu/changes.rss 
               is generated from an included xslt i hacked up
02:18 <@evan> zedas: and who can push code to that location?
02:18 < zedas> me
02:18 < MenTaLguY> large git clones can also get kind of bad
02:18 <@evan> see, thats the problem.
02:19 <@evan> kevinclark: hang out?
02:19 < zedas> not a problem at all.  feature since i don't trust 
               any you mofos :-)
02:19 <@evan> kevinclark: you mean missing files?
02:19 <@evan> zedas: then you're set!
02:19 < kevinclark> evan: I mean generated files are sitting in svn
02:19 < zedas> evan: no, people can contribute by doing a darcs send 
               which packs it up and shoots it to my email.

Then kevin comes in:

02:21 <@evan> we've got very different ideas about how to deal with 
              contribution, i suspect.
02:21 < zedas> i also anticipate that there won't be so many people 
               contributing directly on the main utu server, but 
               more contributing by writing clients or tools that 
               use it
02:21 < kevinclark> evan: I'd say you're polar opposites
02:22 < zedas> how's that kevinclark?
02:22 < kevinclark> zedas: I thought you weren't talking to me
02:22 < boyscout> kev * [1003] /rubinius/trunk (8 files) add 
                  rb_hash_delete
02:24 < zedas> kevinclark: well i'm gonna talk to you if you're 
               making passive aggressive little comments
02:24 < kevinclark> zedas: they aren't passive aggressive. You don't 
                    want anyone to check in to your repo. Evan's 
                    repo is open to anyone who's gotten a patch in. 
                    polar opposites
02:24 < kevinclark> and you're still a dick
02:25 < kevinclark> and I'm enjoying the vacation
02:25 < kevinclark> so, keep it up
02:27 < zedas> kevinclark: you just called me a dick?
02:27 < kevinclark> you can still read too
02:27 < kevinclark> awesome
02:27 < zedas> hmmm
02:27 < zedas> well, i'll just leave this alone for now.
02:27 < zedas> sorry about that evan.
02:28 <@evan> no problem.

And then kevin demonstrates why I’m trying to limit people’s access to the main repository:

02:47 < brixen> evan: lighting is using autoconf?
02:47 < brixen> er lightning
02:48 <@evan> yeah
02:48 <@evan> well, crap.
02:48 <@evan> lightning is faulting on i386
02:48 < kevinclark> hmm?
02:48 < brixen> yeah r1003 deleted configure
02:48 < kevinclark> working on mine now
02:48 < kevinclark> oh, crap
02:48 < kevinclark> I thought configure was generated
02:48 < kevinclark> from autoconf
02:48 <@evan> really?
02:48 < kevinclark> all my build tools do it ;)
02:48 < kevinclark> sorry
02:48 < brixen> well, not from our .configure
02:48 <@evan> brixen: it should be there.
02:49 < brixen> I'll restore from r1002
02:49 < kevinclark> brixen: cool. sorry about that.
02:49 < brixen> just wasn't sure if the build steps had changed
02:49 < brixen> kevinclark: np
02:50 <@evan> brixen: wtf.
02:50 <@evan> why did it get deleted....
02:50 <@evan> kevinclark: did you delete it?
02:51 < kevinclark> evan: I did. Too much time with buildtools that 
                    were generating configure for me, and I got 
                    confused.
02:51 < kevinclark> evan: It got caught with the docs that got 
                    modified
02:51 < kevinclark> and I didn't think twice about it
02:52 <@evan> yeah, just restore it plz, kthxomgwtfbbq
02:52 < kevinclark> evan: working on it ;)
02:52 < kevinclark> brixen: you're doing the restore, yeah?
02:52 < brixen> yeah, one sec
02:52 < brixen> was just checking it would build
02:52 < brixen> and it's building :)
02:53 < kevinclark> sweet
02:53 < boyscout> brixen * [1004] 
/rubinius/trunk/shotgun/external_libs/lightning/configure restore

Wow, rails is a ghetto. The little prick calls me a dick (and in private chat said he’d find me at the next conference but of course never did), then he deletes the fucking configure file for the project! Remember he was working on GNU lightning when I started chatting and you see the commit that probably did it. This means that it took an hour for everyone to figure out that his dumb fuck ass deleted it.

Why is this ghetto? Any experienced developer knows that autoconf configure files are a PAIN IN THE ASS to recreate. They almost always require special reconfigure calls, special m4 macros, or just time. You usually get them right, generate them once, and then leave them in your repository for all to use. To make it worse, Kevin actually wrote a supposed alternative to autoconf, and yet he doesn’t know the most basic thing about autoconf.

Only a fucking tool bag piece of shit would:

  • spend 10-20 minutes calling me names over IRC,
  • not have the balls to say any of that to my face,
  • say I’m a dick for wanting to use a different (established) publish/review model,
  • and then demolish such an important file for a project,
  • keeping everyone stumped and pissed for an hour,
  • therefore proving me right.

This is exactly what makes Rails a ghetto. A bunch of half-trained former PHP morons who never bother to sit down and really learn the computer science they were too good to study in college. BTW, this is true about Kevin as he’s an English major or something stupid (and it shows).

Hats off to you Kevin, you fucking prick. I’m enjoying my vacation too.

After this, I started thinking, since it was the first realization that I picked the absolute last wrong community to make my living in. They were all pricks, morons, assholes, and arrogant fucks who didn’t care about the art or the craft.

They were all a bunch of little ghetto fabulous princesses trying to make it in this tiny little Rails world and not enough brains between them all to make it happen.

Tied To The Rails

I’ve been thinking this over ever since I realized that Mongrel and Rails more or less killed my career. During 2006 I was effectively homeless for about 4-6 months out of the year and made no money at all. During the rest of the year the little money I made was impossible to get, and many times I was simply not paid.

If it weren’t for the totally kick ass Obie Fernandez I’d probably be slogging away in some McD’s screaming, “you want fries with that?!” He got me a really good gig in Florida and I was able to get back on my feet. Obie rocks, and he’s also a good family man, treats his kids well, and is very smart. He’s one of the few gems of the Ruby world.

Before Mongrel I was building kick ass software for the NYC Dept. of Correction with a tiny team. We were doing innovative stuff like REST XML feeds of prisoner releases and RSS of prisoner transfers. It was fun, I was in charge, and things were pretty good.

Before that I built software for finger print readers, network protocols, designed business processes, lead software teams, created portals, and generally rocked as a consultant.

After Mongrel I couldn’t get a gang of monkeys to rape me, so forget any jobs. Sure people would contact me for their tiny little start-ups, but I’d eventually catch on that they just want to use me to implement their ideas. Their ideas were horrendously lame. I swear if someone says they’re starting a social network I’m gonna beat them with the heel of my shoe.

The Stories I Could (and Will) Tell

One company tried to get me to sign a contract that required me to list all of my inventions, software, cooking recipes, works of art, writings, poems, essays, thoughts, ideas, patentable or unpatentable, prior to taking a 2 hour per week gig mentoring someone. The list of shit they wanted went on and on, and after I refused and just ignored them they still kept asking me.

My favorite was the company that tried to hire me, and in the interview their CEO says, “Or, we could just tell you our problems and you could fix them for us! (hahahaha).” Yeah, real funny asswipe, I totally love working for free for you cunts.

Another company told me they had a great job for me and that I’d be perfect for them. I knew these guys so I at first trusted them, but what a mistake. Turns out that it wasn’t a job they had, it was an RFP that they wanted to bid for and put my name on the bid so they’d have an advantage. Alright, that’s fine but that means they’re using my name and reputation (that I earned) in a business transaction without telling me. Fine, I better get some fat cash. They then build the team and dole out the positions: Software Architect to the shithead who can’t code; Project Manager to the MBA asshole who talks like a car salesman; Lead Engineer to the guy using my shit to run his company. What do they give me? Nothing. I’m just Zed. Nobody needs my skills.

Other companies would hire me to fix something simple, I’d quote them $500 or so to do it, and then they’d refuse to pay if it didn’t take me a week to do. In one case I did something in about 5 minutes, sent off my automated billing PDF and they just flat refused. I had to work for another hour and even then they didn’t want to pay.

A company in NYC flew me out, put me up, and I gave them a cut-throat deal on my rate if they’d pay me quick. I needed the money to pay rent, so it had to be right after the two weeks of work. About the middle of the week I hear that the CEO isn’t going to pay me right away but is instead going to do NET-30 (an evil practice reserved only for furniture sales). I tell the guys that I got to go and I’d like my money, but they refuse, I fly out, and I don’t get paid for 60 days. What’d I do for them? Oh only a custom Mongrel server, a clean deployment to Mongrel from fastcgi, and a ton of training for their main man.

Then there’s the social network idiots. They all have a social network plus something fucking stupid to sell, but of course no MBA can actually code so they come running to me. However, there’s a slight problem. You see, I have a business degree you cock suckers. If you tell me that your social network will take on facebook because it includes baby pictures then I’m going to laugh in your face. They are an established player with CIA backing. You won’t wipe them out.

Google was a total riot. They offered me a job twice. I went with it, and they never responded. Probably because the job they were offering me—someone who’s been coding for 21 years, 15 professionally—was as a junior system administrator. What the hell does a junior sysadmin do at google? That’s probably like mopping the floor at a glory hole in Queens. I told them to review my resume and offer me a real position.

Revenge Of The Zen Prick

In Vancouver it was even weirder. There was no Rails there, and the only Ruby on Rails work was at this shitty little company I once worked for name Raymond James. I worked for them on a small gig, not doing much coding, just getting a project they screwed up out the door. Later I got into it with their “Development Manager” Alex Bunardzic over e-mail where he says something strange:

I would think twice before doing something like that, if I were you. As a Development Manager at Raymond James, I am privy to the work details you did for us some time ago (it’s all here, meticulously classified by [MANAGER]), and I must say that your references from that job are far from being stellar. To put things extremely mildly, you’ve ended up on our ‘not to rehire’ black list.

You may be looking for work, and people will naturally start asking around. I have plenty of contacts in the industry, and you know how people are when hiring—looking for references and for some feedback.

I’m afraid that, after just reviewing the code you’ve delivered here, I won’t be in the position to say many encouraging things about the quality of your work, not to mention your personality traits.

We go at it for a bit, because I didn’t actually write much code for them and I sure as hell didn’t write bad code since, you know, the damn project actually ran after I got there. Hell, I reverse engineered a Java library they bought but lost the source to so we could patch it. They even asked me to come in a few times and help on short gigs after my initial work. How the hell was I on a blacklist, why did they have a blacklist, why didn’t I know, and why the hell was Alex telling people this shit?

As the exchange unfolds (where apparently my use of foul language is bad but his threatening my livelihood is all right), Alex the Zen Master confesses that he got things wrong:

Here I need to apologize—I went back and looked over the documentation, and was shocked to realize that I’ve confused you with another person! That person’s name is Shai, and because that name was on a quick glance so close to Shaw, I’ve made a blunder and jumped at the premature conclusions.

...

So please scratch all the things I wrote previously concerning your past performance—all of that applies to some person whose name is Shain.

That’s right, this moronic idiot basically told (or just threatened to tell) everybody I was a shitty coder, refused to hire me, threatened me with slander, and tried to destroy me because he confused me with a “Shai” or a “Shain” in his blacklist. He even later tried to tell me that there wasn’t a blacklist.

Here’s the guy who is a development manager for an entire company and he can’t even tell the difference between two completely different people in some weirdo black list. All the more reason to leave Vancouver and try again somewhere else with people who don’t pretend to be Zen masters while they’re treating you like shit with a perfect half smile on their face.

How’d This Happen?

Over and over again I’d run into these morons who would offer me tiny jobs, no jobs, insult my intelligence, treat me like all I can do is code, and when I didn’t fit that mold or wanted to charge them for the privilege they’d cheat me or laugh at me.

Here’s a bit of background on me: My education is in business. I have a BS in MIS and almost finished my MS but ran out of money. I’ve got more business education than most of the MBAs out there, and I have a nearly formal education in software development, modeling, statistical analysis, and sociology. I’ve done it all, if only half-assed and exploratory, but what does the slick shit talking head car sales MBA loser think I am?

Just a code monkey.

The MBA attitude is best summarized in this statement, “I demand all of your creativity, yet trust none of your judgment.” They don’t care if you’re good at anything other than code. All they care about is that you keep cranking out the shitty functionality they think will sell to the VCs so their MBA dipshit nose can continue snorting coke off the backs of fat strippers in clear heels.

I have this rule that when life isn’t going well I have to look at myself very hard first, make the changes that might improve things, and then start looking at who’s stomping on my day.

After revitalizing myself, getting out of the Rails business (or trying), distancing myself from Mongrel, disconnecting from the Ruby community, and focusing on my business skills, I finally felt ready to figure out why the hell the Rails community is so completely and totally useless, stupid, and arrogant.

I believe, if I could point at one thing it’s the following statement on 2007-01-20 to me by David H. creator of Rails:

(15:11:12) DHH: before fastthread we had _400 restarts/day
(15:11:22) DHH: now we have perhaps 10
(15:11:29) Zed S.: oh nice
(15:11:33) Zed S.: and that's still fastcgi right?

Notice how it took me a few seconds to reply. This one single statement basically means that we all got duped. The main Rails application that DHH created required restarting _400 times/day. That’s a production application that can’t stay up for more than 4 minutes on average.

Let me put this into perspective for you: I’ve ran servers that needed to be restarted once in a year. They were written in PHP, Python, Java, C, C++, you name it. Hell, I’ve got this blog on a server I’ve restarted maybe 10-20 times the whole year.

Now, DHH tells me that he’s got 400 restarts a mother fucking day. That’s 1 restart about ever 4 minutes bitches. These restarts went away after I exposed bugs in the GC and Threads which Mentalguy fixed with fastthread (like a Ninja, Mentalguy is awesome).

If anyone had known Rails was that unstable they would have laughed in his face. Think about it further, this means that the creator of Rails in his flagship products could not keep them running for longer than 4 minutes on average.

Repeat that to yourself. “He couldn’t keep his own servers running for longer than 4 minutes on average.”

Assuming his statements are true (which we may never know) he basically duped us all.

Now I’m glad he did since Rails is a pretty nice idea, and it demolished the Java world I hated so much. What bothers me though, is that while all of the Rails Core fuck tards would insult me, tell me I was wrong, laugh at me, marginalize me, tell me I was a waste of space, that I “jumped the shark”, they were quietly taking my work and using it to improve their festering shit pile deployments.

In fact, in chats with me and them where I started to identify the GC, Threads, and IO all I ever got was denial from guys like Dave Thomas, Michael Koziarski, and Chad Fowler. Remember that nasty cgi.rb bug that is fixed with a monkey patch in Mongrel? Did you guys know that Michael K. and Dave Thomas pretty much threatened me into not releasing a Mongrel fix for the problem for three months? They actually let it sit for three months before other people crafted the cgi_multipart_eof_fix which I could include.

DHH Still Rocks More Than You

I actually like DHH a lot, but I’m pretty sure he’s gonna hate me. He’s a good guy and even though he pretty much vilified me for the majority of my time hanging out with Rails Core, and never helped me out when I was trying to do the right thing, he does get my respect. He’s infinitely more successful than myself or any of the loser wannabes he attracts.

He sent me this private email as a correction, so I’m including it here for all to read:

From: David Heinemeier Hansson <david@loudthinking.com>
To: zedshaw@zedshaw.com
Subject: I see you got some stuff off your chest

BTW, the 400 restarts were not from random acts of god. They came from  
the process hitting our memory ceiling. The fastthread fix slowed  
memory growth so that the processes wouldn't hit the ceiling that fast.

Also, the 400 restarts/day were across probably 60 processes. So  
perhaps the drama pitch of "That’s a production application that can’t  
stay up for more than 4 minutes on average" is a key or two stretched  
beyond what it can bear. But in any case, I'm certainly grateful that  
you championed these fixes and helped decrease Ruby's memory  
consumption. That helped everyone, from Rails to Nitro.
...

Alright, now during the time this was all happening though, I was really driving myself crazy trying to find out why my applications used up so much RAM. I had graphs, charts, debugging output from the GC, used gcc, nothing could find it. I was dealing with guys like ara.t.howard trying to tell me it was the OS holding RAM. Telling me these problems were because I didn’t understand how Unix worked? What? Alright, if there wasn’t a damn problem why was every hosting company having mysterious restarts for no damn reason? Linux’s oomkiller don’t kill a process for no reason. It kills them for Out Of Memory.

I would complain to Chad, Dave Thomas, DHH, and anyone in Rails core that this can’t be right. Something’s up and I smell a rat because no way should a server have such problems. Memory leaks, threads stalling, nasty hacks needed to get simple stuff working. Was this the same for them? “Nope, not over here.”

This whole time they not only denied what I said, but told me I was crazy and paranoid. The guys with the most to lose (like Dave Thomas) would tell me I was full of shit and demanded proof, and even when I gave proof, tried to give some lame excuse about the OS keeping the memory.

Then I find out that not only was I right, that it could be fixed, that I wasn’t crazy, but that Eric Mahurian fixed it a year earlier including improving the performance to O(1). All that drama and bullshit because this one patch was largely ignored by the core Ruby developers (not maliciously though).

That’s one more reason Rails is ghetto as hell. Important patches like the above go largely ignored by the Japanese developers, and while they are very nice guys, the above just smacks of amateur hour.

Did DHH lie? Who knows, but I know I sat in that Rails core chat for hours trying to figure out what the fuck was going on and they denied there was any problems. They didn’t help or even offer some experiences. Hell they wrote a damn spinner/spawner for the fucking problem. That should have been clue enough for me.

Then he drops the above “confession” on me. It doesn’t matter why you have to restart or how many nodes you have. He had a system that needed to restart something once every four minutes, while other systems restart hardly ever.

In the beginning, was this huge lie, but after that…

Then The Idiots Came

My theory on why Rails is a ghetto is best summarized by an observation I made about Michael Koziarski. Here’s his fat fucking face just in case you don’t know who I’m talking about. See, here’s the thing about Koz: He’s got a big mouth he runs when he’s online, but in person he doesn’t say shit. He loves talking shit about me when I’m not around apparently, insults me when he wants, but the best thing about Michael Koziarski is this:

When he tells people I’m an asshole they go, “Zed’s such a prick I hate him.”

When I tell people Mike’s a fucktard loser, they say,

"Who?"

That’s right, dude works on Rails in some capacity, apparently writing tons of shitty fucking code with his butt buddy Nicholas Sekar. Yet, nobody knows him. He’s got more web sites than Elvis and Chuck Noris combined and nobody knows him. He’s written mountains more open source code than me and no-bo-dy knows him.

He’s a fucking loser, and man he used to bug me. Now however, I don’t give a shit about Rails so he’s a little fly. Rails is my money maker platform I don’t invest in at all. Rails could sink in the ocean for all I care and I’d roll on to my next big thing. I’ve done the right thing by giving Mongrel to a great team, and if Rails dies, then awesome because little useless pricks like MK will probably fall off the planet into that part of hell where shitty managers end up.

The best part about the whole thing is there’s potentially 10 new web frameworks that can take on Rails. Hell, Mongrel spawned or helped 5 of those. My favorite of those frameworks is Merb which is literally “Mongrel plus Erb” but now it uses Erubis mostly. What I love about Merb is that it proved you could make a fast thread safe Ruby web framework with all the same ideas as Rails and using most of the Rails gear at the same time. However, the joke is that before Merb the Rails Core morons would scream up and down you can’t make Rails thread safe. Ezra however proved them all wrong by just writing a better Rails than Rails and all thanks to Mongrel being so easy to hack and work with.

If the Rails guys had given me even an ounce of respect and listened to me I might have helped them, but instead I wanted to make sure that they didn’t rule the world because when I listened to them shit talk about the community that made them famous I wanted to scream.

Alright, but let’s say I’m totally wrong and Koz is really a great coder who’s just staying under the radar? Remember the change to Rails to allow this?

http://mysite.com/controller/action;edit

That one little ’;’ was the cause of some serious pain for people since it’s actually not a proper request the way they interpret it. Requests with ’;’ in them are considered path parameters which are kind of like query parameters. Koz and DHH and crew added this, but I told them that’s not right, they should use something else like, uh, oh, maybe fucking ’/’. They ignored me. Did it anyway. Then when it was clearly obvious they were wrong (since Mongrel’s got a tight parser) who was out there defending this decision? Fucking Koz. Great programmers don’t defend stupid, they stamp it out and own up to their mistakes.

Fuck you Koz. You don’t speak.

Ruby on Rails has become full of people like Koz, with Koz the most senior of the wannabe smarties. Koz got lucky at best and injected his shitty coding into a good project, fucked it up, and then latched on to security as the way to get more control. Of course he doesn’t actually know anything about secure coding which is why his code seems to have lots of the bugs (go check out the date parsing shit. Clue: months don’t always have 30 days).

When I hang out with the Nitro, Factor, Django, Lua, Python, Lisp, or Mongrel crews I get to talk to super smart guys who have egos for sure, but have mutual respect. They craft nifty shit I love to play with, are fun to talk with even when I disagree, and don’t say mean shit when I’m not around.

With Rails I get scrawny cocksuckers with carpal tunnel syndrome talking to me like they’re gonna eat my young. Their feeble PHP infected minds can’t grasp advanced shit like objects or closures. When you combine stupid businesses with stupid people using a stupid framework based on a big fat fucking lie on a shitty platform you get the perfect storm of dumbfuck where a man like me can’t find work.

There’s no work for a smart man in a town full of stupid.

The Hysteria Of Consultancy

Where I work the company is willing to blow huge amounts of money on a consulting firm or hardware, but ends up firing people when times get tight. It’s a universal mass hysteria that paying $100 – $200 per hour for a group of consultants is preferable to simply hiring good employees. At the rates companies pay these consultants they could hire 4 full time employees.

Consultancies used to provide a service by managing the entire project so you didn’t have to do much. Now with Agile and Pair Programming the consulting firms can dupe clients into helping them make the sausage, provide little to no services, yet still charge insane rates. What’s impressive is these consulting firms somehow charge rates that are 5 or 6 times what they pay their employees.

Think about that. How is it possible that your consulting firm has so much inefficiency they must charge 600% overhead? Are the services you get really that far above the base pay of that employee? Why the hell not just hire someone and have a long term learner who’ll be ready to work on anything?

Accounting, that’s why. When you hire a Full Time Employee (FTE) you need to account for it and budget them differently than if you pay a firm for a consultant. There’s several loop holes in the tax and accounting standards that make a consultant seem cheaper than a regular employee.

However, this is a mass hysteria. Eventually people will catch on that the quality they get for the price they pay isn’t there. A smart consultancy will figure out that they could undercut these idiot firms by simply using technology properly to cut costs and reduce overhead. Hell, you’ve got 600% overhead to work with. Should be easy to pull a Southwest Airlines on them.

Let’s take ThoughtWorks as a classic example of the hysteria. They decided to get into the Ruby on Rails game and went full bore. I was telling people right when Rails came out that doing it for internal projects at big companies would be a huge money maker. Nobody believed me, and now rather than all my smart friends working on cool applications for big money I have ThoughtWorks fucking up my party.

Before you continue this part of the rant ask yourself a question:

How did ThoughtWorks go from 0% Rails business to 60% Rails in just a few short months, but somehow didn’t hire that many top notch Ruby guys? Remember, if 60% of your business is Rails then 60% of your people need Rails training or else you have to hire more people. If they didn’t hire any more people than that means…the people they had were retrained. With two week training courses. Huh? How does that make them experts?

What happens if you do that is you have a group of former C# and Java guys running around writing shitty Ruby code and training on the client’s dime for huge fees.

Think for a second. ThoughtWorks charges its clients a premium price for expertise. They claim that their Agile methods and development expertise means they’ll produce a great result. This is why you pay them a premium. However, they reserve the right to control staffing, and you have very little say in the skills of the people they place.

Continue the logic further my friends with this little walk through consulting practices:

  1. TW figures out it can make a mint doing RoR projects for dumb ass MBAs at dumbass companies.
  2. TW goes for it and gets 60% of its business now all RoR.
  3. TW realizes that they can’t hire enough Ruby people to do that. Actually, they didn’t really try too hard since that’d mean paying the new people a fair salary.
  4. Yet, somehow they put 6-20 people on projects and claim that these people are Rails experts with a high standard of quality. These people actually had two weeks of training.
  5. After each person has been on a project for a few months, they mysteriously get transitioned to another project, become “sick”, or generally leave.
  6. They are then replaced with someone else who’s training is limited.
  7. During their operations they seem to focus entirely on the process, but very little on the quality of the code. Sorry guys, but having a 1:4 code:test ratio is not focusing on code quality. It’s focusing on test quality.
  8. Finally, when your project is in the dumps and it takes months to get simple things done you realize that you’ve been paying ThoughtWorks a premium for what is effectively a bunch of total newbies who are only there for a few months before they roll off.
  9. You my friend got fucked in the ass. Congratulations because all the idiots who paid ThoughtWorks 6x times salary for junior ass wipes got taken and simply paid to train ThoughtWorks’ new crew.

How do I know this? Well, I’ve been a consultant for years and recently I’ve taken over two ThoughtWorks Ruby on Rails projects. BTW, they claim they don’t do “Ruby on Rails” projects, but actually do “Ruby” projects. They also claim they don’t do “eXtreme Programming” but do “Agile”. Doing this little semantics juggle means you can never hold them to any standard of quality.

In the two projects I’ve taken from ThoughtWorks I found mountains of horrible, horrible code. They of course try to pull the classic “there’s many ways to do everything in programming” but this time they kind of get caught because Ruby on Rails means stay on the Rails. There is an established best practice way to build web applications with Rails and that’s the entire point of the system. When ThoughtWorks fucked up these projects they did it in such a completely deviated way that it was impossible to defend.

Additionally, the people they placed on these projects were not well trained at all, had no idea about simple Ruby idioms let alone good design, and spent more of their time drinking and having fun than actually getting shit done. At the last project they actually had bottles of Pedialyte in the fridge to help with their hangovers after wild nights partying.

After ThoughtWorks left the most recent project we revamped the team. We got rid of pair programming, cut down the number of tests, started cleaning more and more code out, got rid of their shitty tools, and we all started leaving at 6pm. What happens?

We doubled our productivity with fewer people. Yes, that is a verifiable metrically validated claim I can back up. Just like the horrible quality of the code, their idiotic defense of it, and their very bad job at designing even the basics of the business model required. Remember, they are testing and svn whores so their failure on these two projects is very well documented.

However, what really ticks me off about ThoughtWorks isn’t the way they fucked up these two projects. I’d take ThoughtWorks over IBM, Accenture, or BearingPoint any day of the week. ThoughtWorks’ competitors are even worse, so I’ll take the lesser of ten evils any day. What pisses me off is that I know they’re responsible for turning Ruby on Rails into the next Visual Basic. Why? Because they wrote in a position paper that Ruby on Rails was like Visual Basic. Yes, they did that. They compared Ruby on Rails to probably the most technically vilified language in the history of computing.

Here’s my prediction about ThoughtWorks: They’ll continue to screw customers over by training their employees on their client’s dime and write tons of fucked up software. The bad results from ThoughtWorks will kill Ruby on Rails for companies as these companies are left with a bad taste from bad implementations.

Mingle Rocks Hard, Buy It

I try to be honest, and I’ve gotta say, Mingle is the absolute shit for doing Agile project management. Whether it’s XP or Scrum or just your own hacked up version (which is what anyone does anyway), Mingle is great.

Why am I pimping software from a company that I seem to hate so much? Because I give credit where it’s due, and this software is very truly great. It’s probably one of the better Ruby on Rails projects I’ve seen. It’s also the best Agile project management software I’ve used, and I’ve used tons of them. It’s almost like having your own little Scrum master in a box.

The question is then, if ThoughtWorks can crank out such a wonderful product why the hell did their work on my project suck so bad? They obviously got the chops somewhere in the company to do real honest good product design. Where are those guys because that’s who I want to hire. Not these scrubs who infect my Rails projects with so many patterns I see M.C. Escher paintings in the damn comments.

Oh wait, they don’t write comments, because the “code should speak for itself.” Right, that nasty shit doesn’t say anything other than, “Keeeel me. Kill me please.”

That’s the ThoughtWorks I want to deal with. I want the ThoughtWorks that cranks out beautifully crafted software written by experts who know exactly what they’re doing.

I don’t want whatever part of ThoughtWorks is currently fucking up my party.

From Industry to Corporate

ThoughtWorks is simply taking advantage of a pattern where new technology goes from fringe to corporate and then dies. A great example of this is Java Portals. They started out on the fringe at universities and non-profits, where they were mildly successful. Then they migrated into the corporate world where they were complete disasters, and finally the risk averse government picked them up for even less success.

How do I know this? I worked on portals for their entire life and followed them through this process. Go look. I did some of the first work on uPortal, then I worked on portals in companies, and then worked on them for the government.

Ruby on Rails is following the same trajectory I’m afraid, and ThoughtWorks is milking it while they can. First it started on the fringe in start-ups and a few lonely places where it’s having mixed success (mostly due to the poor performance of the Ruby platform). Now it’s getting adopted internally at companies where of course it’ll get fucked up again and die off. After that it’ll move to the government sector where it will languish along with it’s new found buddy COBOL.

Oh, did I mention ThoughtWorks compared Rails to ColdFusion as well? Awesome.

Correction: I wrongfully said COBOL here. ColdFusion is the technology mentioned.

Fighting Consulting Firms

I have a few pieces of advice for people about to hire any company like ThoughtWorks. There’s just a few simple strategies you can follow to make sure you get the most out of them and get your money’s worth:

  1. Make sure you have the right to see every resume and interview each consultant they place. Treat them like new hires and don’t let anyone who’s not worth the rate you’re paying on the team.
  2. Demand a variable rate based on the position of the person and their experience.
  3. Demand that no employees can leave the project to work on another project. These placements have to be for the life of the project or until the employee quits.
  4. Require that you have the right to have someone replaced if they are not immediately capable. Part of what you’re paying is that a ThoughtWorker should be able to drop in commando style and just start working. The reality is they are usually totally lost anyway.
  5. Seriously consider recruiting one full time employee as a team lead, another as a project manager, and then staff the rest of your team with independent consultants. You’ll find that you get more control and better quality at a lower price.

Finally, a company like ThoughtWorks uses bizarre socialization processes and weird shit like Neuro-Linguistic Programming to enslave their employees into working more hours than needed. That shit about “can’t leave with a broken build”, pair programming, hazing rituals, firing people who don’t conform, and other unprofessional behavior mostly exists to make employees pliable pawns.

Why? Because ThoughtWorks pays these people a salary that is fixed and considered a sunk cost. If they pay someone 60k/year and that person works 40 hours/week then they are paying them about $29/hour. If they convince this idiot to work 60 hours/week then they are basically paying the moron $19/hour. If they can push them to 80 hour/week then these idiots are actually making $14/hour. You can make $29/hour managing a fast food joint.

The further and harder ThoughtWorks (or any consulting firm) pushes its employees the more money they make because then they charge the client for each fucking hour. Get it? If they push an employee to 60/week they not only reduce the cost of that employee but also increase the billable hours. Hell, even if they don’t charge for those hours they still make more money just by reducing costs.

Now I’ll admit I didn’t see ThoughtWorks do this nearly as much as I’ve seen IBM Global Services, Accenture, and BearingPoint do it, but they still do it. My observation about ThoughtWorks is they’re really really really fucking weird about it. I saw them pull passive aggressive shit like picking on a single employee high-school-nerd-vs-jock style until he conforms or quits.

What’s this got to do with your project? Well, if you have a mix of ThoughtWorks employees and your own then be careful that the ThoughtWorkers don’t warp your employees as well. I’ve seen it once already where a room full of ThoughtWorkers would thrash and trash on one poor employee simply because he disagreed with their approach to a problem. Or, having special boards on the wall with “How Many Times Frank Is Late”. Or, holding “dev lunches” (which I called “dev lynches“) where they thrash client employees with alternative opinions in order to maintain their stupid operations.

I’ve seen it, and they do it. Be careful of it as you’ll lose people who are smart and not susceptible to that crap, or you’ll have a bunch of brain washed idiots at the end of the project. It’s also a horrible way to treat a client so don’t put up with it.

Round Two

When I wrote this rant it was in kind of a private beta, but then it got out. I don’t mind so much, but a half written rant isn’t very fun, and what was missing is more about the big wigs and weirdos in Rails, how the so called “industry” sucks ass, and finally who are the real heroes of the Ruby world. A big purpose to my rant is to dose everyone against the current Illuminati and maybe get people to listen to the good guys for a change.

This second part of my Rant is full of just two more bashings, and then there’s one more part where I lay out who I really liked in the Ruby world, but why that won’t keep me here.

Dave Thomas Ain’t No Sammy Sosa (He’s Just Fat)

There’s an email sitting in my inbox from Dave. He wants to talk to me on the phone because he’s just that persuasive. I’m sure he’ll try to tell me to “think about the community” and “you sound unstable”. No, not unstable, just pissed off. But if it makes everyone feel better then fine, I’m fucking crazy as hell. boogie-boogie-boo! (Morons).

However, Dave Thomas has never said a single good thing to me ever. He’s actually given horrible keynotes where he looked right at me and spewed out his mouth hole, “Another Cargo Cult: Why do we use Mongrel rather than Webrick?”

Because Mongrel is faster and easier to use you stupid dick slurper. It’s provably faster. But Dave got some bug up his fat ass when I wrote Mongrel and decided he just didn’t like me at all. Hell, his bug got bigger when I treated him the way he treated me but then again, as you can tell from this rant, I’m not the greatest guy on the planet.

When I’d hang in the Rails Core chat I’d notice that Dave T. was the only author/publisher there asking questions. I thought it was weird so I asked a few of my friends at the other publishing houses and they say they were never asked to get in to Rails Core to ask questions. Dave would sit there and have clarifications, work with DHH on the book, and just generally get fantastic unprecedented access to all things Ruby on Rails.

If that’s the case then why in Shiva’s damn name did his first Rails book suck so fucking bad? That book was horrible! It had inaccuracies in it that actually cost me fucking money. Specifically, he had a whole blurb about putting models into modules that didn’t work at all. I got pissed and asked them why the fuck it wasn’t working and turns out nobody does that. Models in modules just doesn’t work, but somehow Dave T. blathered on about it like it was perfectly alright.

He basically had full access to the code and the people who wrote Rails and a direct line to DHH and still couldn’t write a decent book on writing a Rails application. Deployment was barely covered, even though I was sitting right there and he could have asked me. That whole first chapter with its fantasy dream Agile development process is a total crock of shit.

Seriously, I’d rather read love poems from the Marquis de Sade than Dave’s finely stacked and cut pack of lies he calls a book.

That’s when it dawned on me: Hey, what if Dave’s just a shitty writer and that’s why Ruby sat in the dumps for 3+ years going nowhere. I’ll assume that Andy Hunt is a good guy I’ve never met, so if any of this offends Andy then I’m sorry for that. I’m blaming Dave for this one since he’s the public face and is always out there.

Let’s take a look at the original Pickaxe Book Table of Contents for a minute. You notice anything missing?

I’ll give you a hint with the story of how I found Ruby, ignored it for years because of this book, and then stumbled on Ruby through Rails. I give Rails full credit for correcting Dave T.’s mistake. You see, when I read through his book, I said, “Yawn, Yet Another Programming Language.”

When I cracked open Ruby on Rails I said, “Holy fucking shit they have nice meta-programming. Oooh, and you can do that with blocks? Oh and what’s this nifty stuff over here? Damn this is pretty nice.” It was like seeing the neighbors dorky daughter in a bikini one day and finding out she’s built like a brick shit house.

That’s right, take a look at the original topics and you’ll see that Dave’s book is nothing but a giant me-too book that seems to appeal to the average OOP coder of 2001. However, the average OOP coder using Java, C++, or C# wasn’t doing much meta-programming then, and what Dave presented was nothing more than a book that said, “Hey look, you can do all the stuff you’re doing now, and make NO money at it.”

In the classes chapter chapter he builds this weird Jukebox with songs. It’s a horrible design, shows off nearly nothing about using Ruby to build real software, and uses a non-standard syntax of naming variable like “aSong” which is confusing since Ruby puts caps for classes and everyone else would write a_song or just song.

Take his choice to make a KaraokeSong different from a Song through inheritance. The only difference is that a KaraokeSong has lyrics. WTF, most songs have lyrics you dumbshit. In fact, this is a bad design all around since you’d actually just have a fucking Song that some KaraokeMachine “displays” using its lyrics. Model/View/Controller would have been a nice start.

He barely covers meta-programming in the book, yet meta-programming is the bee’s knees for coding in Ruby. Ruby’s ease at this is what I consider its main feature over all the other programming languages, and yet it’s covered only lightly and in passing.

His examples in the extended classes section are horrible, I mean the first example is using some weird string as a class. Who the hell teaches an OOP language with some weird ass example like that? That again just promotes bad style and encourages bad software.

You may feel that this is nit-picking, but it’s this exact kind of thing that turns experts like me off and also produces horrible programmers. Think for a second: Ruby suffered in obscurity for a long time, and from 2001-2004 it went nowhere. People learned their Ruby from Dave’s book and from the other community members. When Rails hit the scene Ruby took off, and the PHP and Java guys learned their Ruby from Dave. They didn’t have a fighting chance with this festering cesspool. They were set up to fail and I fully blame Dave’s book for keeping Ruby in the dark.

Yet, here’s where Dave’s story gets interesting. If this book was so bad, then why was he given preferential treatment? I call this the Sammy Sosa effect. Whether you like Baseball or not, Sammy did steroids. I mean c’mon the man’s head is the size of Io and Ganymede combined and that don’t happen in adult men unless they’re juicing.

Yet, no matter how bad Sammy cheated or did drugs, people still loved him. I bet everywhere he went they gave him that stupid two finger chest-double-tap-mouth-fist thing he does. They cheered him on and the whole time Sammy was getting steroids in his left ass cheek so he could pound the ball farther.

That’s Dave’s situation. Everyone is running around chest-double-tapping in his direction saying, “You were there for us man. I love you! (sniff)” They herald him and give him special access, and he’s got that look in his eyes like, “Fuck yeah, I gonna make a mint off you bitches!”

Then there I am looking around saying, “Are these idiots crazy, he did nothing but fuck up Ruby for years with his shitty books and dumb self-promotion.” Hell Dave, you gonna pimp yourself out and spend an entire keynote begging for all of Java’s bullshit features so you can sell more consulting than at least do it right. Put on the pumps, the lipstick, the leotards, and give a good show man.

A fat man’s donkey show where you take up the ass to sell your shitty books.

Here’s the irony of Dave hating me and Mongrel: I gave him what he wanted in his keynote with Mongrel. Mongrel’s flexibility and small size and the use of Ragel for the parser meant that the smart cats on the JRuby team could port Mongrel to JRuby fairly easily. My pushing to make it as portable and simple as possible meant that they could give people a full reasonably fast Rails setup for development. In addition, Mongrel motivated the Glassfish guys to beat it and at work my team has been helping them get things working by beating up JRuby from every angle in a massive production Rails deployment.

The JRuby guys did a lot of work and if it weren’t for Rails deployment being solved by myself and the other contributors to Mongrel there would be no Thoughtworks’ rails biz and no real Rails deployments because we would have found out the truth that deploying it blows.

That’s right, Dave spent an entire keynote whining that he wanted Java’s goodies so that he could get their cash, and then shit on the one guy who actually could have given it to him. Smooth as butta baby. Smoooth.

Ruby Mailing Lists

You know, I can’t say much about the state of the mailing lists as I haven’t been subscribed for years I think. I mean it was so long ago that I had to endure Austin Zigler’s fat wannabe nordic ass rant off and talking shit to me that I almost forget why I left.

Ahhhh, now I remember. I got tired of people like Austin Zigler and Ara T. Howard and all the other ranting jealous fucks that I finally just unsubscribed. Pure and simple. Just didn’t continue in the community.

Ara eventually apologized for being a jerk. Let me tell you my fellow readers that is rare in deed. Good man.

This started kind of a relaxing trend though. I unsubscribed from most of the lists, left all the IRC channels, even left the rails core chat and the #caboose super secret hidden chat. Just left. There wasn’t anything there for me, so no point wasting my time.

Even though people think I’m committing professional suicide with this rant, keep in mind that I didn’t make any money from Rails, didn’t enjoy myself very much, didn’t feel respected, and haven’t really been a part of the “community” for over to a year. I’m serious, try to find some of my posts.

I still hang on the Mongrel, JRuby, and Rails Deployment lists, but I only chime in when they need help. There’s one very huge difference in these mailing lists though:

When everyone else was going off about this rant in the 
other mailing lists, these lists didn't even mention it.

That’s right, they’re serious about what they do and most likely don’t feel threatened. Those guys and gals are most likely getting things done and my little rant is just humorous. Won’t ruin their day, or at least they’re fucking smart enough to not blast it on a list that don’t care.

RailsConf

I spent most of RubyConf 2006 hanging out in the hotel hacking on Mongrel. Even did a release during the conference.

I spent RailsConf 2006 hanging out in the hotel lobby hacking on Mongrel. Even did a release during the conference.

I spent RailsConf 2007 hanging out in the conference center lobby hacking on Utu. Even did a release during the conference.

You see a trend here? I stopped going to Rails and Ruby conferences because they were boring. I probably missed the only RubyConf that was worth it in 2005 where Rails had its diamond tiara coming out party. After that, there was too much money in the water for the sharks to stay away.

RubyConf probably wasn’t too bad, but I didn’t have all that much fun. I was poor and hoping to get some work but didn’t run into too many people I’d work for and felt like a total whore. I met some smart people, but the weird thing is they were in the lobby hacking with me too.

Now I hear that some stupid game Werewolf is being played rather than people hacking. Oh come the fuck on you losers. Seriously, if the only way you get your social interaction is to play stupid Victorian era parlor games then put on your monocle and top hat and go do it somewhere else. I want to hack, and then go hang out with my friends, and maybe see some funny presentations that expand my mind.

I don’t want to see Jay fields talk for 45 minutes and not answer any questions. I don’t want to see him spend 20 minutes basically going back on everything he’s said about the Presenter pattern. I don’t want to hear about another dumbfuck Content Management System unless it blows me in the back seat of a Camaro. I don’t want another introduction to fucking testing, or have someone tell me how to do something only they need in their tiny little fucked up bureaucracy. I don’t want to see one more ThoughtWorks sponsorship speech unless they’re giving out bags of gold carried by a gang of Swedish hookers.

Look, when I can get up and give a 5 minute presentation on Utu and get people thanking me and telling me they enjoyed it the most, you’ve got a problem.

Having O’Reilly take over the conferences could have been a great move but I think O’Reilly is getting greedy. I heard before RailsConf 2007 that O’Reilly wasn’t going to pay for the speaker’s hotel fees or some other bullshit. Even though, sure, nobody wanted to hear them talk, the least O’Reilly could do is maybe toss them a bone with somewhere to stay.

I will say that the little conferences were the most fun. They’re short, well run, and everyone seems nice and friendly. There’s no profit motive in it, usually just trying to break even, and sometimes even government funded. I’ve enjoyed GoRuCo, Rails To Italy, and Lone Star Ruby Conference. All those guys are fantastic and while I’m sure I’m never invited back, I wish you all the luck.

Wait, fuck that, Matt can’t keep me from GoRuCo. That’s good times there.

Industry?! What Industry You Morons?!

Alright people, time to get a huge grip on reality’s collar and hold on tight.

Ruby on Rails is not a mother fucking industry!

Jesus fucking christ on a goddamned pike you absolute mother fucking donkey dick sucking morons get a fucking grip!

You are not in an industry. You are a bunch of people barely scraping by in a tiny little sector of a moderate sized piece of the economy. Gaming alone makes you all looks like the pathetic little crumbs I brush out of my toaster when it smells bad.

If my one rant destroys your precious little “industry” then it was on its way out and all I did was open the fucking door. Hell, half the people I rip on in this post hated my guts from day one, never said a kind word to me unless it suited them financially, and already consider me crazy as a crack smoking bed bug.

Here’s how you know you’re really in an industry: When congress passes a law to keep you around. Congress doesn’t give a shit about software. They pass laws for the automotive industry, banking, congressional military industrial complex, movies, music, publishing, medical, and big pharma.

The government walks over to AOL, Yahoo, and Google and bends them over a barrel screaming, “You got perty user activitay logs!” Software and the web is not a fucking industry.

What’s that, google is worth a lot? Everyone has lots of traffic? Penthouse bought Adult Friend Finder asshole. AFF was the largest online community for a long time, and a paper based smut peddler bought them out with their lunch money.

Read this idiots:

At the same time that the number of banking organizations was decreasing, industry assets were increasing. Over the 1984–2003 period, banking industry assets grew from $3.3 trillion to $9.1 trillion—a increase of nearly 70 percent in real terms.

Banking alone accounts for something like 9.1 trillion dollars. Tri-lli-ON dollars.

You my friends, with your little Rails startups, are not an industry. You are lightweights among giants so quit your bitching.

Your Boss Won’t Give A Shit

Don’t fret my friends, when someone shows your dumb ass boss this rant he’s going to read my first curse word and roll it up into the circular filing cabinet right next to your bonus. About the only thing I’ll do is succeed in entertaining people for about a week and then you’ll all go back to writing your shitty little web applications for shitty little money.

The smart ones among you will laugh this off and continue making money hand over fist cleaning up the messes the morons created. I know since I’ve got maybe 10 emails in my inbox from people asking for someone to do a Rails cleanup gig.

You hear that? The #1 money maker for 2008 years will be Rails cleanup. I’m not shitting you, it’s true and so just get over it and make the money.

If you’re writing the shitty code in this little “industry” than just consider yourselves on the way out. Go find somewhere else to scam people. I hear it’s pretty hard to spot a .net fraud. You’d do good there.

However, I have a more rational way to put all of this:

Free Markets

In order to have a free market you have to have equal information among all the participants. Marketing is effectively the act of giving out the right information to induce sales, and controlling the information that stops sales.

In software there is no free market because the consumers have nearly no information, and in fact they tend to sign contracts which forbid the exchange of free information. BEA for years (still?) put in its contracts that you couldn’t tell people how badly their piece of shit WebLogic performs. It wasn’t until someone got sued and the plaintiff lost that things changed around.

In software consulting there is definitely no free market. The combined effect of not being able to determine human talent and also the weird hysteria about spending more for top notch consultants means that consumers of the software consultancy are easily duped.

In effect, software consulting is a market for lemons where as long as the consumer can’t discern quality and tell anyone else about it, bad goods are able to exist and all seem to charge the same rate.

How do you solve this problem? Start to make the market efficient (which doesn’t mean fast dumbass) by balancing the information available to all parties. Consumers should be allowed to find out about past gigs that were bombed, who is on the hired team, whether they’re getting a fair price, and what’s being paid to others.

Once you have an efficient market the inefficient players are weeded out and you have only nimble high quality competitors.

Consider my rant the first step in getting the market information stabilized. I’m predicting that this will ultimately be great for your dumb little “industry” and everything will turn out fine.

My Fucking Heroes

Alright my pretty haters and lovers, it’s time to bring the party to a close. We’re gonna tone things down a bit, get on a nice groove, maybe play some Barry White or Al Green, and show the Ruby world some love.

There are some really great people out there I’d like to acknowledge and give thanks to as I leave this “industry” of Rails.

DHH

As much as I ripped on DHH in here, I really find him a great guy personally. When he read the first cut of this he didn’t contact me to tell me I was an asshole or anything, but sent me a very kind email correcting what he told me and then asking if I was alright.

DHH is a really nice guy who worked hard to give you assholes something to do after the .com bomb. I used to sit and watch him interact with his posse and think that either this guy is really good at managing these kinds of things or he’s about to get taken for a huge ride.

Turns out he knows his shit, way better than me.

Oh, and he can code you dumbfucks.

Obie Fernandez

As I mentioned before Obie is a good guy, good family man, and always treated me really well. If you’re really looking for a good book on Rails get his book The Rails Way because it is the most complete well written book covering Rails you’ve got.

I’m not just saying buy his book because he’s my friend or because I’m also writing for A/W (his publisher). I’m saying buy his damn book because it’s the best out there. If you’ve learned nothing it should be that I tell it like it is and give my assessments honestly.

Bradley Taylor

When I was down in the dumps Bradley Taylor of Rails Machine gave me some money to help me out and didn’t ask for any of it back. He’s a gem and I thank him for all he’s done for me.

Why The Lucky Stiff

If there’s one hacker I admire it’s why. I mean c’mon, who can’t get a kick out of a guy who does his documentation as a ransom note and yet still keeps it as a real set of docs.

First time I met why I was a total nerd at the conference and really wanted to talk to him about music. But, uh, I’m a nerd and why is pretty damn cool so he wouldn’t talk to me. Oh well, opportunity lost.

Hopefully his Shoes stuff does something for Ruby desktop applications and the real Ruby programmers can go create something fantastic that isn’t Ruby on Rails.

If there’s any hope of getting Ruby out of its Rails Corporate phase it rests with why and his style.

NYC Ruby Crew

Only a gang of New Yorkers would love this rant. Even when it was at its worst these guys mostly thought it was funny. I like hanging out with them, and since a lot of them also come to the Factor hacking it’s a lot of fun.

I’m still not sure why, if all these companies are making money off Rails, that NYC.rb has to keep begging for a place to hold its meetings.

Oh well, that’s how ghetto Rails is I guess. Bleeding the community dry since 2005.

Mongrel Team and Contributors

Like I said before, these guys are top notch. I may disagree with a few design choices they’ve made, but overall they are kicking ass and doing a great job. Oh, except that little security hole. :-)

I’m glad that someone capable is taking over and I leave it in good hands.

Nitro, Merb, IWOA, Camping and Others

It was great watching the Rails Core squirm every time I mentioned one of these. They’re so competitive that they couldn’t help bash on these projects.

Let me give you a little clue though how things work: Rails Core figured out a few Ajax tricks after the Nitro team figured them out first. I also found it funny that after I showed them the Echo2 Chat Demo that campfire was born as well. Of course they’ll never admit that so it’s all unfounded lies on my part.

1/2 Of Rails Core

I actually really like people like Scott Baron, Thomas Fuchs, Rick Olson, and Jamis Buck and haven’t had too many problems with other folks. The good half of Rails Core is composed of people just doing stuff. The bad half is a bunch of arrogant asswipes I don’t care for anymore.

Ezra Zygmuntowicz

Ezra took Mongrel to the next levels with his Merb framework and all the work he did finding bugs, contributing to Mongrel, and just doing great software. The fact that his company Engine Yard is employing most of the Rubinius team to start kicking ass against MRI is a huge plus.

Rubinius and Evan

If anything is going to save Ruby from platform hell it is either Rubinius or JRuby or both for all I know. Rubinius has the advantage of being implemented by the smart as hell Evan in the correct way a virtual machine should be implemented.

In fact, Rubinius has a very extensive test suite that the other Ruby VMs use and it also implements most of its internals in Ruby, which is the right way to do it.

JRuby and Charles

Of course, can’t leave out JRuby and Charles Nutter because without him I’d have written off Ruby ever getting inside the corporate death shield. Being able to deploy Rails applications easily to an existing Java web stack is great, and it’s a huge help. They also do a great job of pushing the edge of hosting a language on the JVM.

Finally, Matz

Matz seems like a nice guy who’s kind of overwhelmed by the stupidity surrounding him. I believe he mentioned “we are surrounded by suits” or something.

I did enjoy the language, but it’s not my main interest anymore. Poor performance and bad implementation of nearly every feature from GC to IO to Threads means I’m not interested.

But Matz, he’s a sharp cat who I hope does well.

Anyone I Missed

If I missed you in these little shout-outs don’t fret. It doesn’t mean I hate you. Just means I ran out of time and wanted to get this published.

Zed’s Dead Baby

When reading through the comments people posted during the days this rant was live I found some funny stuff. I guess people think this is just a “career killer”, but I guess they missed the part about me not having much of a career to kill anyway.

I’m not going to do much Ruby except at work for projects where it fits. I’m pragmatic so even if I can’t stand the community I’m sure not going to avoid using something that I spent a lot of time making work. Of course, all of this work will be with JRuby and not MRI. Because MRI sucks ass.

This is the last thing I’ll say about Ruby on Rails, the “community”, and why I’m leaving:

When the burning husks of your startups warm 
the last of your bones, remember I told you so.
- Zed
Latest News (Read...) 2008-01-06

I’m almost done answering the emails everyone sent me and I must say they’re great. There’s so many people who’ve ran into the exact same things I talked about in my rant that I’m planning a series of more serious essays around the evils of the software industry.

2008-01-04

Wow, I’ve received a ton of fan mail over my Rails Is A Ghetto rant. So much that I’ve decided to contact everyone and say thanks and actually reply. Then I may contact a few people to ask if I can include their questions in a larger FAQ of sorts.

2008-01-03

Done with the Rails Is A Ghetto rant assuming there’s no corrections or additional factual mistakes. I did correct one mistake that I said ThoughtWorks compared Rails/Ruby to COBOL when it was actually ColdFusion. Like that matters since it’s still stupid.

2008-01-02

First, I’m organizing a Factor hacking session at Earth Matters on Friday Jan 4th @ 7pm. If you wanna hang out and hack, learn some Factor from a newb like me, and probably go hit a few of the bars down here after, then show up. We’ll be in the back where the tables are with computers because we’re all nerds.