Slashdot Mirror


Rails May Not Suck

KDan writes "With astonishing regularity, articles or posts come out claiming that the popular Ruby on Rails framework sucks in some way or another. People complain that Rails isn't as easy to deploy as PHP, that Rails just didn't do it for project XYZ. They range from the articulate and well thought out to the frankly inane and stupid (and wrong). Recently, there's also of course been the spectacular nuclear rant by Zed Shaw, which was more a rant against random elements of the community than against Rails, but was still presented as a rant against Rails. Here's an article that tries to put some perspective on why these opinions are irrelevant to whether or not Rails sucks."

160 comments

  1. This just seems like nonsense. by morbiuswilters · · Score: 4, Insightful

    I am not a RoR developer, but I don't think the language or framework sucks. I've actually adopted a few ideas from it, but I still work much more efficiently in PHP as that is what I am familiar with. I have lots of respect for the guys at 37 Signals and the Ruby developers and I imagine it must be tiresome hearing about how much your language sucks. Still, this article is just worthless. The first two points seem to be saying "Rails isn't really unsuitable for your project because it is free and nothing is really perfect anyway." Then there's the logical fallacy embedded in the statement "If Rails isn't right for your project, that doesn't mean that Rails sucks. It just means that your project isn't right for Rails." Sorry, if Rails isn't right for my project, then that means Rails isn't right for my project. It's like trying to shift the blame for inadequacy from the tool to the task. I'm not buying it. The author then goes on to state that Rails is only for "smart people" and then makes the baseless claim like "It's much harder to fake being a good Rails developer than it is to fake being a good PHP developer." At this point, he's lost me. Listen, folks, Rails is the right answer some of the time and it's the wrong answer some of the time. Just like any language. SQL, Javascript, PHP, Rails, C, Java: they all have things they are good at and things they are bad at. The author at least gets that part right, but then goes on to undermine it repeatedly. At the end of the day, articles like this only encourage the detractors and scare away the uninformed.

    --
    I have come here to chew memory and kick ass... and malloc() is returning a null pointer.
    1. Re:This just seems like nonsense. by nschubach · · Score: 5, Informative

      Let me summarize the wall of text ;)

      Use the right tool, for the right job.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    2. Re:This just seems like nonsense. by morbiuswilters · · Score: 0, Redundant

      The 'Preview' button is sometimes the right tool and sometimes I even use it.

      --
      I have come here to chew memory and kick ass... and malloc() is returning a null pointer.
    3. Re:This just seems like nonsense. by Anonymous Coward · · Score: 0

      I don't think the author is trying to shift the blame from the tool to the task, but rather enforce the point that developers approach this from one of two standpoints. Either they have a tool in mind they wish to use already (and often will try in vain to squeeze an inappropriate task into it), or they are pragmatic and framework agnostic and will choose the tools that are right for the job. It *does* work both ways. Hence, your task may not be suitable for rails, and/or rails may not be suitable for your task.

      As for the comments about the 'smart' programmers. It's true that in order to full take advantage of Rails, you need to be pragmatic. Being pragmatic comes with experience, and learned knowledge (hence, smart). I believe this is a counter argument against comments that have been made on several blogs that blame Rails for making them write spaghetti code.

    4. Re:This just seems like nonsense. by morbiuswilters · · Score: 2, Informative

      I agree that developers often try to use the wrong tool for the job. However, I think statements like "your task may not be suitable for Rails" only reinforce that. It's implying that Rails is the goal and that kind of thinking contributes to so many awful technical decisions, for any language.

      You need to be pragmatic and smart to get the most out of any language, framework or tool. Rails can't make you write spaghetti code and I'm sure many people who bash Rails didn't take the time to learn how to properly use the tool, but that still doesn't mean that Rails protects against stupidity any more than PHP does.

      --
      I have come here to chew memory and kick ass... and malloc() is returning a null pointer.
    5. Re:This just seems like nonsense. by Anonymous Coward · · Score: 0

      But that was my point; for many developers IS their goal. Reading through many blogs, a great deal of the people posting anti-rails troll material are doing exactly that - making Rails the goal, attempting to produce a predetermined task from it without first evaluating Rails (and technology x, technology y, etc) and then blaming Rails for their fruitless efforts. In this instance, "your task may not be suitable for Rails" is both accurate and fair.

      Of course it's true that to get the best out of any tool you need to be pragmatic, however some tools are more forgiving than others. Rails is opinionated, and as such there are 'Rails ways' of doing things. Rails will not protect against stupidity, and in fact it's quite the opposite. If you ignore the 'Rails way' (for example if you manage associations and validations in your controllers), you will inevitably end up with spaghetti - but who's fault is that? Ruby/Rails is a mindset that differs from PHP, and those coming from PHP to Rails attempting to emulate their existing workflow will not enjoy the experience - flaming Rails in response is not entirely fair :-)

    6. Re:This just seems like nonsense. by Karl+Harbour · · Score: 1

      Use the right tool, for the right job.
      Of course that's right, but it doesn't mean a given language/platform shouldn't learn lessons from others. In my opinion, PHP has been successful because of the ease of integration with Apache. If the same was true for Rails, it would become the right tool for a lot more jobs, I think.
      --
      -- cat ~/signature: No such file or directory
    7. Re:This just seems like nonsense. by abigor · · Score: 2, Interesting

      Very true. Rails has deployment issues. See here, and especially read the comments: http://www.rubyinside.com/no-true-mod_ruby-is-damaging-rubys-viability-on-the-web-693.html

    8. Re:This just seems like nonsense. by tcopeland · · Score: 1

      > Very true. Rails has deployment issues. See here,
      > and especially read the comments:
      > http://www.rubyinside.com/no-true-mod_ruby-is-damaging-rubys-viability-on-the-web-693.html [rubyinside.com]

      That was a good read, thanks for the pointer. Though as one fellow pointed out, Java seems to have survived the lack of a mod_java. And mod_proxy_balancer + mongrel seems to be doing the trick for most folks. You're right, good comment thread on that one... thanks.

    9. Re:This just seems like nonsense. by Anonymous Coward · · Score: 0

      You know nothing! I hear Linus is going to rewrite the kernel using RoR. Ruby on Rails works for everything!!!

      yes I am kidding

    10. Re:This just seems like nonsense. by LizardKing · · Score: 1

      Java seems to have survived the lack of a mod_java

      That's because Java web apps are typically deployed on a app container behind either Apache using mod_jk, or a firewall using port forwarding rules. Both methods allow the graceful restart of a web app the app. The first scenario avoids the need for a "mod_java", as Apache is just proxying requests. In the second scenario, you typically run the app container on Unix using an unprivileged port such as 8080, and use port forwarding from port 80.

    11. Re:This just seems like nonsense. by CastrTroy · · Score: 2, Interesting

      Has it really? I don't think that Java has survived the lack of mod_java. There are very few webhosts that offer Java. And when they do, it's usually quite more cumbersome to use than PHP, because in certain configurations it requires reboots of the server to get it to reload the code. I would love use Java over PHP for my web page, because the API is just so much more organized, and I prefer compiled languages. Also the Netbeans IDE (or even eclipse) is much better than anything I've found for PHP (yes I'm aware that PHP can be done in Eclipse, but the feature set sucks).

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    12. Re:This just seems like nonsense. by tcopeland · · Score: 1

      > Has it really? I don't think that Java has survived the
      > lack of mod_java. There are very few webhosts that
      > offer Java. And when they do, it's usually quite more cumbersome to use than PHP

      Hm, yup, very true, Java's not a really player in the shared hosting space. I guess I meant that there still seem to be plenty of web apps written in Java... just not in the DreamHost-type environment.

    13. Re:This just seems like nonsense. by CastrTroy · · Score: 1

      Yeah, it works better in the enterprise situation, because you are more likely to have your own server, or at least your own virtual server. However, I think that Java suffers a lot, because people can't use it for their little hobby projects. PHP is only so widespread because it's so easy for everyone to just tinker with. If PHP didn't have that, I don't think it would have gotten anywhere.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    14. Re:This just seems like nonsense. by Jellybob · · Score: 1

      That's almost identical to how Rails works - so I assume you're just saying that there's no need to panic, and I'm inclined to agree.

      Sure, it takes a bit more work to set up a Mongrel cluster and proxy back to it, but once your done you have a more reliable infrastructure to work with. For example if your application goes down, it's not likely to take everything else on the same server with it, because you're not running within the proxying server.

    15. Re:This just seems like nonsense. by Karl+Harbour · · Score: 2, Interesting

      Has it really? I don't think that Java has survived the lack of mod_java.

      Quite. Apart from the lack of Java in the hosting space, let's be honest, the whole Apache->Tomcat connector story has been a sorry one indeed. mod_jk, mod_jk2 etc has been a real mess over the years.

      Where does this stem from? I think it is a case of the wrong tool for the job again in a way, this time by Sun.

      Originally Oak (Java) was designed to run on set-top boxes, where it made sense to have a long-running virtual machine. The web took off just as Java 1.0.2 was launched with a whole 6 packages. Not long after, Apache was the prevalent web server, and worked well for static content. Dynamic content was served by CGI, and that didn't work too well because every request required launching a separate process.

      So PHP comes along and quite nicely solves this problem by running in an Apache module, with the requests handled in forked Apache child processes (pre-fork MPM).

      This model doesn't fit with the virtual machine architecture of Java - you can't have multiple copies of the VM in each of Apache's children. So we end up with the mod_jk architecture.

      I used to think that the PHP MPM Apache children approach was a bad thing, compared to the ability to create threads, caches of shared data, database connection pools etc in Java. But the PHP shared-nothing architecture has definite benefits.

      For one thing, it gives you isolation. If one child fails, other children are unaffected. In my experience, the PHP architecture is more robust, for example, in the case of recovery from database failure. I've seen Java web apps where if the database is restarted, invalid connections stay in the connection pool and you have to restart Tomcat.

      Also, horizontal scalability is so much easier. Java has solutions to this, but it's a bit of a mess in some ways. Of course I don't think PHP is a better *language*, but the reason HTTP itself has been successful is because of its statelessness. The PHP shared-nothing architecture respects that, Java goes against it.

      That, in my opinion, is why PHP rules the roost on the public internet.

      --
      -- cat ~/signature: No such file or directory
    16. Re:This just seems like nonsense. by tkdtaylor · · Score: 2, Interesting

      Have you tried VS.PHP?
      VS.PHP IDE

      I'm pretty happy with it although I'm a .Net developer by day so I'm used to the IDE already.

    17. Re:This just seems like nonsense. by Anonymous Coward · · Score: 0

      I have lots of respect for the guys at 37 Signals and the Ruby developers and I imagine it must be tiresome hearing about how much your language sucks.
      Yeah, and it's pretty tiresome for the rest of us hearing about how much Ruby rocks. How about we call a truce and halt all language advocacy immediately?
  2. Why so defensive? Oh right, because it does suck by Anonymous Coward · · Score: 0

    what does it matter what other think anyway, if rails works for you, keep using it, otherwise there's something else that will work. Thats whats so great about choices and having opinions.

  3. Basically... by snoyberg · · Score: 1

    Rails doesn't suck because {insert boiler plate reasons of why rants against any language/framework are wrong}. I think he's right, but there's not much really Rails-specific in the article. In fact, there's hardly even anything countering the criticisms he points out.

    --
    Thank God for evolution.
  4. Submission may not suck. by Aladrin · · Score: 2, Funny

    May not suck... Wow, such strong verbiage. How can you possibly defend such a rigid stance?

    Next time you're trying to defend something, don't start from 'may not suck'. Try something a little more positive.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
    1. Re:Submission may not suck. by KDan · · Score: 1

      Actually the submission had the title of the article, "Rails sucks?", which I thought was a bit more catching, but oh well.

      --
      Carpe Diem
    2. Re:Submission may not suck. by theNeophile · · Score: 1

      May not suck... Wow, such strong verbiage. How can you possibly defend such a rigid stance?

      Next time you're trying to defend something, don't start from 'may not suck'. Try something a little more positive. It's humorous understatement, which may not be all that horrible.
  5. I don't get it by corychristison · · Score: 1

    Yes, people need to stop complaining that it doesn't conform to their ideas and values and it's "different".

    I don't know how many times it has to be reiterated: use the tool that suits your needs.

    To the author of the article, live and let live. If you enjoy Rails, use it. If you want to experiment with other languages, go for it! Nobody is going to cast you out because you crave knowledge.

    I use what I feel comfortable. I build do web design & development for a living. I feel comfortable in PHP as I can start from 0bytes to a full project with all of the problem solving logics coming from my own brain in PHP. I certainly don't rule other languages out, but I certainly am not as strong in them as in PHP.

    No... I don't remember the point of this post. If you can figure it out, would you let me know?

    1. Re:I don't get it by tbannist · · Score: 1

      Well, here's the issue:

      People have a project they think is suitable for use with Rails and then after spending a lot of time working on it, it turns out for some obscure minor reason, it just won't work. That's when reasonable people start saying "Rails sucks".

      Frankly, I won't even try Ruby of Rails, I've been down similar roads, and I don't feel the need to straitjacket myself into a self-limiting framework. Plus the only popular site I know that runs Ruby on Rails has a tendency to just break from time to time, despite the fact that they're not doing anything particularly complex with it. That's the type of reliability I just don't need.

      --
      Fanatically anti-fanatical
  6. Too Generic by roadkill_cr · · Score: 5, Insightful

    This guy's arguments are too generic for me. I don't personally use RoR, nor do I do web development, but I do program, and it seems to me that this guy's arguments can just as easily be applied to any free programming language:

    1. (Programming language) owes you nothing
    2. (Programming language) isn't perfect
    3. (Programming language) isn't suited for all applications
    4. (Programming language) isn't suited for all people

    The only point he has that doesn't necessarily apply to all languages is:

    5. Rails is extremely flexible

    I take the first four points as being self-evident for any programming language. It's actually a good list for explaining why there are tons of different languages out there. The reasons stated in the article explain *how* Rails matches with the first four points, but don't really explain why that makes it objectively *does not suck*.

    The fifth is the only one that seems to have any sort of Rails-specific content to it; and like I said before, I'm not a web dev so I can't comment on it's validity.

    Ultimately, I think the message that can be gleaned is this: that like every other programming language in existence, it is good for some and bad for others.

    1. Re:Too Generic by WaZiX · · Score: 3, Interesting
      you got much further then me... I abandoned this passage;

      In fact, there's no such thing as a perfect anything - whether in the world of computers or outside of it. Everything is imperfect. If you want perfect, then die. If the Christians are right, you might go to heaven and witness perfection. I wouldn't bet my life on it though. How can anyone be taken seriously after such a remark?
    2. Re:Too Generic by Bluesman · · Score: 1

      I know! He oh so conveniently leaves out the part about Hell and how committing suicide is a sure way to get you there.

      Fucker, I hope nobody listens to him and commits suicide, unless they're Styx fans.

      --
      If moderation could change anything, it would be illegal.
    3. Re:Too Generic by Anonymous Coward · · Score: 0

      Yeah, I don't take people who claim you might go to a perfect heaven very seriously, either.

    4. Re:Too Generic by n+dot+l · · Score: 2, Insightful

      Meh. I once saw a man state that the Christians are right and that they (and only they) will go to heaven and witness perfection. He said this several times, in fact. And more than a hundred people, all congregated around him, continued taking him seriously without any difficulty at all.

      The fact that bullshit "arguments" like this pass in religious settings is to be expected. The fact that they pass in political settings is to be lamented.

      People that think this crap will fly with a technical audience are to be ridiculed, mercilessly, until they either get a clue or fade away.

    5. Re:Too Generic by Anonymous Coward · · Score: 0

      why does it have to fly , get a grip and lighten up technical audience my a** superior people what nonsense intolerant antireligious bigotry

    6. Re:Too Generic by n+dot+l · · Score: 1

      The parent said "How can anyone be taken seriously after such a remark?" I answered that question with a legitimate case where people are taken seriously after making far more extreme statements. I hope you didn't confuse a mildly sarcastic tone with, well, all the things you wrote.

      The rest of my post attacks the use of emotion-based statements, as a substitute for arguments, in what should be logic-based debates. If you think I'm wrong and that tangential, irrational, and overly-emotional attacks do belong in political and technical discourse then say so clearly and back it up with some reasoning.

      Bah, who am I kidding, you're just here to call me names. Tolerance indeed.

    7. Re:Too Generic by Karl+Harbour · · Score: 1

      5. Rails is extremely flexible
      That may or may not be true, what I do know though is that Rails does like to impose its way of doing things on you. Isn't one of their mantras, configuration by exception, or words to that effect? Comparing ActiveRecord to Hibernate, for example: ActiveRecord effectively mandates your primary keys, Hibernate is surely more flexible, albeit with a lot more XML/annotations...
      --
      -- cat ~/signature: No such file or directory
    8. Re:Too Generic by Anonymous Coward · · Score: 0

      Tetris is perfect. I have witnessed Tetris. Does that mean I've died and am posting from Christian heaven?

    9. Re:Too Generic by The+One+and+Only · · Score: 1

      I think that was a joke. I think his point was that perfection is unattainable in the real world of computers and networking and Ruby on Rails.

      --
      In Repressive Burma, it's not just your connection that dies. slashdot.org/comments.pl?sid=314547&cid=20819199
    10. Re:Too Generic by arevos · · Score: 4, Insightful

      5. Rails is extremely flexible I'm a Rails developer, and I have to say I disagree with this. When you work within Rail's comfort zone, it's a joy to develop in. But start to edge outside those boundaries, and suddenly everything starts to fall apart. A lot of things that could be made modular are currently hard coded, especially in the monolithic and huge ActiveRecord. Rails is designed to work well given certain conditions, but try to do anything clever or unusual, and it's a toss up whether you'll get away with it without running into problems.

      Rails may be a nice framework, but flexible it ain't.
    11. Re:Too Generic by Anonymous Coward · · Score: 0

      I think that was a joke.

      Yep. Unfortunately, when the average Slashdotter reads anything about religion, the red mist comes down and he loses any capacity for humour, rational thought, tolerance of other people, etc, that he may have had.
    12. Re:Too Generic by VultureMN · · Score: 1

      It's Configuration by Convention; it makes certain assumptions.

      And ActiveRecord does not mandate your primary key. If you don't like the default, you can easily change it.

      The point of configuration by convention is that you don't have to manage a boatload of config files if you don't want to; all you need to do is follow the standard conventions. Again, however, you're not forced to do it that way if you don't want to.

      I've used Hibernate in the past, and am using ActiveRecord now, so I've got a pretty good basis for comparison. ActiveRecord also requires some annoying configuration if you have to use an existing schema, but I've got the luxury of working on a Brand New Project right now. Wee!

      (FWIW, the thing I don't like about AR is the lack of built-in support for foreign keys, but at least some clever folks have made plugins to support'em.)

    13. Re:Too Generic by OakDragon · · Score: 1

      Meh. I once saw a man state that the Christians are right and that they (and only they) will go to heaven and witness perfection. He said this several times, in fact. And more than a hundred people, all congregated around him, continued taking him seriously without any difficulty at all.

      Was it Jesus?

    14. Re:Too Generic by OakDragon · · Score: 1

      5. Rails is extremely flexible

      The fifth is the only one that seems to have any sort of Rails-specific content to it...

      And it's too general, still. It's like saying, "The Honda Element is a versatile automobile." Really? Maybe it is - what do you mean by versatile? Would you happen to know if there are some other automobiles that are versatile?

    15. Re:Too Generic by Anonymous Coward · · Score: 0

      I doubt that this person was around at the time of Jesus. Didn't you notice his seven digit /. ID?

    16. Re:Too Generic by Anonymous Coward · · Score: 0

      Was it Jesus?

      Yeah. That guy was so full of himself, then we nailed him to that cross. It was hilarious at the time, although is followers read a little bit too much into it.

    17. Re:Too Generic by Anonymous Coward · · Score: 0

      How can anyone be taken seriously after such a remark?

      I can't talk about it using my real name, because I'm in the "witness perfection program".

    18. Re:Too Generic by Tablizer · · Score: 1

      When you work within Rail's comfort zone, it's a joy to develop in. But start to edge outside those boundaries, and suddenly everything starts to fall apart. ... Rails is designed to work well given certain conditions, but try to do anything clever or unusual, and it's a toss up whether you'll get away with it without running into problems.

      This has been the case with *any* RAD (rapid app development) tool since the dawn of frameworks. Nobody has figured out how to solve this barrier. I've decided that the best compromise is lite-duty sub-frameworks that makes common features easy, but can be abandoned or re-coded when needed for a specific case. Their dependencies between each other need to be fairly light so that that you don't have to buy the whole barn if you just want a cow. This generally requires a scriptish language that is not anal over types. Over time you build of a library of little modules or functions that fit common needs or the style of a particular company.

      It would be nice if a kind of code-wiki was created to share such functions/modules/objects.

    19. Re:Too Generic by Karl+Harbour · · Score: 1

      And ActiveRecord does not mandate your primary key. If you don't like the default, you can easily change it.

      By change it, I assume you mean use another field.

      Perhaps I should have been clearer about what I meant.

      What if I want a compound primary key? Rails doesn't support that out of the box, although there is http://compositekeys.rubyforge.org/, so perhaps Rails is flexible after all.

      Similar comments apply to surrogate keys of course.

      I think there is a tension between what can be done with the framework, and the way DHH thinks you should use it.

      --
      -- cat ~/signature: No such file or directory
    20. Re:Too Generic by sasoon · · Score: 1

      Yeah ... just like Microsoft Access felt in 1999

    21. Re:Too Generic by arevos · · Score: 1

      This has been the case with *any* RAD (rapid app development) tool since the dawn of frameworks. Nobody has figured out how to solve this barrier. I don't believe this to be the case. Every problem I've found with Rails is conceivably fixable. A lot of it is just due to the Rails devs stuffing things into the bloated maw of ActiveRecord that really shouldn't be in there, and not separating out their methods properly. I have great hopes for some of the up and coming Ruby ORM libraries to replace AR with something rather leaner.

      Their dependencies between each other need to be fairly light so that that you don't have to buy the whole barn if you just want a cow. This generally requires a scriptish language that is not anal over types. Being anal over types isn't a bad thing, so long as you have a sophisticated enough type system to offer the developer. A good type system, like the one in Haskell, allows for very generic functions.
    22. Re:Too Generic by Raenex · · Score: 1

      It's Convention over Configuration.

    23. Re:Too Generic by pavera · · Score: 1

      Ever worked with Django?

      I agree with the parent post, in my Rails days, every headache I ran into had to do with hard coded, poorly designed "features" in ActiveRecord.

      I've since moved on to Django, and yes, the framework doesn't do *everything* for you. But it is specifically designed not to. The project has made decisions about quite a few things along these lines "Well, that's just too hard to get right for everyone, so its not in the framework here's how you do this directly, don't use the framework for x".

      In my opinion this is Rails greatest shortcoming. They are trying to make the framework do everything, and in so doing, they take some pretty serious shortcuts that then have the effect of mandating that you make poor design decisions or have a bunch of work to do if you need to do something *differently* than they have decided is the "one true way".

    24. Re:Too Generic by pavera · · Score: 1

      This is my number 1 complaint against Rails. I used it for a couple side projects, couldn't get anything done (yes I got it running, I wrote a bunch of code, but as soon as I got into the real meat of the projects, it just turned ugly).

      I moved to django, and all the walls were gone, I could concentrate on solving problems instead of staying within the lines that Rails draws.

      DHH's mantra of "convention over configuration" is what creates this problem I think. A lot of times a well designed configuration system can be much more productive, expressive, and flexible than even the best intentioned convention. Simply put, a convention decided by 1 or a few developers is not going to be the right choice for 100% of projects or systems. It probably isn't even the right choice for 50% of projects. However the Rails guys have the ego and audacity to declare "This is the one right way!".

    25. Re:Too Generic by Anonymous Coward · · Score: 0

      Bull shit. Rails is more flexible than any other web frame work your likely to come across. It has it's comfort zone, yes, for new programmers that want to generate an application. Those that want to do something clever simply have to learn enough to use work it in gracefully.

      In Rails you can do Expert stuff or you can do Beginner stuff. Just don't expect rails to do magic expert stuff for you because your a complete novice.

    26. Re:Too Generic by arevos · · Score: 1

      Those that want to do something clever simply have to learn enough to use work it in gracefully. How many Rails plugins have you written that significantly alter core classes? From the way you're talking, I'd guess zero.
  7. He convinced me that it does suck. by Anonymous Coward · · Score: 0

    So to sum up: "yes, rails does suck in many ways, but if you are only interested in low use crud apps and static sites generated using rails, then its ok". Gee, how insightful, that's kinda what all the "rails sucks" people were saying in the first place isn't it?

  8. Ruby by Fallingcow · · Score: 4, Insightful

    I'd never used RoR or even Ruby, but I was hearing a lot about it and I had a hobby project that I wanted to start on, so I bought an RoR book, and spent HOURS working on it. Then I gave up, having accomplished nothing, switched to Django (mind you, I'd never used Python before, either) and started getting stuff done.

    (Well, a more full story is: I started with Ruby, switched to Django, realized my host doesn't support it, tried Ruby again [now I understood the framework better, from using Django, but the language still looked like Swahili], then moved to CakePHP which IS supported by my host, realized how much easier and less-fussy Django was, decided "to hell with my host, I'll get a new one if I ever decide to take this code live" and finally went with that.)

    My hang up with RoR is the Ruby part. It's completely unreadable to me. Python, I could understand reasonably well before I even started reading any "learn Pythong" material. Same with most other languages. Any Ruby code beyond "hello world" and simple arithmetic looks like gibberish to me.

    However! My first language was Perl. People often complain about how hard it is to read, and I instinctively bristle a bit when they do, because to me, it's the easiest language to read. The reason? Perl code tells a skilled Perl coder TONS about what it's doing and how, but confuses newbies like crazy. Ruby strikes me as being much the same way.

    So, I understand why people who have taken the time to really learn it enjoy it so much, but for me it's so much easier to choose a framework that uses a "pick up and go" language like Python and be done with it. It does the same stuff, and I can get right to learning and working with the framework rather than dicking around with the underlying language.

    I'm really not trying to pick on the RoR people, nor being petty (really!). I know it's a good framework, and I know that if I took the time to learn it I would like it just fine. Just getting a perspective out there that's not "rah rah, RoR is the best thing ever!" or "boo, RoR ran over my puppy!"

    1. Re:Ruby by Takichi · · Score: 2, Funny

      Man, all these crazy names are hard to keep track of. At first I thought you tried and failed at Ruby, said "screw it" to the coding, and switched to spaghetti westerns.

    2. Re:Ruby by MenTaLguY · · Score: 2, Interesting

      The Ruby versus Python thing has puzzled me for a while: most people who prefer Python over Ruby seem to find Ruby unreadable, whereas most people who prefer Ruby over Python can read Python okay but don't enjoy programming in it. Both camps seem to disagree about significant whitespace, but it doesn't really seem to be the fundamental issue.

      Part of it may be Ruby's heavy reliance on higher-order functions. For a programmer with established habits it can be a problem in terms of the way you're accustomed to thinking about code. Imagine if Perl had special syntax for passing anonymous subs as arguments, and idiomatic Perl code used them for everything all the way down to most looping constructs...

      Do you think that's the issue, or something else?

      --

      DNA just wants to be free...
    3. Re:Ruby by LWATCDR · · Score: 1

      Well I think it goes a lot like this.
      1. Rails doesn't scale for me.
      2. Rails didn't make me a great programmer.
      3. Rails didn't make my hard task easy.
      A lot of it seems like they are upset that Rails wasn't magic.
      The problem with Rails is that I don't think it can live up to the hype. It sounds like a very good framework but people seem to think it is little short of magic. Kind of like XML , OOP, and 4GLs. They are not they are just tools and like every tool they have their good and bad points.
      Not everybody likes every tool. I have written Perl but I don't like it. I have written PHP and I don't like it a lot. I have written in Java and I do kind of like it. I have written in c++ and it was okay.
      How you feel about a language all depends on where you are at that time and what you are using it for. The same goes with frameworks.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    4. Re:Ruby by Anonymous Coward · · Score: 0

      dude.

      Ruby looks like gibberish..?? You've just told the world that you've never looked at it.

      Diagnostic messages.. well yes.. totally different story there.

    5. Re:Ruby by Just+Some+Guy · · Score: 2, Insightful

      Do you think that's the issue, or something else?

      OK, I'm not going to list ever language I've ever used or otherwise enter a bragging contest, but please just take me at face value when I say I've been around the block a few times. To me, Ruby "feels" like it's trying to be clever. I hate clever, not at first - no, it's fun when you're writing it! - but a year later when I have to maintain something.

      Put another way: my wife isn't a programmer but she can read a lot of my Python code. I'm perfectly at home with C, Perl, and various assemblers but I can't make heads or tails of Ruby. Yeah, I know that familiarity and experience goes a long way toward fixing that ill, but since I already have Python, I just haven't felt the need to make the effort to learn Ruby.

      --
      Dewey, what part of this looks like authorities should be involved?
    6. Re:Ruby by I+Like+Pudding · · Score: 1, Informative

      Imagine if Perl had special syntax for passing anonymous subs as arguments, and idiomatic Perl code used them for everything all the way down to most looping constructs...

      HMMMMMM...

      @sorted = map { $_->[0] }
                sort { $a->[1] cmp $b->[1] }
                map { [$_, foo($_)] }
                @unsorted;
      Now back to work with you! I want a ruby runtime that doesn't suck already.
    7. Re:Ruby by Unoti · · Score: 1

      Ruby looks like gibberish..?? You've just told the world that you've never looked at it.
      Here's some Ruby code.

      def self.style(*args)
      [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
      end

      Looks a little jibberishy, honestly. But as I ranted about elsewhere, it's up to the programmer to make the code clear when it needs to be. It depends on who your audience is for reading the code. If they can handle stuff like that above, then great. But if it's gonna baffle them, then consider making it easier to understand.

      It's up for argument, perhaps, but I wouldn't dismiss GP's claim that Ruby can look like jibberish. Much of the Ruby code people wave about in Ruby is overly black magick-y for my taste.

    8. Re:Ruby by MenTaLguY · · Score: 1

      That doesn't count because the syntax is a special case just for those functions. :)

      But ... yes ... back to the Ruby hacking...

      --

      DNA just wants to be free...
    9. Re:Ruby by Fweeky · · Score: 4, Insightful

      Ruby code beyond "hello world" and simple arithmetic looks like gibberish to me. Ruby looked like gibberish to me, too. Coming from ARexx (heh) and PHP, with a bit of C etc, seeing:

      %w{foo bar}.map {|e| e.upcase }
      Simply didn't mean anything to me; map? What are those {}'s doing? What's |e|? What the fuck's %w{}?! It's bit of a triple-whammy really; first you've got a bit of perlish shorthand (%w{foo bar} == ['foo', 'bar']; make an array containing these words), second you've got a code block with slightly Smalltalkish parameter syntax, and third you've got an unfamiliar verb "map".

      But you're right, once you actually grasp some of the concepts (and if you don't know about things like map/select/reject/inject (reduce), you really fucking should, I don't care what language you use) and the basics of the syntax, it all just flows; make an array, make a new array from it by running the upcase method on each element, just like:

      array_map('strtoupper', array('foo','bar'));
      Only it doesn't fall to bits when you want to do non-trivial things to the elements. After that, it's mostly getting familiar with what the other methods do and getting used to using/chaining them. If it doesn't go from confusing to obvious or even useful outside Ruby in an hour or two, you're probably doing it wrong.

      Similarly when it comes to things like metaprogramming; it starts off confusing and ends up being a force multiplier for your work. The confusion hopefully means you're learning something new, and you don't become a better programmer by running away from that.
    10. Re:Ruby by bcdm · · Score: 1

      And here was me thinking he had switched to jazz guitar.

      --
      I can has sig?
    11. Re:Ruby by bockelboy · · Score: 1

      I don't claim to read Ruby, but are you saying that it's just running uppercase on each element of the array? A = ['a', 'b', 'c'] B = [entry.upper() for entry in A] Ta-Da!

    12. Re:Ruby by Cthefuture · · Score: 1

      Python, I could understand reasonably well before I even started reading any "learn Pythong" material. Just a quick observation. I have noticed lots of people mistype Python as Pythong. I do it nearly every single time I type out the whole name. Why is that? It must be something about the pattern of letters or something. Anyone have any ideas?
      --
      The ratio of people to cake is too big
    13. Re:Ruby by Fweeky · · Score: 1
      Yes, pretty much, but the general idiom is the ability to easily pass blocks of code to methods; the common use of map/select/reduce-style transformations on enumerations is just one of the results. e.g. you could write map like so:

      module Enumerable # included in most things that respond to each()
        def mymap
          raise ArgumentError, "No block given" unless block_given?
          a = []
          for item in self # equivilent to self.each do |item|
            a << yield(item)
          end
          return a
        end
      end
      Obviously the general ability shown here allows for a lot more than just operations on lists; they're used for event handlers, resource management (e.g. open a file at the top of the method, pass it to the block, ensure you close it afterwards), logging, exception handling, etc. You can do much the same in many other languages, but you end up writing "lambda" everywhere and it's not considered very idiomatic.

      Smalltalk goes one step further with this concept: even "if" is just a method on a Boolean object, with blocks passed as named arguments ifTrue and ifFalse.
    14. Re:Ruby by Fallingcow · · Score: 1

      I'm pretty sure that my problem was trying primarily to learn the framework, and to learn the language only as necessary. Similar strategies taught me PHP to a fairly high level of proficiency, and it really worked with Django/Python (at this point, in fact, I'd say that I know more Django than I do Python, if that makes sense, but my lack of Python knowledge has only rarely hindered my use of Django)

      With RoR, though, all I accomplished was to confuse myself on what should have been an easy-to-grasp topic (Rails) and to fail miserably to learn any Ruby at all. I'm thinking that this will be one of those languages where I'll actually have to buy a book or two on the basics, and really read them (there's my one real, actual complaint about the language: there's a lot of "how-to" material online, but its coverage of the topic is spotty, and 90% of it is "how to write Hello World", so you have to wade through a bunch of shit so that you can maybe, maybe find something sort of like what you actually wanted to know. PHP, Python, Perl, etc., all wipe the floor with it in terms of online documentation and support)

    15. Re:Ruby by bitingduck · · Score: 1

      I came to RoR relatively from scratch-- there was some web stuff with a database backend that I wanted to do and I hadn't done much programming in a while, and no web programming at all. I've done a *lot* of C and Pascal (and even a little Forth. ick) for data acquisition and analysis, but hadn't done any web stuff. I looked at a bunch of different things and went through some decent books to learn various new things. Coming at it almost completely from scratch I ended up liking RoR quite a lot and found it very easy to figure out how to do what I needed to do and have the development be manageable, since it was all in my spare time.

      A summary of my probably poorly informed opinions in sort of chronological order:
      C++: I took a look at it years ago but didn't have much I needed to do with it, and felt like it made it easy to obscure Really Bad Things (TM) so I didn't really consider it for this project.

      Java: initially seemed to be a likely choice, since I wanted to do a database backed web app that was fed by a bit of spidering. I went through the better part of what seemed like a decent book (with K&R being my reference standard for excellent book to learn from), and decided that a) Java was a little annoying because it took a ton of files to get to "Hello, World" (I may be totally wrong about that) but it did improve a lot on the things I didn't like about C++. It also didn't make my problems obviously more tractable, since I didn't immediately see useful libraries to help reduce the amount I would have to do from scratch.

      Using a CMS as a base, and writing my own module: Took a look at a few PHP based ones, went through a PHP/MySQL book. PHP4 is easy, but feels too much like BASIC. PHP5 might be better, but I didn't get there, and I started getting the impression that OOP added onto procedural languages leads to clumsiness. PHP also ends up mixing code and display a lot, which also bothered me.

      Perl: Seemed at first like the last language I would ever have to learn. You really can write any language in Perl. CPAN has a lot of nice modules, but I did start running into situations where new versions of one module would break another in a way that was getting frustrating for a relative beginner. Some modules are quite good, though, and it was very promising. Found a good book on Perl and MySQL development for the web that addressed most of what I wanted to do pretty well. Poked a little further and found Catalyst, and thought it would be really useful-- I had used frameworks before (including an OO one written in ANSI C, which was confusing the first read through, but eventually made a lot of sense), and thought it would be great to have all the mundane stuff taken care of by the framework. I got really frustrated installing it though, because there was always some bunch of tests failing, sending me back to try to fix things. Argh. Almost there.

      Rails: Almost on a whim I decided to try Rails. I could do what I wanted in Perl, but some of the tools were clumsy, or I'd have to code a lot from scratch. I went through one of the web tutorials using Locomotive, and it actually seemed to work, behave, and do what I wanted without a lot of fuss. It looked a little funny. I got a little more into it and shelled out for the Agile Book-- it seemed too good to be true. I started actually working on the thing I wanted to do and made a lot of progress fast. Then I discovered things that were either a little awkward to do, or seemed a little clumsy either in how I had understood how to do things or how it would behave. And I discovered that I had learned enough in getting to each sticky point that I could rework things quickly to be better behaved. The main things I like about rails are that the MVC structure is strongly reinforced by the language and framework so it makes it easy to keep things where they should be and it's relatively easy to rework even something quickly (even major changes in the models and database) without breaking a bunch of things. I find that I

    16. Re:Ruby by Fallingcow · · Score: 1

      Yeah, I caught that AFTER I previewed.

      I think it's a combination of:

      several other common words with that combo ending in "g" (long, wrong, song, thong, bong, etc.)

      and, if you type the way I do, the left index finger naturally hangs between the "t" and "g" after hitting the "t" in "Python", so it's poised to make that stroke.

    17. Re:Ruby by Fallingcow · · Score: 1

      I'll still probably come back to Rails at some point. I'll just need a month or so alone and a couple of hobby projects that I want to start, and that'll do it. I really do know that I'd love it if I took the time to learn it.

      You might check out Python, if you haven't. IMO, it's a great "generic" language. Say, you want to learn to use the WXWindows GUI toolkit, but you don't know which language you might need to use it in in the future; grab the python packages for it and go to town. 99% of your code will be specific to the WX library, and Python will just stay the hell out of your way. That's how I picked up Django so quickly; the MVC framework concept isn't difficult, provided you either already understand its base language or you don't need to understand its base language. Rails seems to require the former, while Django is more like the latter, largely due to the cleanness, simplicity, and all-around orthodoxy of Python. Unlike, say, PHP, it's not specialized too much in any one area, and is good for anything from web-based apps to OpenGL games, which makes it even better as a stand-in when you need to learn a given library or technology.

      Also, PHP5 is better than 4. It's also got some MVC frameworks, if that's your style (I like CakePHP) and tons of libraries for templating, which might help that code/display problem you were talking about. As with Perl, PHP can be clean and elegant, but it enforces practically no style of any kind, so its up to the coder to keep the code out of spaghettiville. Not saying you should go back to it from Ruby, of course, but some of the language's biggest problems DO have solutions now.

    18. Re:Ruby by Fweeky · · Score: 1

      Well, Ruby introduces concepts you may be unfamiliar with, not just new syntax, but it shouldn't be that foreign once you have the basics down? I'd be interested in some examples of what sort of things confuse you, though; I probably take for granted many things now that confused the hell out of me when I started but don't remember :)

      I do think "learn the framework not the language" is a dubious strategy, though; I tend to learn by starting small, with code I can understand and keep in my head, and build up to working with larger systems so I'm not swamped with a lot of stuff I don't understand, and I think that's especially important when you're not familiar with all the concepts that underpin something. You don't learn C by starting with the Apache Portable Runtime or GTK, you start with a 5 line hello.c using stdio.h, especially if you've never used a language with pointers before ;)

    19. Re:Ruby by c618656fa053510d1984 · · Score: 1

      No, it isn't a special case.

      sub foobar(&) { my $f = shift; $f->(); }
      foobar { print "Hello World!"; };

    20. Re:Ruby by epine · · Score: 1
      The debate about surface syntax goes all the way back to the APL / COBOL schism.

      There is no question that APL code was *too* dense for comfort. On the flip side, it was impossible to program in APL seriously without improving your thinking skills. APL is like the monolith in 2001. Fall asleep beside it, you wake up with a headache, smarter than you were before, forever permeated by the orthogonal "om" of higher dimensionality.

      COBOL's major intellectual contribution to the world was selling a lot of IBM's green and white printer paper. I've heard the Dr Seuss edition of Einstein's general relatively has an exceptionally low fog index.

      The natural evolution of a programmer's expressive intellect is away from simple statements (with embedded side effects) and toward compound, side-effect free, functional expressions.

      The complexity of code that matters is the complexity to reason successfully about the code's correctness. The syntax of the statement is chicken feed, unless it actively discourages reading.

      Dijkstra defined the best criteria I've ever seen for what makes it possible to reason about a chunk of code (embodying an algorithm) successfully: can you point to any execution point and write down a correct invariant expression of what must be true whenever that execution point is crossed?

      This is the reason why I adopted the practice of writing code like this:

      int things_done = 0;
      char* p = NULL;
      for (;;) {
      *p = malloc (BUFSIZE);
      if (p) {
      if (do_something (p)) ++things_done;
      }
      if (p) free (p);
      /* invariant false HERE only */
      p = NULL;
      }

      At every execution point, you can write the invariant that either p is NULL, or p contains a valid pointer from malloc(). *Except* exactly the one point in the code flow where the next statement serves the purpose of re-establishing that simple invariant.

      If p fails to malloc() I don't bother to create an error pathway. I just use it as a guard against the code that follows. Do nothing is cheap. You'll fall through to the bottom in no time. At the bottom, test whether the routine accomplished its tasks.

      Fewer error pathways, simpler invariants. You get what you pay for. Avoid side effects, and always always always handle zeros and empty structures correctly.

      By the time you get to this point in your coding evolution, you'll be wanting to write your statements in functional map/reduce form, because that is all that remains to express, now that the code is reduced to its Dijkstra essentials.

      An accessible surface form matters most for code that is either badly specified or badly commented, forcing you to read the code to determine the code's intended purpose. Reverse engineering purpose from the code itself is not a higher zen-fu coding practice.

      Accessible surface form becomes a minor concern if you are reading code to determine whether the code correctly implements a specification you already comprehend.

      Migrating between PHP and Ruby, it's the difference in surface form you must first surmount. Sometimes the immediacy of a challenge is confused with the magnitude of the challenge. We tend to overestimate comfort and underestimate utility.

      http://www.asktog.com/SunWorldColumns/S02KeyboardVMouse3.html

      Consider, though, the primary goal of making people more productive. How can someone spending twice as long at a given task be more productive? They can't, particularly when one considers the reason the subjective time seems so short: the intensity of the user's total mental engagement in performing the manipulation. Under such circumstances, the user must set aside the original task of writing or editing a document in favor of figuring out what key to press and how many times to press it. While the mouse users are dragging and pressing a

    21. Re:Ruby by Coryoth · · Score: 1

      Dijkstra defined the best criteria I've ever seen for what makes it possible to reason about a chunk of code (embodying an algorithm) successfully: can you point to any execution point and write down a correct invariant expression of what must be true whenever that execution point is crossed? This is the reason why I adopted the practice of writing code like this... For me it makes a language like Eiffel, which actually lets me write down invariants (for loops, for functions, and for objects) as part of the code that will (1) get used in testing (2) properly get handled in inheritance cases etc. (3) get used automatically in the API documentation. It makes things nicer for all involved (your assumed invariants will get checked in testing, and anyone else using your code will get the benefits of your documented invariants both in the documentation and in testing.
    22. Re:Ruby by Per+Wigren · · Score: 1

      I had no problem reading that code, but I've been coding Ruby for about 5 years. It's like regular expressions, hard to read but extremely powerful. Ruby can be VERY readable though, almost like plain english. It's up to the programmer to make her code readable.

      --
      My other account has a 3-digit UID.
    23. Re:Ruby by I+Like+Pudding · · Score: 1

      Correct. You can also pass them like:

      sub foobar { $_[0]->() }
      foobar sub { print "Blave\n"}

    24. Re:Ruby by MenTaLguY · · Score: 1

      Ahh, you're right. I'd forgotten about Perl prototypes.

      --

      DNA just wants to be free...
    25. Re:Ruby by MenTaLguY · · Score: 1

      That's not special syntactical sugar, though. GP's thing (prototypes with sub arguments) was what I had in mind.

      --

      DNA just wants to be free...
    26. Re:Ruby by DragonWriter · · Score: 1

      I'm thinking that this will be one of those languages where I'll actually have to buy a book or two on the basics, and really read them


      If you are averse to buying a book, the first edition of the main Ruby language reference book (Programming Ruby, aka "the Pickaxe") is available online for free (a few things have changed since then, but unless you are using 1.9.0 you probably won't run into many of them).

      If your concern with learning Ruby is just for Rails (which sounds like it may be the case), you might be better off (though it takes buying a book) to just pick up Agile Web Development with Rails, which is to Rails what the Pickaxe is to Ruby, and, while its mostly focussed on Rails, contains a section on Ruby basics for people for whom Rails is their first exposure to Ruby. I'd recommend AWDwR to anyone interested in Rails, anyhow.

    27. Re:Ruby by Abcd1234 · · Score: 1

      Ugh, another sad person who's clearly never been introduced to Smalltalk. Please. If you want to be a programmer (and maybe you don't, but if you do), you'll do yourself a *huge* favour by learning at least two languages: Smalltalk and Lisp. From there (plus the C/Algol camp) all else flows.

    28. Re:Ruby by Anonymous Coward · · Score: 0

      Oh great. I'm the admin for a small (2000 domains) hosting service.

      I support the latest PHP and Perl. I don't support python or ruby for web development. I don't support java for web development. I don't support postgres, I only support MySQL.

      I believe in the 20/80 rule.

      If your client/employer has trouble finding a host for his site after you've done the scripting in a combination of Ruby on Rails and an extinct dialect recently discovered on tablets in a Sarcophagus unearthed by a wind storm, don't blame me. Blame the kid.

    29. Re:Ruby by Eivind+Eklund · · Score: 1

      That doesn't count because the syntax is a special case just for those functions. :) No, it isn't. You can do this for any function by using perl prototypes.

      Of course, as always, perl has no reasonable parameter passing. And it doesn't work with method calls, as prototypes are disregarded for method calls. You can reasonably discount it for that - but in theory, it isn't special for map/sort.

      But ... yes ... back to the Ruby hacking... Good choice :)

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
  9. "[Open-source project] owes you nothing" arguments by julesh · · Score: 4, Insightful
    Why does this argument, or something like it, always get repeated when somebody criticises an open-source project?

    The Rails core team also doesn't owe you anything. They are all volunteers who work on it for free. You owe them.

    So stop thinking that Rails owes you something. Rails owes you nothing. You owe Rails.


    In what way does criticising something suggest I think its authors owe me something? I mean, I'm highly critical of the GIMP at times, particular its Windows "port" which fails to adhere to anything remotely resembling platform standards, but does that mean I think the GIMP's authors _owe_ me something? No. If anything, it means I _hope_ to be able to _give something back to them_ by making criticisms that they could take and use to _improve their software_, which presumably they do care about. It means I don't recommend people try it unless they're willing to accept software that behaves in odd ways.
  10. Sucks is a bit hard... by Anonymous Coward · · Score: 0

    ...but exactly why is the namespace within the controller so polluted?

    Why can't I name a instance variable @template? (Just an example among others.)

  11. There is no magic bullet. by Richard+Steiner · · Score: 1

    Every programming language/framework has its own set of advantages and disadvantages. The trick is determining if a given language and/or framework does what you want in the way you want it done.

    There are reasons my employer doesn't use Java everywhere, for example, and reasons why C or C++ is preferred in some contexts at my workplace while other languages are preferred in others.

    In other words, it's quite possible that a given solution works very well for some people and can't cut it at all for others. One size of development tool does NOT fit all.

    --
    Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
    The Theorem Theorem: If If, Then Then.
  12. Like I always say by hey! · · Score: 4, Interesting

    You never really know a system until you hate it.

    Of course, hating a system doesn't mean you know it. You can hate a system in a completely uninformed way.

    Now back when I got involved with computers, in the 70s, it wasn't like this. We didn't have frameworks, we had libraries. Either a library met you needs and you used it, blessing its authors, or it didn't and you didn't use it. Of course people didn't expect much from applications back then, either. Programs by in large just started up, did something useful, then went away. There was a whole "software tools" philosophy built around this very idea: write programs that do one thing (usually some kind of filtering task), then go away.

    By contrast all but the meanest programs today look like operating systems. They're supposed to run forever an take god knows what input from god knows where and do precisely what the designer wanted them to do, plus whatever he would have wanted them to do if he had had the foresight, but nothing else.

    And you've got to choose a framework. It's not just diving into a program and deciding you need something that's in a library somewhere. It's not just choosing a framework before you really know what your application has to do. You've got to choose the framework before you interview for the job. So really, life as a programmer involves relatively less solving of real problems and relatively more finding ways to hammer square pegs into round holes.

    It's not that writing software is any less fun than they were back in the day. It's that on top of being fun its goddamned annoying.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    1. Re:Like I always say by I+Like+Pudding · · Score: 1

      Now back when I got involved with computers, in the 70s, it wasn't like this. We didn't have frameworks, we had libraries. Either a library met you needs and you used it, blessing its authors, or it didn't and you didn't use it. Of course people didn't expect much from applications back then, either. Programs by in large just started up, did something useful, then went away. There was a whole "software tools" philosophy built around this very idea: write programs that do one thing (usually some kind of filtering task), then go away.

      Sounds like vi.

      By contrast all but the meanest programs today look like operating systems. They're supposed to run forever an take god knows what input from god knows where and do precisely what the designer wanted them to do, plus whatever he would have wanted them to do if he had had the foresight, but nothing else.

      Sounds like Emacs.
    2. Re:Like I always say by hey! · · Score: 1

      I use both. If vi had a macro system that was as easy to use and powerful as Emacs, I'd use vi exclusively. If I weren't an old dog reluctant to learn new tricks, I'd use vi and perl for the stuff I use Emacs for, I suppose.

      Back in the day before GUIs and IDEs, Emacs was a great choice for a programmer's shell. It gave you windows (well, buffers) , and a pretty good shell language.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  13. The only measure I know of by which Rails sucks... by Qbertino · · Score: 0

    ... is the "Hype vs. Mature Usable Open Source Projects Built With It (TM)" Ratio.

    By that Rails sucks, Ruby sucks even more, Django and Zope suck a little, TurboGears, etc. suck, Python itself fares quite well and PHP kicks everybody elses ass, Java included.

    That aside it's pretty much a matter of taste and how well the core community is willing to push their product. Rails practically lifted open source project marketing to a whole new level - they deserve the attention they get. It's up to the ones using these webkits to seperate hype from reality.

    --
    We suffer more in our imagination than in reality. - Seneca
  14. Usual OSS criticism argument... by Bri3D · · Score: 1

    This is 100% exactly the same argument presented whenever an Open Source app is criticized.
    Shut up about it!
    How about instead of whining about people whining about their software, Rails advocates fix some of the issues causing arguments against their framework? Most of the people whining aren't capable of writing their own code to fix their problems with Rails, but their rants should be taken as SUGGESTIONS by the developers, not railed (no pun intended, seriously) against by a community full of zealots.
    The same applies to all of the OSS fanatics who make this argument about *every* *single* *piece* of software, ever.
    Yeah, sure, people should be a little more grateful.
    But does the project being free protect it from criticism? It shouldn't.

    1. Re:Usual OSS criticism argument... by Chandon+Seldon · · Score: 0, Flamebait

      How about instead of whining about people whining about their software, Rails advocates fix some of the issues causing arguments against their framework?

      How about not.

      I'm developing an app in Rails right now, and it's meeting my needs perfectly. If I have problems with it, I'll fix them. If you have problems with it, you fix them.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    2. Re:Usual OSS criticism argument... by An+Onerous+Coward · · Score: 1

      To the extent that it's their project and their time, they aren't obligated to listen to your complaints, much less fix them.

      To the extent that the creators claim that other people should use their project for some purpose, then their reputation ought to be influenced by how well it lives up to those claims. But they're still not under any obligation to fix your issues or add missing features.

      To the extent that criticisms are made in abusive, insulting ways, then the developers are big damned heroes if they can sift through it for any kernels of truth.

      Nobody is saying that we can't criticize, but your criticism should be tempered by the fact that it's not your project, and the developers might not share your vision or care about your opinion.

      --

      You want the truthiness? You can't handle the truthiness!

    3. Re:Usual OSS criticism argument... by Bri3D · · Score: 1

      This is basically exactly what I was trying to say. Flaming projects is lame, but the projects' zealot following flaming back claiming that "you should fix it yourself" is just as lame. Many people can't fix it themselves: they are USERS. The project can not listen to their users if they want, but their rabid fanbase shouldn't flame the other users simply because they're pointing out a project's shortcomings.

  15. this article is useless by Some_Llama · · Score: 4, Funny

    unless i get a description of the author's prowess in martial arts and ability to kick my ass in a general time frame (10 seconds? 2 minutes?).

  16. Re:The only measure I know of by which Rails sucks by nonsequitor · · Score: 1

    That's a good measure for those who have no intention of developing with the technology. However when I evalute something's technical merits, I actually try to make something with it.

    If it handles certain tasks better than other methods I know, it's useful.

    If it assumes too much about how I'm supposed to use it, its much less useful. Not being thread-safe, not having both blocking and non-blocking versions of certain API calls, etc are all points against a product. I also grade on elegance of design. There's an old saying, what do you get when you mix 100 gallons of ice cream and a teaspoon of shit. 100 gallons of shit. If the layer below the one you're writing is poorly designed, the design flaws will invariably propogate upward.

    One last point about these "easy to use" frameworks geared towards the average folk. The more complex details you hide trying to make it simple to use, the easier it becomes to use it wrong unknowingly. There is no silver bullet to get around algorithm efficiency, and a properly ingrained understanding of how computers solve problems and how to classify various problem types. Teaching someone to use an over-powered IDE and giving them a certificate which says that they know how to make programs that run, is no assurance that those programs will run well.

    The author of the opinion piece said Rails helps smart people write a certain type of program faster. That is an arrogant statement, there are plenty of smart people without the formal training the author has had which probably use Rails poorly. It would have been more accurate to say, "Rails helps people who think a certain way accomplish a limited subset of tasks faster."

    The more I read, the more both sides of this drama sound like elitist pricks, which can be an epidemic among web communities. Some very smart people over compensate for not having been popular in High School and create exclusive online communities rather than inclusive ones, these people tend to handle any criticism very poorly. Of course these people get worn down by people demanding so much from them without ever offering any compensation for their time.

    If you want a good measure of what sort of people are in a given community, go to their IRC channel and ask a question from their FAQ.

    (Disclaimer: not a web developer, never used Rails, no plans to in the near future)

  17. still waiting to use it... by abes · · Score: 1

    I've mostly liked RoR, from the small amount I've used it. I'd use it more, only I keep starting projects with it, realize it's probably not the right tool, and then switch to something else.

    Part of the problem might very well come from the fact that I have very little experience with it (catch-22?). The thing is, from what I can tell, it's really specialized. I never had this problem with PHP or ModPython.

    The article itself is a bit annoying, as it's about as vague as one can get. For us unenlightened, *when* is the proper time to use RoR? I get it's DB driven. So if you have to write a store, library, or /., you're good. But how does it fair for more general apps?

    One of the big things that worries me is that there are a lot of files generated. That scares me. What if I made a mistake at the beginning? Is it easy to go back? Do I need to start from scratch?

    I'm sure there is documentation somewhere that mentions that, only I haven't found it yet. I've come across plenty of 'how to start' articles, but not many that really get at the architecture design as a whole. Though, this seems fairly status quo for web-development.

    As other posters have noted, many of these complaints/thoughts come from RoR being a framework. I wonder if it would be possible to re-create RoR, but in a more library-form. User has to do more work (no generated files), but more flexibility in the long run?

    1. Re:still waiting to use it... by tcopeland · · Score: 1
      > One of the big things that worries me is that there are a lot of
      > files generated. That scares me. What if I made a mistake at
      > the beginning? Is it easy to go back? Do I need to start from scratch?

      Yup. Most of the files that are generated are just enough to get you started. For example, generating a simple "person" model class gets you this:

      $ ruby script/generate model person name:string birthday:date
      [... some output ... ]
      $ cat app/models/person.rb
      class Person < ActiveRecord::Base
      end
      You can add methods to this file as you see fit. And the outline of a test class - a fine practice to get into - is generated as well:

      require File.dirname(__FILE__) + '/../test_helper'
      class PersonTest < ActiveSupport::TestCase
        # Replace this with your real tests.
        def test_truth
          assert true
        end
      end
      They're just scaffolding to eliminate some unnecessary typing. Enjoy!
    2. Re:still waiting to use it... by abes · · Score: 2, Interesting

      As long as you don't change the DB too much. Obviously since you are creating a class representation of the database, how much gets altered will certainly muck things up.

      It seems that RoR makes heavy reliance on this relationship, which is where it gets it power, has a literalism that disallows abstraction to easily take place. I might be able to abstract the data well enough that it doesn't matter how its held in the SQL DB in a different language/framework/library. However, I'm going to assume that RoR isn't meant for that type of coding.

      I've just started to read up on Cocoa's Core Data, which has some similarities. Though it has a GUI in order to map the relationships. There's definitely power in relationship mapping for data. Going back to abstractions, it would be interesting to see a more general approach taken with Ruby that would do more than just SQL databases (unless it does, and I'm just missing something).

    3. Re:still waiting to use it... by Fweeky · · Score: 1

      The thing is, from what I can tell, it's really specialized. I never had this problem with PHP or ModPython. Stop comparing Rails to languages, you fucking morons *headbutts wall until you all stop*

      Of course it's specialized, it's an opinionated web framework for writing web applications in a certain style; on "rails", if you will. If it doesn't suit you, use a different framework, or no framework like you'd do with PHP or Python. Why is that so difficult to grasp when it comes to Ruby?

      But how does it fair for more general apps? You mean, without a database? Stateless, or what? Chances are you have data; you can just disable/not use ActiveRecord and have your models for the data do other things, with a similar interface to keep validation, creation, searching etc easy.

      One of the big things that worries me is that there are a lot of files generated. That scares me. What if I made a mistake at the beginning? Is it easy to go back? Going back is what revision control is for; if you're not using it, sucks to be you, though the boilerplate's trivial enough to regenerate/update if necessary. If your application is dwarfed by the boilerplate it might signify Rails is overkill for your application; you don't need a 60kLOC framework for Hello World or exporting a single database table to the web.

      See, e.g, Ramaze, or Nitro, or Sinatra, or Iowa, or (...), or write your own 100-line nanoframework using Rack. Stop obsessing over Rails! This should answer your final question too ;)
    4. Re:still waiting to use it... by abes · · Score: 1

      Yes, but as far as I know, RoR is the main package people use for Ruby, versus Python which has 5-6 packages that I know of. Part of the reason for this is that Ruby's language has some unique features that make it favorable to RoR's style (though projects like Django seem to pull it off okay..?). Not to mention PHP has Cake, which is also supposed to model itself after RoR. So, I was assuming that most readers would be smart enough to figure out I meant the standard way you do things in PHP or Python, or whatever language (you may also note ModPython is not a language, it's a library, though it doesn't actually do much for HTML generation). There's really no reason to be rude, and it makes you look a bit stupid and a bit of an ass. As for the general apps, that's the info I'd like to know, but haven't been able to find much info on. Almost all demos I've seen build off of a database. There's plenty of sites I'm interested in making that actually have no database whatsoever. Because that's RoR's, I would assume it's not going to help me much. By going back, I didn't mean revision control. I meant changes in the structure of the code (you might have heard of refactoring?) or even the database. Previous experience with generated code (thank you Visual-C++) has made me weary about the initial parameters set when creating a project/object/etc. that results in code. I've actually done a minimal amount of obsessing over rails. I've most just ignored it, but in part because besides wrapping a DB nicely in an interface, I'm not entirely sure what it does well. Not that wrapping DB isn't important for web pages, it's just there's a lot more to programming than that.

    5. Re:still waiting to use it... by tcopeland · · Score: 1

      > Obviously since you are creating a class representation
      > of the database, how much gets altered will certainly muck things up.

      Definitely, yup, when you change the data you'll need to adjust the code as well.

    6. Re:still waiting to use it... by Marcion · · Score: 1

      Linebreaks in Ruby are '\n'. In Slashdot you need to press Enter sometimes...

    7. Re:still waiting to use it... by smellotron · · Score: 1
      Stop comparing Rails to languages, you fucking morons... Why is that so difficult to grasp when it comes to Ruby?

      Based on your words, it looks like you're having trouble distinguishing between the framework and the language as well. Given that may would-be RoR users have never seen Ruby before, they tend to go together, and thus will always be compared to other languages. That's the price that DHH and his followers have to pay for using a (previously) obscure language to implement a web platform.

    8. Re:still waiting to use it... by Chandon+Seldon · · Score: 1

      One of the big things that worries me is that there are a lot of files generated. That scares me. What if I made a mistake at the beginning? Is it easy to go back? Do I need to start from scratch?

      The generation script doesn't actually generate anything especially complex - it's literally like 10 or 12 lines of code. Further, the framework doesn't remember what it's generated, so you can rename / delete stuff to your heart's content without causing any problems.

      For us unenlightened, *when* is the proper time to use RoR? I get it's DB driven. So if you have to write a store, library, or /., you're good. But how does it fair for more general apps?

      For any database-driven web application (which ends up being most non-trivial web applications). If your website has user accounts or otherwise needs to remember things, it can probably be written with a database backend.

      The book I used to get started is "Agile Web Development with Rails", which covers enough to figure things out.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    9. Re:still waiting to use it... by Fweeky · · Score: 1

      Yes, but as far as I know, RoR is the main package people use for Ruby, versus Python which has 5-6 packages that I know of.

      I suggested at least that many alternatives for Ruby, and there are more. You don't base all your decisions on how popular or well marketed something is, do you?

      Part of the reason for this is that Ruby's language has some unique features that make it favorable to RoR's style

      Perhaps, but it's also perfectly favourable to various other "styles". Metaprogramming is quite a general tool, as you might have guessed ;)

      I was assuming that most readers would be smart enough to figure out I meant the standard way you do things in PHP or Python

      It's akin to calling PHP development Cake. Names of frameworks are not interchangable with generic terms for web development in a language, and I assumed you'd be smart enough to recognise that. I've used Ruby for 8 years, and I certainly don't equate Rails with the One True Way of doing web development in it. I might end at it for some things, but I certainly don't start there.

      There's plenty of sites I'm interested in making that actually have no database whatsoever. Because that's RoR's, I would assume it's not going to help me much.

      Like I said; you may not have a database, but you probbaly have data you want to serve dynamically in some way? Much of the advantage Rails provides is a convention for how to interact with that data, with ActiveRecord being the de-facto example, but, for example there's also ActiveResource which talks to web services instead of directly to a database; if you don't want a database, you just fill in the "M" part of MVC with a layer that talks to something else, and try to stick with the conventions to keep the interface Rails-alike. Maybe you'll make find() work off flat files, and put more complex queries through Ferret. Maybe you'll just store it in an object temporarily and use validations to help sanitize your data and drive your forms.

      Or, again, if that's all a bit overkill or otherwise a poor fit for your applications, use a different framework, or none at all.

      By going back, I didn't mean revision control. I meant changes in the structure of the code (you might have heard of refactoring?) or even the database.

      The structure's defined by things like your class definition and routing configuration: generating a controller or model basically makes "class FooController < ApplicationController;end" in the right place, plus helpers for your views and templates for testing. You're generally not generating scary big fragile chunks of code; if you want to rename something, do so, it's not magic. The point of metaprogramming is that you can be agile with these changes without you having to generate and maintain reams of static code.

      Database wise, the models are mostly driven by what the database looks like; you add a column to the database (probably using a migration) and your models automagically notice. Renaming a model can be done without renaming the table, and vice versa, and you can make renames less painful by mapping old names to new trivially. Either way, the code generation helps you because it's mostly done dynamically via metaprogramming based on the code you wrote, not statically based on your script/generate commands like, e.g. the C++ GUI generators you might be familiar with.

      But again, even that level of code generation might be overkill, and if having lots of files dotted about feels wrong when you really just want one or two modest .rb's for a small application, something like Ramaze, Rack or even Campin

    10. Re:still waiting to use it... by Fweeky · · Score: 1

      Based on your words, it looks like you're having trouble distinguishing between the framework and the language as well In what way? People compare Rails to languages. People often don't look at alternatives to Rails when they do web development in Ruby but do look at multiple frameworks in other languages. The words would appear to fit fine.
    11. Re:still waiting to use it... by smellotron · · Score: 1

      My point was that you began the rant referring to Rails, and it just morphed into a referral to Ruby, suggesting that even you (intentionally or not) blurred the lines between the framework and the language. After all, one of the other parents pointed out that ModPython is a library, and PHP itself generally refers to the interpreter plus the standard set of functions available in it, so any conversation about languages will naturally include related tools (including libraries/frameworks). For another example, look at Perl and CPAN, or C++ and the STL (or maybe Boost).

      Mind you, I think comparisons between PHP and RoR are perfectly valid in their own right, which is different from most people's opinions. PHP is just much more low-level (which happens to be helpful when it comes to deployment, I suppose).

    12. Re:still waiting to use it... by Fweeky · · Score: 1

      My point was that you began the rant referring to Rails, and it just morphed into a referral to Ruby, suggesting that even you (intentionally or not) blurred the lines between the framework and the language I don't see how that follows. I lamented the conflating of Rails to languages, and then the conflating of Rails with Ruby web development. I'm not using Ruby as a synonym for Rails in the last sentence; I'm rhetorically asking why that's a problem for Ruby and not PHP/Python.

      one of the other parents pointed out that ModPython is a library I mentally mapped "ModPython" to just Python, since mod_python would seem to be to simply be a means for deployment.

      Mind you, I think comparisons between PHP and RoR are perfectly valid in their own right, which is different from most people's opinions. PHP is just much more low-level Perhaps, but what "PHP" are you comparing with? The language? An ad-hoc index.php with a huge switch() and a function per page? CakePHP? Rails is a big MVC framework, and there's a set of libraries it can use just because it's Ruby. Comparing with "PHP" seems silly because PHP isn't a huge MVC framework. It's like comparing oranges with soil.
    13. Re:still waiting to use it... by demallien2 · · Score: 1

      Well, I know of at least one other significant use of Ruby - RubyCocoa. With the release of Leopard, Apple has upgraded both Ruby and Python to near first-class citizens of it's desktop environment. I've tried it out, and for the first time in years I'm back in the desktop app development game :-)

    14. Re:still waiting to use it... by smellotron · · Score: 1

      I'm not using Ruby as a synonym for Rails in the last sentence; I'm rhetorically asking why that's a problem for Ruby and not PHP/Python.

      I see; I misinterpreted that last sentence (probably tipped off by the ModPython instead of Python). Got it now. My answer to that is still because the framework popularized the language, and they're more frequently discussed in tandem than separately.

      Perhaps, but what "PHP" are you comparing with? The language? An ad-hoc index.php with a huge switch() and a function per page? CakePHP? Rails is a big MVC framework, and there's a set of libraries it can use just because it's Ruby. Comparing with "PHP" seems silly because PHP isn't a huge MVC framework. It's like comparing oranges with soil.

      God, no! MVC in PHP isn't by having a single page that handles everything. I've written elsewhere (sorry, forget where) of my opinion of PHP Front Controllers... they're stupid, because Apache (or Lighty or whatever you're using) aready acts as a front controller. Models are in library files, Views and Controllers are all individual pages that access the code in those library files, session objects, etc... Views are side-effect-free GET pages, Controllers are POST pages that redirect to other views. There's no in-language framework required, because the overall MVC architecture is already supported by PHP's script-based deployment and HTTP itself. I don't see how that's incomparable with RoR.

      Regarding CakePHP... I haven't used it. I don't plan on using it, because it seems to take all of the worst parts of RoR (silly limitations on my database) without any of the best parts (language syntax and power level). But that opinion is probably just a side-effect of my personal preference for data modeling inside the database, where multiple applications can be developed to access the same set of data, instead of relying on a single application's limited data-modeling capabilities. Maybe it's just that all the projects I've worked on have been small enough to not need all the power of ActiveRecord.

    15. Re:still waiting to use it... by DragonWriter · · Score: 1

      As other posters have noted, many of these complaints/thoughts come from RoR being a framework. I wonder if it would be possible to re-create RoR, but in a more library-form. User has to do more work (no generated files), but more flexibility in the long run?


      You don't have to use the rails generators (including the "rails project-name" command that sets up the initial files and directory structure) if you don't want to. ISTR seeing some tutorials on building rails apps that way (along with ones on doing them without using ActiveRecord at all, etc.), which may be the best way for some people to get to understand what's going on with Rails.

      Most good books on Rails should discuss what the generators do (Agile Web Development with Rails is pretty much the standard, but there are several more out now) enough that you can work without them if you want to: they are conveniences, not indispensable to the system.
    16. Re:still waiting to use it... by DragonWriter · · Score: 1

      Yes, but as far as I know, RoR is the main package people use for Ruby


      If by "package" you mean "web framework" ("web application development" and "programming" aren't the same thing), you are probably right that RoR is, if not the most frequently used, at least the most widely-talked-about Ruby "package".

      versus Python which has 5-6 packages that I know of.


      Assuming, again, you mean "web frameworks" when you say "packages" (Ruby and Python each have thousands of packages available, most of which are not web frameworks), Ruby has Ruby on Rails, Nitro, Camping, Merb, Ramaze, and Sinatra, and possibly others.

      , I was assuming that most readers would be smart enough to figure out I meant the standard way you do things in PHP or Python, or whatever language (you may also note ModPython is not a language, it's a library, though it doesn't actually do much for HTML generation).


      Isn't ModPython is an Apache module for running Python code from a persistent process rather than starting the interpreter for each CGI request? Hardly the same thing as a library...

      As for the general apps, that's the info I'd like to know, but haven't been able to find much info on. Almost all demos I've seen build off of a database. There's plenty of sites I'm interested in making that actually have no database whatsoever.


      "Rails without a database".

      By going back, I didn't mean revision control. I meant changes in the structure of the code (you might have heard of refactoring?) or even the database.


      Revision control handles "going back" with changes in code structure, doesn't it? As for the database, if you manage your schema updates through rails "migrations", then, yes, it is easy to rollback, modify, and reapply them. (And you can do data changes through migrations as well, if necessary.)

  18. Wow by gbelteshazzar · · Score: 1

    So RoR can't be used to solve every problem on the planet?

    People get to hung up on a platform or tool. The worst thing anyone could do is to blindly give a project to a dedicated RoR or PHP or Java developer. It should be given to a developer who may enlist an implementation technology expert to implement it.

    Software projects fail because they get hung up on implementation, don't have enough design or don't have correctly formatted requirements. if projects fail in implementation its being done by a group of idiots and deserved to fail.

  19. Re:"[Open-source project] owes you nothing" argume by Deadbolt · · Score: 3, Insightful

    You should think of the "X owes you nothing" argument as a response to certain not-named-here jackoffs who have some sort of trouble with an OS project, get pissed off, and post indignant messages to mailing lists or forums. "I can't figure out X! You guys suck for not making X more clear! Fix it now or my company will never use X!"

    The only proper response to this is that X owes you nothing.

    So if someone says "Rails doesn't scale/Rails is too slow/Rails isn't easy enough for me, fix it right now!" then the response is clear.

    In your case, filing a bug against windows GIMP and calmly explaining why you think it's broken is much more likely to get a serious appraisal at some point -- while some asshole (not you) who just complains about it feels an unearned sense of entitlement and should simply be ignored.

    --
    "Honey, it's not working out; I think we should make our relationship open-source."
  20. Just how slow is "slow"? by Cultural+Sublimation · · Score: 1

    I've asked the question below in other fora, but could never find a conclusive answer; here's hoping that /. wisdom will change that...

    So, when people complain about Rails being slow, just how slow are we talking about? Are we talking in the range of 10s, 100s, or 1000s of requests per second? And how does it compare to PHP, the Python-based frameworks, etc?

    Imagine I created a simple "hello world" dynamic page: something that when given a number as parameter, would return "the double of $num is $double". Imagine you would call it with http://whatever/get_double?num=10. How many req/sec would you expect on a decent machine with your favourite CGI language or web framework?

    (And yes, I realise just how awfully simplistic this example is, but I would like to get a ballpark figure). Thanks!

    1. Re:Just how slow is "slow"? by Unoti · · Score: 2, Informative
      There's 3 aspects to the slowness, IMHO:

      1. The language. Ruby tends to be slower. Something like this programming language shootout will give you details. But this isn't the whole story.

      2. Enough rope to hang you. Rails gives you a lot of ways to easily define dynamic classes, where the class is being generated dynamically on the fly. It can make the code lovely and small to use, but can make it slower than hammering it out in a lower level language. This and other techniques can lead to higher memory consumption, too. But I don't fault the language here. I see it as a powerful tool that must be wielded carefully sometimes.

      3. Active record. A lot of the slowness that people see can come from automagic that's happening in the background. If you're not careful with active record, for example, it pulls in every last field from table you're looking for, along with the relatives. I just needed the customer's name, and ended up with 8 kilobytes of data because I wasn't careful with what I was doing.

    2. Re:Just how slow is "slow"? by nuzak · · Score: 1

      Imagine I created a simple "hello world" dynamic page: something that when given a number as parameter, would return "the double of $num is $double". Imagine you would call it with http://whatever/get_double?num=10. How many req/sec would you expect on a decent machine with your favourite CGI language or web framework?

      As fast as squid could return the cached pages. I would judge a framework by how easy it is to tag a controller method as being fully deterministic, and therefore generating an ETag off the request data alone, setting the expiration to never. I don't want to have to have a deep understanding of the cache architecture or do it by hand, I just want to say "deterministic" somewhere and have the framework do the rest. Bonus points for handling cache coherency for database CRUD operations or other nondeterministic operations in a way that still doesn't make me do it by hand.

      Pretty much all the "agile" frameworks are 10 tons of fail when it comes to this test.

      --
      Done with slashdot, done with nerds, getting a life.
  21. Blame the programmer not the language by Unoti · · Score: 3, Insightful

    A lot of Ruby tutorials do try to be overly clever. But really, quite a bit of C code was/is overly clever, also. People cramming so much stuff onto a single line that the code is unreadable and difficult to support.

    But that's not really a problem in the language. That's a style thing. I very frequently when coding in C, Java, or C# split things onto multiple lines that could be expressed in a single line. I often take intermediate values and put them into variables with good names, instead of ramming the values all together.

    I remember when I was a wee lad, learning C, and being utterly baffled by a lot of the code I read. Casting pointers to other things, doing math, switching to array notation, then suddenly treating the whole expression as a function pointer, and feeding a stream of other things as arguments into the function... That kind of thing is amusing, but has no place in typical production applications code. Something far more common is huge expressions with the ternary operator that are just one element in a more complex expression. I saw this kind of thing in most of the C code I read, and felt like I must be a noob if I didn't do that. Then one day I decided I just would write code that was simple and made sense, and that's what I do-- it's a style choice.

    The point is, writing code that's easy to understand is up to the programmer, and less to the language. People used to defend COBOL because it was more readable. But one huge problem with COBOL is you've gotta write a lot of lines of drivel to get anything done, compared to say C. The price we pay for the comparative expressiveness of C is we have to be more careful with the code to keep it understandable. From C to Ruby is a similar jump in expressiveness, with a commensurate risk of it being less understandable. But it's possible to write difficult to understand code in any language.

    Ruby does have some things in it that make it quite different from other languages, most notably closures and metaprogramming. But honest, you do get used to it. You can even avoid the elements you're not comfortable with, and ease into them later.

    But over time you start to find there's quick and dirty ways of doing things in very few lines of code in Ruby. And things like testing kits and the way Rails helps you structure your code make it so that your code is spread out nicely, and it's easy to isolate bugs quickly, even if some of your code is a little overly terse.

    I recommend not starting with Rails. Spend a few hours alone with Ruby before trying to wrap your head around the way Rails works. Write a tic tac toe program on the console, or something. Get to where you've made peace with Ruby before you get into rails.

    Because starting off directly with Rails and Ruby, not understanding either one can be very difficult. They are both such different approaches from what many developers are used to that it's a bit like learning Pig Latin and Chinese at the same time.

    1. Re:Blame the programmer not the language by orlanz · · Score: 1

      First off, I am a C, Java, C++, Python developer in that order and am coming from that angle. I went through the same thing that you did with C, and why I later chose Python over Perl. (I do Ruby, Perl, bash, and others too, but don't consider myself a "developer" in them).

      My issue w/ Ruby is longterm maintainability. Which I think Python and Java do really really well in. Perl (especially), PHP, C, C++ aren't so good.

      I like the potential of Ruby , but wish it was a more... strict language. I like the fact that people can just flow out code (like they do in Perl, & Python), but don't like the fact that different people can do it in different ways. People can have different styles of writing code, and they shouldn't switch around in project, but I have issues that the language itself provides options where I just wish it didn't.

      Things like blocks, conditionals, loops, parentheses, and string initializations have options that not only can different programmers choose different ways, but the same one can _easily_ choose different ways in the same flow of code. And the philosophy of the language encourages this as the programmer is supposed to do what is "fun". Which I totally understand, and appreciate. It does add a tremendous amount of productivity to the overall development. BUT, I put forth that this makes maintenance a burden where one need not exist.

      I think Ruby will evolve over time to remove some of these options (parentheses), but it is quickly getting to the stage where legacy support will lock it down. I am not trying to bash Ruby or anything, it is a very powerful language, and in some ways, I really do like it. But IMO, it made certain handicap trade offs for its philosophy where it shouldn't.

      The way I see the scripting languages I know (based on my understanding of their philosophies):
      Perl - Put your mind's thoughts in code. There are many ways to do something and everyone can do it their way.
      Python - There are many ways to do something, but only one obviously right way.
      Ruby - Writing code is an expression of the mind which is art that should be fun and enjoyable.

      Oddly enough, Ruby's reason is why I use Python mostly, and Perl's reason is why I still keep Perl and Ruby around.

    2. Re:Blame the programmer not the language by BigBlueOx · · Score: 1

      Whatever you programming language you use, will all programmers here please shut up a minute and re-read this:
      I very frequently when coding in C, Java, or C# split things onto multiple lines that could be expressed in a single line.

      And this:
      Casting pointers to other things, doing math, switching to array notation, then suddenly treating the whole expression as a function pointer, and feeding a stream of other things as arguments into the function... That kind of thing is amusing, but has no place in typical production applications code.

      And finally:
      Then one day I decided I just would write code that was simple and made sense

      And take them to heart.
      And cast them in stone.
      And live by them
      Thank you.

    3. Re:Blame the programmer not the language by Tablizer · · Score: 1

      Ruby does have some things in it that make it quite different from other languages, most notably closures and metaprogramming. But honest, you do get used to it....I recommend not starting with Rails. Spend a few hours alone with Ruby before trying to wrap your head around the way Rails works.

      Some have said that R&R will fail in the marketplace the same reason Lisp has: heavy reliance on meta-programming. Metaprogramming has proven difficult to use with larger and interchangable teams. It may make a Lone Cowboy programmer fast, but nobody wants to maintain his/her code. Corporations don't like that because it requires more skill, and the second is that it provides more ways to invent a sub-language that only the author understands (AKA "job security").

  22. Speed and Protection by Unoti · · Score: 3, Interesting
    Ruby and Rails are delicious, but there's 2 things I need that I can't get from Ruby on Rails right now. Because of these 2 things, I am using C# under Mono, but I'd far rather use Ruby on Rails if I could:

    1. Protect the code. I need to be able to deploy it without the code being easily copied and reviewed. I know, I've seen it all on this topic: I don't really need to protect it, whatever I'm doing isn't that hard to figure out, etc. Trust me, I really need to protect the code. I write products for a living, and my customers will unfairly pirate/sell/give my code away, and it will cut into my income if I can't keep control of who gets my code. This is why I'm using C# and Mono. And yes, I realize that can easily be decompiled. But it's still more than adequate protection in my business space.

    2. Make it faster. Ruby is too slow for what I need to do. My customers can only afford around $100 USD/mo for hosting my special purpose application, and for the number of people they get hitting the site, Ruby doesn't cut it. I know, I know, do more caching do more magic, get more computers, build a server farm, etc. Whatever. I just rewrote the thing in C# and I could support way more users per $100 of server. It made me cry to have to do it.

    Please, if there's ways to do better on those 2 areas, let me know! But trust me, I really do need to protect the code.

    I'm thinking I might be able to solve both of these problems using JRuby some day, but I'm not sure yet.

    1. Re:Speed and Protection by Unoti · · Score: 1

      Regarding copying the code, I don't currently prevent copying exactly. I just have it locked to particular domains.

    2. Re:Speed and Protection by Marcion · · Score: 1

      I suppose most people in rails are making websites which are more one off things, most of everything repeated is in rails.

      However, locking code down is an interesting problem in that a lot of the more modern high-level languages have no way to really lock down the code.

      Your approach is just security through obscurity, but as you say, it may be enough to stop lazy ignorant people. I would be interested in people's experiences with this.

      I program in Python, and there is also no real way to lock down the code, you can give the compiled files which with a bit of Python knowledge can be decompiled, at least to some degree.

      Another way to bundle things inside an exe or rpm and hope they are not smart enough to pull the code out. However both of these steps are really just security through obscurity.

    3. Re:Speed and Protection by smellotron · · Score: 1

      Ruby is too slow for what I need to do... I know, I know, do more caching do more magic, get more computers, build a server farm, etc.

      Or, you could keep your C#, do more caching magic, get more computers, build a server farm, and still win the speed game. Besides, adding an object cache is generally trivial in any language, if you have access to something like memcached, and adding an HTTP cache (sending 304 Not Modified) is as simple as checking a few timestamps.

    4. Re:Speed and Protection by Unoti · · Score: 1

      However, locking code down is an interesting problem in that a lot of the more modern high-level languages have no way to really lock down the code.
      I agree, and I was kind of surprised about this. At first I thought that surely I must be missing something. Near as I can tell your options for writing Web code without releasing the source are Java, .NET, or CGI-bin using C++ or another compiled language. I actually seriously considered using FastCGI with D, and then I snapped out of my reverie and got to work in C#. Anyway the whole experience kind of made me feel a little surprised about the way the languages are going. As you say, it could just be that most web apps are one-offs. Actually the Python installer approach would be adequate for my problem. I chose C# because I was in a hurry and already knew C#.
    5. Re:Speed and Protection by An+Onerous+Coward · · Score: 1

      Re: speed. Rails is slowly being rewritten in Ruby 1.9, which will make it several times faster. 1.9 integrates a new virtual machine called YARV. It won't magically solve everything, but it will help some.

      A lot also depends on your deployment setup, which is one of the trickier things about Rails in my mind.

      --

      You want the truthiness? You can't handle the truthiness!

    6. Re:Speed and Protection by DragonWriter · · Score: 1

      As you say, it could just be that most web apps are one-offs.


      That's probably a factor. I think also (and both of these are related to them being one-offs, to a degree) a lot are either:
      1) Works-for-hire where the customer is owns the code.
      2) Custom development provided by someone who also is paid to manage the application once it is deployed, and the customer doesn't control the servers.

      In either case, trying to obscure the code from the customer is unnecessary (also, some incorporate code that is released under the GPL or other license that requires making source available, so obscuring source serves no purpose.)

    7. Re:Speed and Protection by SilentBob0727 · · Score: 1

      A well-configured Mongrel deployment of a Rails app will create a virtual server process cluster which speeds up concurrent access considerably, reducing the strain on the server during high-traffic periods. Of course, your baseline speed isn't heavily affected.

      Incidentally though, I've never encountered a speed problem in Rails that couldn't solved by rewriting the more complex ActiveRecord code in native SQL. But that could just be me.

      --
      Life would be easier if I had the source code.
  23. Re:"[Open-source project] owes you nothing" argume by Anonymous Coward · · Score: 0

    Amen.

    I never used Rails, I don't write web apps and, frankly, I have no interest in it. So I've been following all this by curiosity, because I might have to or want to later, and just for the amusement. I tried reading the other guys' (Zed) rant and stopped a third through because I felt he was just flaming everyone and not saying anything interesting (read: technical). His main critic seemed to be that the RoR guys are arrogant. Like he wasn't.

    Now I get his point about arrogance.

    This "rebuttal", which I read in its entirety, is *dripping* it.

    First there's this point you mention. I could never understand this attitude from some open source developer, or sometimes projects, that users should be happy enough with what they have, and if they got problems, too bad. How difficult is it to say "Very sorry, this will not be addressed in the 2.x versions as it would require too many changes, but we'll take it into consideration when we start working on 3.0. Thanks for your input. BTW, you could mitigate the issue by doing xyz...". Instead it's like "You sucker believed the hype and now you're up shit creek? Tough luck! We know where we're going, we've got a *vision*, you see, and we don't care about mere users problems. But you should thank me for getting you halfway there." Arrogance. Abysmal. "You can rip out the bits you like and discard the rest." says he. I'm glad to submit bug fixes or new functionality to an open source project I use, but if I have to tear it apart to get something useful, it's shit, end of story.

    Then there's the "Rail isn't perfect" thing, with the thinly veiled ad-hominem on "immature" people. Guess what? Nobody's looking for perfect. They're looking for the best, or at least the better. What kind of person answers "that's not so good" by "nothing's perfect"? Arrogants, that's who. I already *know* nothing's perfect, what I need to know is how your is stuff *better*!

    Third is the one size doesn't fits all argument. When somebody doesn't address criticisms such as "it doesn't scale", "it uses up loads of ram" and "it's not thread-safe", explains that "[if you have SQL bottlenecks you can] bypass it with some inline SQL or even memcache" and "Rails code [...] is so clean and easy to work with that locating and optimising bottlenecks is a breeze", and *then* claim that "Rails is extremely good for [medium to large web applications] of applications", I know one thing: he doesn't have the faintest clue having anything large in IT. All he knows is performance hacks. Which is good, mind you, but not enough when you're dealing with large apps. He's talking about profiling. I'm impressed, that's been around for, what, 20 years? The problem is not optimising the app, the problem is what you do after you've done that and you still have a performance barrier. Oh, yeah, and "If Rails isn't right for your project, that doesn't mean that Rails sucks. It just means that your project isn't right for Rails." Is that so? I'm doing it wrong I guess then! It means Rails isn't right for my project, and that's *it*! Arrogance again...

    I won't dwelve into the "Smart people might not like rails, but rails is only for them. Idiots stay away." As far as I know, the hallmark of a good library or framework is to be able to make the difficult easy and the impossible possible. Apparently rails doesn't cut it.

    And finally "rails is teh most flexible". Well for all I know, it is. Any facts to back that up? Cuz the examples didn't exactly convince me. For one thing every single OR mapping I've used allows custom tables and custom SQL queries. I got news for him: "most other frameworks" have thought of bypass and override...

    In conclusion: like I said, I don't use Rails and I don't do webapps, but "If you decide Rails isn't for [your project, not "you", but presumably it implies that you're not smart enough to get it], *do* post a rant about how it sucks". You may make yourself look bad (maybe even "dumb"), but the better of those rants will end up being linked to the top of google, so the people who have not tried it yet will have a way to form an opinion. Thanks.

  24. Re:"[Open-source project] owes you nothing" argume by Anonymous Coward · · Score: 0

    The proper response to a jack-off is to ignore him.

    That being said, said jack-off actually *tried out your stuff*, didn't like it and *said so*. "You should lick my boots for getting that much" is not an appropriate answer, ever, even though I understand why one might feel like saying it. At what point do you start considering what jack-offs said? If a thousand jack-offs post the same complaint, does it become data? It should.

  25. My experience with RoR by Henry+V+.009 · · Score: 1

    I've done a lot of C++ coding. Designed several PHP websites. I've had to maintain a good amount of Perl code. My Ruby experience is mainly just playing around.

    Recently, my girlfriend got me started on writing a book recommendation website for her. I had heard a lot of things about Ruby on Rails, so I decided to buy a book and give it a try. I like the AJAX integration. I've never used javascript, and it was easy to jump right into that. The database integration is also neat -- it handles a lot of the grunt work for me.

    More than anything I'm worried about speed. Like I said at the beginning, I come from a strong C++ background. The philosophy there is basically do things at a high level, but the speed should be there if you need it. And yes, I've needed it at various, often unexpected, times in my career.

    I'm also a little worried about reliable APIs. The RoR team seems to have a habit of breaking things with new releases. Since web security depends on updates, leaving things unpatched doesn't strike me as a wonderful solution. But hey, this is just a play website I'm building. I'm having fun, and I guess I'll find out whether the framework lives up to expectations or is more trouble than it's worth.

    1. Re:My experience with RoR by Chandon+Seldon · · Score: 3, Informative

      More than anything I'm worried about speed.

      The standard story for dynamic language development applies:

      • Optimizing before you have a problem is a waste of time.
      • There are lots of ways to optimize, up to and including re-writing the bottlenecks in C/C++.

      The most common optimization that's used with Rails is it's built-in support for caching, which can speed things up by quite a bit. You can get the same sort of results with a hand-optimized memcached setup any other dynamic language - but Rails gives it to you almost for free.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    2. Re:My experience with RoR by KDan · · Score: 1

      Yep, there's an article about that too on that site. It's called Premature Optimisation.

      --
      Carpe Diem
  26. Re:"[Open-source project] owes you nothing" argume by An+Onerous+Coward · · Score: 1

    Absolutely correct. You can criticize an open source program all you want, and good criticism can be a boon to a project. But there are some lines that you don't have a right to cross. One is when you say, "so hurry up and fix it!" Unless you're willing to front the money or do the coding, you're not in a position to make demands.

    Another line is the thin line that separates constructive criticism from mere douchebaggery. It's easy for frustration with a framework to bleed over into personal attacks against its authors or its fans.

    Lastly, the article is right to point out that a lot of criticisms about any project are simply false as a matter of fact. Those can be especially frustrating for the people working on a project.

    Just expect people to be emotionally invested in their favorite projects, and to know it too well to see your objections as major obstacles. So they may not take your complaints as seriously as you'd like.

    --

    You want the truthiness? You can't handle the truthiness!

  27. Re:The only measure I know of by which Rails sucks by Chandon+Seldon · · Score: 1

    PHP kicks everybody elses ass

    Have you heard of Perl?

    Now, it's possible that you're defining "Usable" as "Not in Perl", but Perl has more mature, high quality code available in it than any other "web language".

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  28. Re:The only measure I know of by which Rails sucks by Chandon+Seldon · · Score: 1

    If you want a good measure of what sort of people are in a given community, go to their IRC channel and ask a question from their FAQ.

    True enough, but remember: The set of communities with assholes in them and the set of communities that produce useful software tools overlap almost entirely.

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  29. Re:The only measure I know of by which Rails sucks by KDan · · Score: 1

    Just for the record, the author did a physics degree with no IT component (a great many years ago), and taught himself Rails in a few weeks over the summer. No formal training.

    --
    Carpe Diem
  30. Rails Running On My Cellphone!!!! by remitaylor · · Score: 1

    I tried running Ruby on Rails on my cellphone and, let me tell you ... it truly sucks monkey balls.

    On the other hand ... I've been coding my latest web app in Assembly for *some time now*
    It's taking a little longer than I (or the client) had initially anticipated, but it's very stable.

    ( If only I could figure out why I can't get AppleScript running on my Xbox!! )

  31. Re:The only measure I know of by which Rails sucks by nonsequitor · · Score: 1

    I don't know the people involved, but most people I do know that are involved in the open source community like the CCC guys have pretty amazing stories too. There are a LOT of good people out there, unfortunately the idiots are the loudest and this guy decided to feed the troll, which means he's not part of the solution if you get my drift.

  32. Ruby vs Python by Wiseman1024 · · Score: 2, Interesting

    I disagree. I'm a supporter of multi-paradigm programming ("the right tool for the right job") and consider functional programming approaches the most important of all. I find Python very comfortable to work with, and much conceptually cleaner than Ruby.

    While Ruby has one advantage or two over Python, such as multi-expression lambdas and Python's statements turned to expressions (statements are a common root of evil and an unnecessary procedural concept), the main problems I see in Ruby as a language, leaving libraries aside, are that it has several different implementations of the same concept of function - blocks, procs and methods, having mediocre first-class function support due to keeping that silly value vs. function value behaviour inherited from the equivalent Common Lisp misfeature, completely misunderstanding properties (partly as a result of the former: a method should really be just a property which happens to be a function, or an object that can be used with the (...) operator), and having unnecessary complexity and irregularity in the syntax which is good for nothing and bad for everything. I suppose people who enjoy Perl may enjoy Ruby in the sense that it feels like you're writing some kind of "seekret haxxor code", but all you're really doing is spend about the same time writing a much less readable and maintainable program that looks like ass.

    I'd like to post quote from the first words of R6RS, the Scheme standard, which I consider to be the ultimate design criteria, not only for programming languages, but for software in general, and perhaps things beyond software:

    "Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary."

    --
    I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
    1. Re:Ruby vs Python by MenTaLguY · · Score: 1

      A proc is just a reified block. However, I'm with you on the method thing. Aside from lambda issues, I do think Python does first-class functions (whether methods or anything else) more consistently, which I like about it.

      Multi-expression lambdas are a pretty big thing for me, though; I miss them a lot in Python and I think the workarounds for their absence usually result in extreme code uglification.

      --

      DNA just wants to be free...
    2. Re:Ruby vs Python by Wiseman1024 · · Score: 1

      def progn(*a):
              return a[-1]

      There you go, multiexpression lambdas in the form of:

      lambda args: progn(expr1, expr2, expr3...)

      The problem lies in statements, IMO one of the worst features ever.

      --
      I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
    3. Re:Ruby vs Python by MenTaLguY · · Score: 1

      I think you just illustrated my point. While I've enough Lisp background to recognize progn, I don't think it's reasonable to expect that of Python programmers generally: it's not part of the standard library, or (so far as I'm aware) an idiomatic practice there.

      I'd also personally rather write:

        canvas.when_clicked do |x, y|
            add_point(x, y)
            canvas.request_update
        end

      versus:

        canvas.when_clicked(lambda x, y: progn(
            add_point(x, y),
            canvas.request_update()))

      (I've been writing a lot of lambdas-for-callbacks-and-constraints code lately)

      Although now that you've persuaded me to try it, it does seem like the best Python approach. Maybe I will like Python more if I bring more Lisp practice to it generally rather than trying to do things "the Python way"; my distaste for Python could be a case of "good language, crappy conventions".

      --

      DNA just wants to be free...
    4. Re:Ruby vs Python by Wiseman1024 · · Score: 1

      While I don't usually find "the Pythonic way" too bad, I always follow my own personal style, which is a lot more Lispy. For example, I'll prefer a higher-order function over a class with just __init__ and __call__ any day (__call__ is great for objects that have methods and publicly-used properties, but it's kind of lame to use it just to avoid a higher-order function).

      --
      I was about to say 13256278887989457651018865901401704640, but it appears this number is private property.
  33. Re:"[Open-source project] owes you nothing" argume by makomk · · Score: 1

    The trouble is that RoR does have some serious issues - for example, it's apparently impossible to deploy in a shared-hosting environment.. Supposedly, the solution is for Dreamhost to "Wipe the wah-wah tears off [their] chin" and realise that the RoR community just don't care about shared hosting.

  34. Rails may not suck...but the title does by Anonymous Coward · · Score: 0

    Seriously, what kind of legitimate news report runs with that kind of headline?

  35. The honeymoon is over by Mutant321 · · Score: 1

    Welcome to the real world, Ruby developers. There's been so much hype around Ruby, and especially Rails, for a few years now that no one has even been allowed to voice an opinion that makes negative remarks about either. That honeymoon period is now well and truly over.

    But pretty much every langauge community, and especially in the realm of dynamic languages Ruby is in, where there's a lot of solid competition, has to deal with criticism. You'll quickly find that, even though a lot of it might have a grain of truth in it, the vast majority is blown utterly out of proportion. Coming from the Perl community, I've seen as much of this as anyone.

    In the end, you have to learn to live with it. Some of it may be interesting and useful, and as a community you need to learn how to pick out the good criticism and incorporate it where possible. As for the completely baseless FUD, it's largely irrelevant. For every person who reads that FUD and is put off, there's another who looks at the language, how popular it is, and decides they'll make up their *own* mind. Those are really the people you want in your community anyway.

    Anyway, I like Ruby as a language, and - while it doesn't really fit in with my way of thinking - I can definitely see the appeal of Rails. And, long term, it'll be a good thing for the langauge that the hype period is over. Now the serious work can begin.

    1. Re:The honeymoon is over by DragonWriter · · Score: 1

      Welcome to the real world, Ruby developers. There's been so much hype around Ruby, and especially Rails, for a few years now that no one has even been allowed to voice an opinion that makes negative remarks about either.


      The constant stream of negative comments about both Ruby and Rails on Slashdot, and from fans of other languages in every other forum on the internet, apparently all came from "no one", is that it?

      Right.

      That honeymoon period is now well and truly over.


      No, it never existed. Not even a little bit.

      And, long term, it'll be a good thing for the langauge that the hype period is over. Now the serious work can begin.


      The serious work began years ago; the hype (which provoked constant criticism rather than preventing it) was a product of successes in the "serious work", not something the preceded serious work.
  36. Desperate articles by wyewye · · Score: 1

    RoR sucks so badly, that actually needs these kind of cheap troll articles to advertise it. Sorry guys, but a programming language is designed to implement solutions, not just make the coder feel good (for 1-2 days). Learning curve is completely unacceptable. If you want to feel "special", go have fun coding in Ruby. But if you want to produce a big scale software solution, go use a proved language/software platform, like Java EE or .NET. Saying that "you need to be smarter to understand it" is actually an argument against RoR.

  37. They said the same about PHP by foniksonik · · Score: 1

    And PHP deserved it more at the time but look at it now.... RoR will continue to mature and improve and people will use it when it is appropriate

    I don't use it cause I don't have time to learn it but if I hired a new developer who knew it well I'd definitely consider it for some projects.

    --
    A fool throws a stone into a well and a thousand sages can not remove it.
  38. You never really know a system until you hate it. by egghat · · Score: 1

    Hey! that one should make a rather good signature ...

    --
    -- "As a human being I claim the right to be widely inconsistent", John Peel
  39. Slashdot bug? by Tablizer · · Score: 1

    Why isn't this article showing up on the "Developer" summary list that I set on slashdot via preferences? It's not older than the oldest one listed.

  40. Biggest problem with Rails by pavera · · Score: 1

    I feel that Rails did make a large contribution to web development in general. There are now similar frameworks in basically every language out there. Even Java has a RoR look a like (JBoss Seam).

    However, the biggest issue I feel is the whole "Convention over configuration" mantra. Yes a framework should have sane defaults (convention), however, in my experience using Rails, Django, Seam, and PHPCake, Rails by far makes it harder to do something that is not a "default". Want to use it with an existing DB? django and seam both have a beautiful utility that will build your code from that DB. RoR says: you must rename all your db tables to plural (which I was taught in school was 100% wrong btw... I was always taught singular for table names... but maybe my professors were smoking something? At any rate, all of my existing DBs had singular table names when I started messing with Rails), or spend hours adding configuration to your app to properly map models to tables.

    There are many other issues I ran into using Rails along these lines and others, but basically it always seemed like in Rails it is very much an all or nothing proposition. Either your application/design/db fits and it is all going to work, or there is need xyz which is outside of Rails features, and therefore, you can't use any of rails.

    Django is my favorite of the 4 frameworks listed, specifically because it makes it so easy to use parts and pieces of the framework, where it makes sense, or not use it for other parts. It is by far the most flexible to me. And yes, there is some configuration needed, but not much more than RoR. The nice thing is django has a flexible and powerful configuration system. it isn't a second class citizen like most configuration in RoR (if a configuration option is even provided in RoR). Most of the time in RoR it seems like they said "Well, this is HOW you do this" and if you want to do it a different way, there isn't even an option anywhere to change it. You can either re-write the RoR functionality to match how you want to do it, or not use RoR. In reality though, these changes could be implemented as a simple configuration change. But because RoR eschews configuration like the plague, you're just stuck with 2 bad choices (reimplement, or don't use RoR).

    This isn't to say RoR sucks, I'm just pointing out my reasoning for using a competing product.

    1. Re:Biggest problem with Rails by Anonymous Coward · · Score: 0

      "Rails by far makes it harder to do something that is not a "default". ... RoR says: you must rename all your db tables to plural."

      set_table_name "address"

      yeah your right!! that single line of code to change the default table name was very hard to do!!

    2. Re:Biggest problem with Rails by Shados · · Score: 1

      Personally, I kind of feel that the contribution to web development is overstated... Rails really doesn't do anything special... its the same paradigms that "serious" developers have known and been using forever. The only big difference is that usually in enterprise development, you'll try and avoid heavily connected "4th Gen" style development, while Rail encourages it, but thats about it...

      An MVC Type 2 with a templating language, an OR Mapper, and a messenging system, on top of a 4th Gen RAD environment... There's a couple of things here and there (I recently had to implement an equivalent to ActiveRecord::Migration in C# because all the C# equivalents I could find were not production ready IMO...didn't take long though, since I didn't need platform independence), but overall its stuff thats only really new to PHP developers and hobbyists. Sure, you see literal clones popping up in Java and .NET, but its not like it all didn't exist. The keywords and method names were just different, now they're the same.

      As a sidenote, schools are good to teach the science part, but for actual development techniques, they tend to suck. The plural vs singular for table name is a huge debate in the database field, and its far from set in stone. For everything else, chances are, if you learned it in school when it comes to software engineering and development techniques, its wrong. Not always, but its a good general rule to go by.

    3. Re:Biggest problem with Rails by pavera · · Score: 1

      when your DB has 10 tables, sure... when it has 150 its a bunch of goofy code that you shouldn't have to write or maintain.