Switching From Rails to Django: Why?

November 15, 2008 by Doug Leave a reply »

Rails is crap.  There – I said it.  Apologies to the geek with a peanut dick but it just sucks really bad.

Compared to PHP – Rails is Great

Yeah it is great – its epic in fact.  But then again that isn’t very hard is it considering how shit PHP is?

Stop Stealing Ruby’s Limelight

The reason people love Rails is because of Ruby.  It pisses me off when I hear people getting pissed off with having to learn Ruby so they can use Rails.  For crying out loud!!  Ruby is the foundation, cause, Nu(n), beginning, soul, reason for Rails existence.  All of those funky little things that Rails can do are entirely due to Ruby.  Ruby is an amazing language and Rails is an insult rather than a blessing to it.

Rails and Mongrel = Unstable

Every time I get into an argument regarding Rails’ reliability it comes back to: “It must be your code”.

Well fair enough.  Lets say my code is the reason that all my Rails sites fail at least once a week.  Or maybe its my setup, or server config.  Maybe I’m not using Mongrel right.  I’m a dumb fuck who can’t use Rails…

But…

This “dumb fuck” can setup and manage multiple Django sites without issue.  Without hassle.  Without self delusion.  Without restarts every fu*king week!  This “dumb fuck” has had 3 Django sites running for the past 8 months with no downtime.

Okay – so I could setup scripts to kick Mongrel back in when it falls over.  I could manage or code better.  I could do many things.  But why the fuck should I?

I think a good analogy is this:

  • Rails = Windows
  • Django = Apple

You see – Django Just (fucking) Works.  Like a Mac.  Nice and simple.  Reliable.  Consistent.

Rails needs hacking and bollocking around with until it settles.  Then you need to faff some more when it plays up.  Sounds familiar doesn’t it?  Just like Windows.

But All the Cool Kids Use Rails

Yeah – all the cool kids use Rails.  Do you remember that all the “cool kids” at school were normally the biggest dicks in the school?  They were the thickest, most aggressive, most lacking in self confidence and respect.  They followed a ‘leader’ blindly because they were too weak to follow their own path.

The Rails community comes in two parts:

  • A core of heavily invested super-egotistical fat-assed vermin that need it to continue in order to make money training, publishing, etc.
  • A huge cloud of numb nuts who don’t know how to program but jumped on the Rails bandwagon to be cool.  These people invariably make themselves look like idiots when challenged.

Lets look at some real technology leaders:

Google - they use Python for the majority of their systems as well as choosing Django templates for its Google App Engine.  They also rapidly built Django support into it.  Rails hasn’t even hit the radar.

Rails Has Huge Support From The Tech Industry

Similar to the above but I knew you’d never read through anything longer than a few paragraphs so I put this shit here.

Rails attracts disaffected, immature hippies and divs.  No major company has embraced Rails for anything serious.  The only ‘companies’ that have embraced Rails are the fluffy-bunny brigade of non-companies.  They make money but they’re the technological equivalent of the Care Bears:

  • Twitter – for inane bullshit.
  • 43 Things – You put the things you want to do in life.  Personally?  I just do them!
  • Amazon – I almost shit myself when I saw this.  Until I read the details about it:
  • UnSpun is a new service from Amazon that puts workers from the Mechanical Turk and the UnSpun community at work finding the top, best, favorite things in any category.
  • Sounds like a world beater.  Really taking over Amazon there aren’t you.

Django Copied Rails

No, it didn’t – that was my controlled response to this ridiculous statement.  My natural response had a lot more ‘beating YOU in the face for thinking such a thing’.  Django and Rails were born from very different worlds and purposes.  Neither copied the other.  Although multiple projects have spawned in the Rails community to copy the Django admin interface.  Jealous, much?

Discuss?

Comment or email me.  If you disagree I’ll likely mock you.  If you agree I’ll send a digital kiss.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google Bookmarks
  • BlinkList
  • DZone
  • Live
  • Ma.gnolia
  • Reddit
  • Slashdot
  • SphereIt
  • StumbleUpon

Related

Advertisement

42 Responses

  1. Pratik says:

    Personally I wouldn’t decide a technology based on what the so called “community” is like. But I can understand why it’d bother some people. I’d suggest you have a play with Passenger – http://www.modrails.com – which is the de facto deployment for Rails apps these days – http://www.loudthinking.com/posts/30-myth-1-rails-is-hard-to-deploy

    Best part is, it works with django too :) So while you’re at trying out django, maybe try putting your Rails apps on passenger, see if they throw up or not.

  2. malcontent says:

    Why are python programmers such hostile retarded pricks?

  3. omouse says:

    Why are programmers such hostile retarded pricks? That’s the better question imo

  4. Pat Maddox says:

    oakley.com is powered by Rails. Oakley’s a billion dollar a year company, and are tied in to the real world instead of being just a tech company.

  5. Fred says:

    Check out Ravelry.com, couple of hundred thousand knitters furiously networking away, rarely if ever down. Rails.

  6. Chris says:

    Most Python programmers are great. Only this guy is a retarded prick. Python rocks. Ruby rocks. Rails rocks. Django rocks. Shut the f*ck up, blogger with a peanut brain.

  7. Morgan says:

    I like to agree with you sentiments, because I like python more than ruby, but I also would like to point out that your blog “proudly” runs on php.

  8. Eisenhorn says:

    Rails and Django both are great frameworks.
    Ruby is really cool language, and there are not just rails available. There is Merb, for example. Actually there are bunch of other tools. Rails is just most popular.
    Mongrels are stable. Just writing config – and it worked 6 month for me like a charm. But my host has to few memory, so I switched to mod_rails. And again, no downtime since 6 month. What am I doing wrong? Oh, I’m using latest mongrel and ruby. If you have ruby 1.8.4 or 1.8.5 you may experience some troubles.

    Well, any tool (and even PHP) is cool if you know how to use it, and if you have enough skills to use it.

  9. Chris Heisel says:

    Let’s remember, the battle should be between Rails/Django and the titanic world of “Enterprise” computing with it’s massive cost in dollars, time, people and disappointment.

  10. Tom says:

    Thank you for your interest in UnSpun by Amazon. UnSpun has been shut down.

    Hehehe

  11. taelor says:

    i can has Merb?

    http://www.merbivore.com

    I think you might wanna try this out before jumping ship.

  12. admin says:

    Morgan – Wordpress is by far the best blogging platform out there. I’m not averse to using the best tool for the job.

    Pat – Sun glasses? Its hardly on the same level as NASA is it?

    Chris Heisel – Good point but there are many battles to be fought.

    Eisenhorn – Are you questioning my intelligence?

    malcontent & omouse – Thats flagrant prejudice and you should be ashamed of yourselves.

    Tom – Good to see Rails staying in the lead there.

    A couple of people have mentioned Merb. I may give it a go but Django’s admin interface just keeps on dragging me back to its warm bossom. So comfortable, plump, cosy and warm.

  13. Andres Riofrio says:

    Good point about Morgan’s comment; although I would really like to see an extensible blog platform in Python (and as polished as Wordpress).

    About malcontent’s and omouse’s comment, I don’t think they really think that. They might even be programmers themselves. I myself would say that (being a programmer, myself) if it were not because it’s insulting and exaggerating.

    I really wish the Python people would put some more style into their stuff. Why? Because… let’s put it in an analogy–albeit an inaccurate one. In the Catholic (and some Christian) religion, God is the unattractive at first, but right path. The Devil is the attractive at first, but ultimately damned path. So Python is like God (unattractive website, documentation, and entry) in comparison with Ruby, representing the Devil (eye-candy all over). Now, this is not blasphemy; I’m not calling Python God nor Ruby the Devil, it’s just an analogy. But, do you get my point? :-D

    And Django’s admin interface does that. :-)

    One more thing: PHP is the C of the web. (Discounting for speed.)

  14. Pat Maddox says:

    @admin – I’m not sure what your point is. You said that no big companies seriously use Rails. I’m pointing out that Oakley – a household brand name that does a billion bucks a year in revenue – is using Rails for all of their consumer-facing internet stuff. It’s certainly not NASA, but I’m not sure why that matters.

  15. Kevin says:

    So they run a website on rails and that is the same as say how Pixar uses Python? Or Eve Online (admittedly stackless, but still python)? Or (the already mentioned) NASA? Or the US Treasury?

  16. slack5 says:

    haha, RoR sucks and more and more posts are showing it.
    I’m just getting into Django (been using php for years) because I was looking for RAD and the only thing that comes close is Symfony (bloated as all hell). Didn’t want to touch RoR from what everybody was saying about performance and hacking. Django is kicking ass

  17. son of a silly person says:

    Interesting Microsoft vs. Apple analogy there.
    I’m one of those who thinks Windows just (fucking) works while Apple takes a lot of frustration and “dumbing down” to get used to. Each to his own I guess. Although Windows gives you much more control than Apple or even Linux (more options and stable ring0! Fucking awesome and unbelievable tbh).. But, it’s not cool to like Windows. I get it.
    You’re right about Django vs. RoR though.

  18. slack5 says:

    Windows has more options than linux!! what f*ck’n world did you come from??

  19. son of a silly person says:

    I come from the world of lazy people who don’t want to spend a month writing their own driver or app to get things working in their favour on Linux.

    Mention one thing you can do on Linux that you can’t do on Windows, that requires less than 10 hours of coding!
    I bet you can’t.

  20. slack5 says:

    First off, anything a user wants todo can be done in windows, linux and os x.
    Features linux has over windows – multiple desktops, terminal, fewer viruses/spyware, no need to reboot to install software/hardware, vmware runs faster, uses less resources, it’s FREE!!

    I’m on windows at work and have to reboot it a few times a week from all the extra crap running. I’ve never had to reboot linux ‘just because’.

  21. adwin says:

    Try .. GRAILS … it is fun … especially with Groovy :)
    I have nice experiences with this Grails thing … :)

    it lots fun to do in grails than in other framework.

    It’s java as well lol..

  22. EnlightenedOne says:

    I cannot believe there are people out there that prefer Django to RoR. Django is utter crap. There, I said it. And let me say it again. DJANGO IS UTTER CRAP. Development in RoR is sooo much faster and cleaner than using Django. All of you who disagree are morons.

  23. Bert says:

    Wow, just get closer to the processer and use c/c++ and the wt C++ library while bringing in whatever ORM thats makes you happy, even if its your own and build the system to your needs! There will always be things that dont fit your needs in a 3rd party package. Its like this everyone has always said if you want somthing done? Do it yourself!

  24. Erik says:

    One of the most entertaining and (partly) true posts I’ve read in awhile.

    (I’ll skip the kiss)

  25. Fox Maverick says:

    I’d like to say that Django is actually the most promising Web framework that i know.

  26. Jai says:

    Awww. Someone’s still a little butt-hurt from highschool.

  27. Nathan says:

    I agree with you – completely. I’m forced to work with Rails because my boss is a fanboy, and I feel like going on a murderous rampage every single day that I have to work in Ruby on Rails. Some of it is the language itself.

    From my experience where I work, the Ruby fans love it because they’re R&D guys, who just produce new sites, and never have to maintain or upgrade anything. They just palm that off to others. And that’s where RoR takes a massive shit on itself.

  28. slow down boys.. although it is highly entertaining.. :)
    no point to get all cocky here.
    Ruby is an awesome language, Python is an awesome language, C is an awesome language… English is an awesome language… Rails and Django are just social clubs for people who are not fluent in their language and need a speech therapist.
    No need to be all angry about those bloated MVC wrappers.

  29. Sheri Luoto says:

    Alot of bloggers not too happy with the new iPad.There was 2 much hype about it and lots of people got disapointed.Quite frankly, I for one see lots of the awesome potential of the device. Third-party applications for playing music, games, newspapers and magazines and FFS books, all sorts of neat stuff, but IMHO they just didn’t really sell it properly (aside from the books). It smells kind of undercooked

  30. Brandon says:

    @EnlightenedOne

    Obviously not too enlightened. Django is crap? You must be a masochist. Rails has so many bad design decisions in it, I’m surprised anyone would use it for anything.

    Try making a model called “resource” for starters. Convention over configuration is fine, for something simple. routes.rb is monolithic. Ruby embedded in HTML is the kiss of death. Scaffolding is pure trash. Shall I go on?

  31. Wayne says:

    I have dabbled in Django. I’ve used Rails for a real world project. What I’ve found is that Rails is great for quick, basic sites. Your typical CRUD bullshit like todo lists or contact managers. But after that if you want anything complex rails falls down. The only good reason for using rails is the community and slew of plugins that others have done. Chances are if I need feature X there’s a plugin for rails that makes it trivially simple to do. There’s no such thing out there for Django.

    Aside from that rails is a toy. It hides nearly everything from you so if something goes wrong you are left scratching your head. That problem doesn’t exist in django where you explicitly say what you want without many “magic” abstractions.

  32. Reggie Hero says:

    “geek with a peanut dick”

    Best line ever! I can’t tell you how much I hate rails and thanks for bringing some common sense and good arguments to the table.

  33. Brandon says:

    @Wayne

    I disagree that there aren’t any plugins for Django. There is: http://djangosnippets.org/ and hundreds of other Django projects like tagging, reversion, blogging, etc that can all make things trivially easy.

    Other than that, your assessment of Rails closely matches mine: it’s crap :)

    Cheers

  34. Wayne says:

    It’s not so much that rails is “crap” as it’s very intuitive and a hassle-free way of doing those basic CRUD sites. My problem is that whenever I want to do something that’s not quite your basic “user hits a link, sees a form, fills out form, hits submit, gets taken to the page” stuff, Rails seems to fight against me tooth and nail because I’m never exactly quite sure how I need to tell Rails to do what I want.

    When I played with Django (v1.1 I think so not sure if it’s changed since then) it was similar, but it felt like I was more in control. I had to say explicitly to get these items from the database, do these things with it, and display it to the user.

    Rails looks much cleaner and more natural; this I will admit. It’s ugly how Django handled form actions, for example (having to do an if request.POST to check if a form was a Post request? Yuck). I didn’t like having all my model data in one class (I suppose there’s a way to make that more like Rails and make the model class a bootstrap class, but I only played with Django a couple of days). But nothing excuses the “Let’s hide everything under cute English-like abstractions”. I really don’t see how it’s any better than the .NET guys who make applications using the drag-and-drop data wizards. When it goes wrong you’re left wondering “Hmm… where did it go wrong? And why?” because there are too many abstractions. Now, maybe they’re fixing that in Rails 3. I’m not sure.

    Finally, I think Ruby is just a little bit nicer than Python but at the cost of the community wanting to make it too abstract and too much like the 4GL of legend (where you can write English and it gets magically turned into code).

    To be honest the biggest reason I still plan to use Rails has nothing to do with Rails itself. It’s because of Heroku, the Rails cloud platform. It’s so easy to deploy and scale it’s ridiculous. But, more important for me, they have a FREE 5mb hosting plan, with no catch. I can use my own domain name. There are no ads or anything. It’s totally free. I’ve looked far and wide for something like that for Python, or hell .NET or PHP (where I live, it’s all .NET and PHP. No business uses Python or Ruby, Django or Rails) and the only ones that offer free are your legacy cheap hosting providers who make you use a subdomain and litter it with ugly banners, or make it so you can’t do anything but FTP. Heroku gives you full control. If I could find something similar, I’d leave Rails forever and never look back.

    IMO the problem isn’t Rails itself though, it’s the lazy programmers who LIKE being able to do 10 things with one line of code, at the cost of having no idea what each of those 10 things are doing. Yes, abstractions are good. But we’ve all heard of Leaky Abstractions, yes? Rails is the leakiest abstraction I’ve ever seen. Does that make it bad? Not always. But IMO it’s more the Rails hype machine than it actually being great. It’s a good framework, but it’s just a tool. PHP has good frameworks. Python has good frameworks. .NET has… well, it has ASP.NET MVC. Java has good frameworks… you get the idea. As I said before, Rails hides too much from the programmer, and calls this a good thing. Rails makes it look like you can do websites easy, and you can as long as ALL you need to do is read/write one, maybe two, entities to a database. If you need to do anything other than basic database access, Rails is a bear to use because of it’s conventions, and how it handles things internally. And that is where it sucks for real world business applications that tend to have a lot of logic and workflows. Very few Rails apps have anything like that, it’s just you grab a record, modify it, and save it. Nothing happens except for the DB stuff. There is no complex workflow to check the budget, for example, and if it’s over a certain amount it needs to be approved. Trying to do something like that in Rails is not as easy as the Rails hype makes it sound.

  35. Brandon says:

    Interesting points. My preference is to be more explicit with what I need the app to do. I don’t mind calling:

    if request.method == ‘POST’:

    to check for a POST, GET or XHR request. Form handing in Django is blissful compared to Rails from my perspective. I won’t comment on .NET – having been a .NET developer for a number of years before I found Rails, I can say, with complete confidence that .NET is utter tripe and .NET MVC is a word-for-word rip-off of Rails.

    Python has Google App Engine if you need to build something extremely scalable. Django + Nginx + Tornado = some really effing fast apps.

    All my opinions aside, I think both frameworks have very good ideas, but frameworks inherently have limitations, performance trade offs and you’re at the mercy of someone else’s code. I’m all for using the right tool for the right job. Even though I’m a staunch Djangonaut and Pythonista, I’ve deployed a WordPress site or two as well.

    Happy coding!

  36. тыия says:

    Я, хоть и не постоянный читатель, но всё же выскажусь. На ваш блог попал случайно. Однако нашел много чего нового и интересного. Так что, как говорится, пиши еще :)

  37. Hi, I also love the Shrek movies, awesome film!

  38. Jules Manson says:

    Oh man! I needed a good laff this mourning. I love egotistical, unhumble, in-your-face, fuck-you and fuck-the-world because you are you and you are not me and you are not as smart as me, blatantly arrogant, opinionated blogs.

    As a mechanical engineer who is a self trained PHP/MySQL/AJAX developer in training, who knows nothing past design patterns about computer science, I admit I am very ignorant.

    I have no guidance therefore I rely on opinions such as yours. And, I do read books from Sitepoint and Addeson Wesley for guidance as well. I hope that I am not making a big mistake by learning PHP. I suspect that PHP is the foundation for learning web application design.

    By the way your writing reminds me of this guy’s site retortnation.com. If you are not familiar with it please take a look at it. He too will leave you laffing out of your chair.

    Keep up the good work. And, I’ll be coming back to this site for some more good arrogant, self-prophesizing (is that a word?) webdev blogging and advice.

    Sincerely,

    Jules

  39. Qefx says:

    Ha, old post but still valid :)

    I switched from PHP to Rail to PHP and now i am at Django, ITS JUST AWESOME. I should had make the switch much much much much earlier :)

  40. We really dig what you write about here. I try and come back to your blog every day so keep up the good posts!

Leave a Reply