1. 17
    Please stop using Ruby ruby dev.to
  1.  

  2. 41

    From the first comment:

    I did not go to school for CS, so I don’t have the acquired taste for FP that a lot of folks have, I guess. I’m a digital carpenter; I want the code to be clear, easy to understand and flexible. Ruby is one of the best for that.

    I can’t stand this attitude.

    I also did not go to school for CS. I went to music school. I don’t even have a maths grade from high school. I sucked at it, and I was drunk in my exam.

    And yet, I love writing Haskell [and Elm], and I do it every day, and I used to be a real Ruby/Rails fan! The quoted comment implies by negation that if you like FP, then you’re not a “digital carpenter” (which I suspect is some allusion to ‘Software Craftsmanship’ nonsense, which I also used to be a fan of), or that you don’t want code to be clear, or easy to understand, or flexible.

    I think the author of this comment has made of judgement call from a place of ignorance, rejecting an entire field of study because “well I’m just not that kinda guy!”

    It’s infuriating and it’s nonsensical.

    1. 13

      Worst of all it implies that FP isn’t clear, easy to understand and flexible.

      I’ve been showing primary schoolers how to do fractals in Snap in an after school computer club. It’s not that difficult.

      1. 6

        Fractals are just a math problem, and FP languages are natural for math problems.

        Digital carpentry is more difficult, and my experience says that FP (in the pure sense that Haskell does it) is less clear and more difficult in that context.

        1. 5

          What is “digital carpentry”?

          1. 6

            It’s when you use the digits on your hands to operate tools and make beautifully crafted items out of wood. /s

            Seriously, I think its supposed to attach artisanal connotations to programming - the idea that you work towards being the best at the task you do and both care for and take ownership over that which you create and therefore make better decisions in your day to day work.

            It’s a nice idea but in practice is’s sometimes used to put down developers by saying they aren’t artisans and are instead code monkeys. I personally prefer to think of it as a spectrum, there are projects that you will care deeply about and work your ass off for and in doing so you will exhibit a lot of the behaviours associated with “digital carpentry” while other projects are simply fire and forget missiles that you knock together with as many corners cut as possible to hit that deadline.

            1. 12

              Somehow — in the Software Craftsmanship circles — “being the best at the task you do” never involves just picking a better technology that obviates the need to write so many tests (which must be manually maintained), and saves the business time and money.

              1. 1

                and saves the business time and money.

                But it almost never does! That’s the problem. Better programming languages help so very little, because the bulk of solving problems is somewhere else than coding.

                This is a generalisation, of course. There are obviously some localized problems which are very much easier in, say, Haskell, Rust or PHP than in some other language. But for 99% of the problems out there, thinking that Haskell gives you anything that makes the actual product better is just dishonest, and being dishonest in that way makes selling better tooling more difficult for everyone.

                1. 2

                  I can see your original response before your edit was:

                  But it never does! That’s the problem.

                  To which my response would have been the following:

                  The assertion or implication that you can ensure the correctness of a program at non-trivial scale more cheaply than a machine is either ignorant or arrogant. So which one are you?

                  I see you’ve reduced your position somewhat in your edit, but you’ve reduced it to a straw man. The discussion was never about whether or not a product is made better depending on the technology it runs on. The discussion is about how to build a product cheaply and robustly. You should know this. You even quoted the specific part where I said “and saves the business time and money”.

                  That your argument could be so wildly inconsistent in such a short passage is totally amazing.

                  1. 1

                    I can see your original response before your edit was:

                    Yeah, sorry about that. I tend to use the comment fields as a text editor for some minutes.

                    The assertion or implication that you can ensure the correctness of a program at non-trivial scale more cheaply than a machine is either ignorant or arrogant. So which one are you?

                    Well, neither of course. Quite a silly false dichotomy there :)

                    The discussion was never about whether or not a product is made better depending on the technology it runs on. The discussion is about how to build a product cheaply and robustly. You should know this. You even quoted the specific part where I said “and saves the business time and money”.

                    Ok. I’m totally willing to widen my argument. Better tools do not make your software products cheaper either, because the bulk of the price of software creation is not in coding.

                    1. 3

                      Well, neither of course. Quite a silly false dichotomy there :)

                      Hardly. The entire reason humans use machines is because they are faster and more accurate than us. The line of reasoning you appear to be going down is so nonsensical I’m not going to pursue it further.

                      Ok. I’m totally willing to widen my argument. Better tools do not make your software products cheaper or robust either, because the bulk of the price of software creation is not in coding.

                      Ok. Go write all your programs in binary then.

                      1. 0

                        I’ve taught Haskell in the university, and I have attempted to bring it (and other FP methods) to industry in my career. I know what I’m talking about.

                        But I’m done talking to you. You need to check your attitude if you ever wish to cause a meaningful change. Your current approach is working against you.

            2. 0

              Did you read the article?

              1. 2

                It wasn’t mentioned in the article. It was mentioned in the comments.

                Did you read the article?

            3. 3

              For the sake of my own sanity, I’m interpreting your last sentence as satire.

              1. 0

                You need to take better care of yourself if your sanity is so fragile :)

          2. 6

            Just the term digital carpenter is infuriating enough for me.

            1. 3

              I went to school for CS but my school’s program did not specifically cover functional programming, except in a very cursory way, as one of several possible programming language paradigms that a language designer might pick. I became interested in functional programming purely as a result of my own independent research into how to better write computer programs. Anyone who can program can go read Learn You A Haskell just like I did and decide for themselves if they like it.

            2. 24

              Just like every post like “Stop using X” I deeply disagree. It’s just a tool. If it works for you, use it. If not, don’t use it.

              It’s. A. Tool.

              1. 3

                He did say “please”.

              2. 18

                Probably worth considering the authors followup when reading this, posted a week later: https://dev.to/jimsy/please-keep-using-ruby-4771

                1. 9

                  Before Rubygems there really was only CPAN but no one needs to be reminded of that.

                  I don’t understand how otherwise very nice people can be so condescending about Perl. How do they think it makes those feel who enjoy using and developing Perl? Imagine having your favorite thing constantly be ridiculed.

                  I suppose this example isn’t the worst one, but every little bit hurts, you know. Otherwise not a bad article.

                  1. 5

                    Fellow Perler here. I’ve given up caring what people think about Perl. It still does the job for me and I’m very happy I’m proficient in it.

                  2. 8

                    I think the article is mostly pretty reasonable, and it’s just the title being over-dramatic and click-baity with the implied statement that nobody should use Ruby for anything.

                    I’ve been doing Rails full-time for about 2 years now. I think it’s still the best framework and language around for getting a web site/service that does something straightforward up and running quickly, and adding common types of functionality to it easily. There are some others that are arguably at about the same level, but I don’t think anything out there right now is clearly better overall.

                    There are definitely trade-offs and imperfections. It may be a bit heavyweight if you actually just need to sling some JSON back and forth between your SPA app and DB. It’ll never be the language to wring every last cycle of performance out of your server. Ruby has enough clever bits for you to code yourself into a mess if you try to be too clever. Some other languages might get a big boost overall if the exact library you need is only in that language. Those somewhat rare exceptions aside, I’d still go with Ruby and Rails by default.

                    1. 7

                      It’s an ad for Phoenix web application framework, if you’ve never heard of that check the docs (based around Elixir, which is some Ruby-inspired Erlang) https://hexdocs.pm/phoenix/adding_pages.html

                      1. 7

                        I’ll confess I laughed audibly when I reached the suggestion of using yet-another-bloated-web-framework over RoR.

                        1. 20

                          Phoenix is a lot of things, but bloated isn’t one of them.

                          I’d actually argue it’s missing a great deal of stuff that would actually be helpful in the real world.

                        2. 5

                          He seems to think refinements are A Bad Idea.

                          I certainly have a gripe with monkey patching, but refinements are a pretty neat packaging of the concept.

                          I’ve been using it quite a bit recently and well, why not?

                          The Clojurist’s rant against wrapping every thing in an object, for the simple dumb obvious reason that the objects methods are “All you get”. When you have Plain Old Data (pod’s) you have vast libraries that all eat pods.

                          Refinements give you the best of both worlds. It’s just a POD when it’s just a POD, it’s an object when it is useful to see it as one.

                          1. 2

                            PSH! “Digital carpenters” are people who just don’t have the CompSci background to engage with high-minded languages like Haskell and Elixir. Once they stop making simple websites and work on codebases of true substenance (i.e. “real” software engineering) they’re idea of using hipster 15 year old frameworks like RoR will look foolish indeed.

                            Continues to engage with a website written in RoR

                            /s 😪

                            Edit: ffs people. these are just tools. sometimes the hammer is pragmatic, sometimes the nail gun is needed.

                            1. 1

                              I was actually going to leave Rails because of the other articles like this one. But, then I found Is Rails still relevant in 2018 ?. Go, Phoenix, Node, and others are good options. But, still I have no second thoughts on Ruby and RoR. That being said, I am learning Go as time permit.

                              1. 1

                                Ruby is a great prototyping language. That’s how I use it. irb and a little bit of Enumerable and you can spec out many kinds of data transformation fast in an FP style and then write “real” code to do the same thing. It often takes me about 5 times longer to do the translation than to do the initial coding.