Hacker News new | past | comments | ask | show | jobs | submit login
Keep Ruby Weird Again [video] (testdouble.com)
197 points by asolove on Nov 1, 2016 | hide | past | favorite | 57 comments



I loved this video because I got all the references.

I sit on the Ruby on Rails facebook group, and its flooded with people from India trying to learn ruby. What I find unusual is they publish tutorials when there are plenty of good sources such as Railscasts, but its like the last 10 years doesn't exist to them and they rehash tutorials.

Ruby was great before javascript frameworks. I haven't gotten around to using turbolinks but its strongly makes me question whether I should I stop using js frameworks all together and go full on into turbolinks and go back to a simpler time of rapid development.

All of sudden everything in web-development requires you to be an engineer. I think there is a large influx of Uni CS graduates running startups and the only solution in a complex solution such as React. I can use React but I can't understand from a business perceptive why you would want to quadruple your development time and create such a high bar of entry for developers.

#MakeWebDevelopmentGreatAgain #Remeber2006?Imemeber


What I find unusual is they publish tutorials when there are plenty of good sources such as Railscasts, but its like the last 10 years doesn't exist to them and they rehash tutorials.

I think it's normal. I've seen it a lot amongst people who are actively learning. It was common in the late 00s in the Ruby world, and is currently common in the JavaScript, Elixir, Rust and Go worlds. It doesn't matter if they're "rehashing" - they're writing stuff as part of the learning process, we haven't got to read it, and I can only celebrate their enthusiasm. (Plus, on some topics, it's handy to have tutorials rewritten for the latest OS and database versions, etc, anyway since things always change slightly.)


You also never quite know how a metaphor or explanation is going to land. There have been many times when I've read several explanations for things and it hasn't really clicked until I came across something that explained it in a way that really worked for me, for whatever reason. Getting more [correct] perspectives and explanations out into the ether is only good; you never know if your tutorial or blog post might be the one that makes it click for someone or not.


You're right on that point. One of the best ways to learn is to try and teach, so it's natural that people would feel compelled to try and explain what they've learned in tutorial form.

The only problem I see with this is you often have cases of the blind leading the blind, and in the case of PHP it's usually off a cliff into a sea filled with razor blades and sharks.

Ruby's got a great community and I hope it can maintain its tone and positive energy with new people joining.

One of the things Ruby needs to do is get a handle on the atrocious documentation situation. Node's community has spectacular documentation for its open source projects, and Ruby's, many being far older, actually look really sad and decrepit by comparison. This includes the Ruby core documentation which is downright terrible in terms of usability.


So we can look forward to them creating another 20 test frameworks over the next 10 years? Wonderful...


Maybe. And that would be awesome, I think, because one of them would likely be better than what we have now and worth using.


There was a good few years where you could make an entire career out of re-hashing Java blog posts from 2000-2005 with Ruby syntax and be considered on the cutting edge. I should know; my first blog post was about dependency injection in Ruby. This was especially ironic given how long Rubyists shit-talked Java all those years.

There's a few things at play here: it's true, to many people, the last ten years didn't exist! There are a ton of programmers who have less than ten years in the industry. It takes time to learn all that history. Another aspect is that teaching something you've just learned to others is a great way to solidify your knowledge of that thing. You also have https://xkcd.com/1053/


I recently spent quite a bit of time diving into Rust and modern JS and very much understand why old tutorials are treated as none existent by many learners. Half the time I found a tutorial it was outdated. But because I was new to all of it,I didn't know and needed to bang my head against the wall longer than necessary. I'd rather go with a less well written, decorative tutorial than a excellent one that might be outdated and not work anymore. If someone were to go back and at a note at the top with a timestamp staying that it's still all correct the situation at least for me would be totally different. Not sure how well that reasoning translates to Indian learners of a more stable language and eco system like Ruby.


When searching for technical things I often set the search window to the last two years. It can help a lot.


> I haven't gotten around to using turbolinks but its strongly makes me question whether I should I stop using js frameworks all together and go full on into turbolinks and go back to a simpler time of rapid development.

Exactly this. It is still faster to build websites with Rails, mainly thanks to the maturity of the ecosystem, so I still use it when render-HTML-on-the-server fits the bill. And Turbolinks 5 is surprisingly snappy, here is a demo of a forums site that I've just deployed running vanilla Turbolinks 5: https://thredded.org/.


> What I find unusual is they publish tutorials when there are plenty of good sources

In my experience, sometimes this is to flaunt/show-off/project their _percieved_ competence/understanding/knowledge of the said concepts. I know it sounds very dismissive and generalising, but I have witnessed this happen a lot of times. It seems like they don't even know what they don't know.


Teaching other people is a great way to learn something yourself, and a lot of times you don't really understand a concept until it's explained in a slightly different way.

I really don't see the problem with people reaching out and trying to share their skills and knowledge with other people. To teach something you don't have to be the world's foremost expert on a subject, you just need to know more than the person you are teaching.


> What I find unusual is they publish tutorials when there are plenty of good sources such as Railscasts, but its like the last 10 years doesn't exist to them and they rehash tutorials.

The same thing happens with Java; Indian people tend to publish a lot of the same articles. I think we're not the target, just other people in India.


I watched the whole thing. Quite entertaining, but the last 6 minutes is what matters. The strengths he mentions are:

- tools and culture that's optimized for programmer happiness and productivity.

- Promoting obviousness via the path of least surprise.

- Consistency through well-considered conventions.

- Carefully-designed value-based test suites.

- Building long-term maintainable apps

I have to ask because I am being exposed to Ruby at work right now and I find it, to be quite honest, a terrible language. I'm not trying to start a flame war, I am writing this cause I want to be open minded and have some hard-core rubyists point me in the direction of where I can learn what is good about this language. Specifically:

1) What tools / culture are optimized for programmer happiness & productivity in ruby? - I don't find anything special about ruby at all. Let me know what improves happiness / productivity. I would like to dl whatever tools / ide / plugins / gems or whatever and take a look into it.

2) Does ruby truly promote the path of least surprise? I am often surprised when looking at ruby code because I find traceability difficult in Ruby. Where does the function come from when looking at a ruby codebase? Is it from a gem? Is it from some parent class that this class has extended? I have no idea. How do people make Ruby 'less surprising'?

3) I have no idea what is consistent well considered conventions. How do I know something is a well-considered convention? Just use a rubocop linter?

4) Carefully-designed value-based test suites: Please explain this. What makes testing in Ruby so much better than in other languages?

5) Building long-term maintainable apps: What makes Ruby apps more maintainable?


To add some quick answers in my experience:

1. It's a general attitude toward building interfaces; the reader of the code is put first. Yeah underneath things may be messy, but using those things should be nice. The onus is placed on the implementor, rather than the user. Ruby libraries will go to fairly extreme lengths to make things nice to use.

2. Matz has always said that he meant the path of least surprise to him, not to every programmer. I personally find this point the weakest.

3. Yes, stuff like rubocop can help teach you this, but you really pick it up from reading and writing others' code.

4. Ruby has had a test-focused bent for a long time; and so it has a lot of tools for testing. Back when I taught Ruby professionally, I even had an organization with a Perl webapp want me to teach their testers Ruby, to write test suites for the app in Ruby rather than Perl. Perl also has great testing, so I'm not sure I agreed with them in this case, but it is something many people feel.

5. I've seen many unmaintainable Ruby apps as well; I think this is something that should be aspired to overall, not necessarily something that's true today. Or rather, there's a period of development where people get enthused with a language, write tons of unmantainable code, step back, figure out why, and then the next iteration is better. Justin points out that node, being earlier in its life, might be in step 2, and that Ruby, being more mature, is on step 4 or 5 here.


> 1. It's a general attitude toward building interfaces; the reader of the code is put first. Yeah underneath things may be messy, but using those things should be nice. The onus is placed on the implementor, rather than the user. Ruby libraries will go to fairly extreme lengths to make things nice to use.

I struggle with this a little as newish ruby coder (but not new to coding). The efforts to make a 'nice' interface can interfere with keeping underlying implementations elegant/simple.

Too much focus on the happiness of a dev cranking out new code at the expense of the happiness of developers coming along afterwards trying to understand it.

Ruby is fun to create stuff with, but I kinda prefer the Python culture that tries to drum into devs the importance of readability and explicitness for other developers. As a dev you do far more poring over others code than creating brand new stuff.


Explicitness. << This is key. Ruby/Rails just feels really implicit and magical for someone who spent the first 15 years of his career in C++, C#, and JavaScript. (I've only been doing Rails professionally for a year, though, so maybe my opinion will change with more experience.)


That's mostly an effect of Rails. "Convention over configuration" was one of the early mantras, and usually it serves well for such a large API...but sometimes it's just magic.

Ruby itself is a fairly explicit and consistent language. Some of the syntax might seem surprising at first if you haven't bought into the "everything is an object (really)" perspective.


Chef is pretty magical as well. I think it's easy to get carried away with syntax-sugary DSLs at the expense of of straightforwardness in Ruby if you aren't disciplined about simplicity.


I think the programmer happiness is more about the language itself than tools or whatever. For example, I've been doing exercism.io in Ruby and a couple of other languages. I find that because of the the syntax and extensive standard library Ruby offers, I can almost always write the most concise and readable solutions in Ruby.


re.2, to find where a function was defined, use source_location on the Method instance. e.g. I have this in a dev-specific initializer:

    class Method
      def subl
        system("subl", source_location.join(":"))
      end
    end
Now if "response.context" is throwing an exception, I can find its definition with

    response.method(:context).subl
Et voila, the source file is opened in Sublime Text and positioned at 'def context'. This even works for the nutty stuff, like methods defined dynamically in an eigenclass.

Also, pry & better_errors are your friends.


I heard of Rails before Ruby, so did a lot of people. That's your answer right there.

Ruby on Rails when it came out was: - A tool with a culture that was optimized for programmer happiness and productivity. - Promoting obviousness via the path of least surprise. - Consistency through well-considered conventions. - Carefully-designed value-based test suites. - Building long-term maintainable apps.

Most of the good thing you hear about ruby are actually coming from Rails.


Hi HN! I'm the speaker in this talk. Just a heads up that when I refer to "The Failing Hacker News", that's just all part of the satire. It's all love here!


Well, we'd believe you if you said "Nobody has more respect for Hacker News than me. I know it, you know it, everybody knows it!"


Nobody has more respect for Hacker News than me. I know it, you know it, everybody knows it!


Hacker News is a disaster. It's rigged - you can't even mention Javascript without 10 people - nasty people - saying how everyone who uses JS is deplorable. It's the worst website in history.


Using JS on the backend is deplorable. For front-end work I don't think there is currently much other choice...


(A whoosh so hard it even mussed Trump's hair)


I'm curious to hear your thoughts on Crystal...

It seems like it takes the hits of Ruby and marries them with the LLVM, to make a really awesome, performant language without sacrificing developer happiness. (which is also a tagline of Elixir)

Not asking you to start a flamewar, just genuinely curious about your thoughts on Crystal and if you've played with it.


I want one of those hats.


"I'd rather that we all became heroes than just to select a handful arbitrarily"

Preach it brother!

I do miss _why and his antics though.

While in major part satirical this talk does have a serious message. (See from about the twenty-second minute onwards.) Ruby is no longer the new hotness. Javascript is going from strength to strength, new functional programming languages like Elixir and Clojure on the rise, In the compiled language space there's Go and Rust. With our though leaders moving on who do we look to for direction? Imagine if DHH moves on, what do we do then? Justin's point is that the Ruby community needs to become bigger than its heroes.

I see Python taking on the natural language processing, machine learning, computational linguistics space. That's a missed opportunity for Ruby. As awesome as Rails is, its swallowing of mind-share risks making Ruby a one trick pony.

I think this is a conversation we need to have. I know lots of companies use Ruby but at one point I believed that Ruby had the potential to become something like the next Java, and I don't any more.


I no longer do anything with Ruby anymore, but I used to for a while (purely as a hobby) around 2004. That was a wonderful time. Rails had just arrived and there seemed to be a lot of experimentation and quirkiness around the language. _why and others showed me the power of DSLs and clever metaprogramming hacks.

From my exposure to metaprogramming I discovered other languages like Smalltalk and Lisp with its macros. I now mainly use Clojure, but I don't think I would ever have discovered that without Ruby.


I love this brief history of the Ruby ecosystem and its community, maybe the Trump parody I've enjoyed most. Maybe, the best.

Incidentally, I suppose the first 5 minutes of fighting with a three-way dongle and a poor connection, having to restart the talk, etc. is just a little preview of what every 2016 MBP owner will soon have the pleasure of experiencing themselves.


Yeah I'm not thrilled. Turns out I got bit by this bug in the new 12" MB http://iphone.appleinsider.com/articles/16/10/20/owners-of-a...


Side note - it looks like that issue (among others) may be with the apple adapter itself rather than the MB http://www.cypress.com/knowledge-base-article/known-issues-u....


Quite interesting, maybe one should also check this older talk:

Robert Martin, "What Killed Smalltalk Could Kill Ruby", 2009

https://www.youtube.com/watch?v=YX3iRjKj7C0


Ruby has always been a jack of all trade, master of none.

- It is not the fastest dynamic language like Clojure or LuaJit.

- It does not have great C interop like Python.

- It does not have an easily embeddedable runtime as Lua.

- It is not the scripting language of all web browsers like JavaScript.

- It does not have major big business backing like PHP.

- It is not as good as Lisps for meta-programming and DSLs.

- It is not amazing at concurrency like Erlang.

- It is not the bleeding edge of untyped functional programming like Racket or Clojure.

- It does not have every library under the sun like Python.

- It is not as great at OOP as Smalltalk

So while it's perfectly acceptable at all those things, it doesn't excel at anything. That's why I think it is loosing ground.

It does have Ruby on Rails, and that's still arguably the best Web Framework.


What got Ruby popular (even before Rails) was its expressiveness.

Concerning this aspect, I think it's still above the other languages you mentioned.

So if you rephrase your sentence like: "jack of all trades, master of one", that is, expressiveness (leading to the "developer first attitude", developer happiness, ecc), then I think it nicely explains why it still represents a valid choice in many situations.

If it also gets more solid in some of those areas you mentioned (and it's important to note that the community is focusing exactly on some of those areas: concurrency ("Guilds"), speed ("3x3"), ecc) then it might not only stop loosing momentum, but actually start shining again (note that I said "loosing momentum", not ground: it's easy to loose momentum when you are not a language backed by Google, but it doesn't necessarily mean you're loosing ground...)

So, considering all this, why not keep it in consideration as an almost unique (expressiveness-wise) all-around tool, and keep an optimistic mind for what it is coming up with, rather than just tagging it as a falling technology?


Relevant:

Ruby 3x3: Matz, Koichi, and Tenderlove on the future of Ruby Performance

https://blog.heroku.com/ruby-3-by-3/


The last 6 minutes with the hat off really struck a chord. Excellent talk and couldn't agree more.


The rest is sizzle, that there is the steak


mmmm steak


I'm currently watching this video and unfortunately I cannot stare at the video for more than a few seconds bc of that glowing green border around the outside of the page.

I finally had to just change the color. OP if you have anything to do with this website, please consider changing that color to almost anything else (or just remove it).


Sorry the green bothers you. You could always click through to Vimeo, which is minimally green https://vimeo.com/189525997


All good bud!


You can also just paste the URL (either the original URL or from Vimeo) as an argument to youtube-dl and it'll download it.


TIL 'Seattle-style' ruby


It's a thing! They don't use parantheses! Like savages!


Having learned ruby in Seattle coffeeshop meetups, I never realized this. I also never realized that the weirdness that pervaded Seattle hacker meetups wasn't normal everywhere else, until I attended meetups in SF. NW rubyists are... weird.

Also, totally agree with the end this video.


Went to a few seattle.rb meetups, and truly felt like the experiences captured what makes Seattle/Ruby weird, wonderful.


I heard they don't even know how to use the three seashells..


We should send missionaries.


FYI, http://keeprubyweird.com/ is hopelessly laggy and buggy on Chrome, but is mostly fine (if slow) in Firefox.


Do you know where to find the rest of the talks from this conference, by chance?


It was just last Friday (I was there; awesome conference). Usually Confreaks gets them up in a couple of weeks; here's the URL where they'll appear: http://confreaks.tv/events/keeprubyweird2016


Keep your weird contained to your monoliths and stop trying to colonize JavaScript!


All your base are belong to us.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: