Hacker News new | past | comments | ask | show | jobs | submit login
Why Ruby? (codinghorror.com)
521 points by DanielRibeiro on March 22, 2013 | hide | past | favorite | 271 comments



As a member of Python community, I hereby congratulate Ruby for joining the ranks of pretty-cool-but-not-so-hot-anymore technologies. There are years of Getting Stuff Done ahead of you. Way to go!


And as a member of the Ruby community, I welcome you to the conference drama club ;) don't forget, we were there first.


Even when the whole thing happened in a Python conference, you could argue that Adria Richards is part of the Ruby community :)


Omg... I just checked her github profile... you'd be right. :-/


I have to ask, what was the ruby conference drama?


I know of at least three incidents. The CouchDB talk at a Ruby conference in 2009 had soft porn pictures [1]. Another Ruby conference in 2008 offered a 'daycare' where attendees could leave their 'spouse, boyfriend or girlfriend' if they weren't interested in the conference itself. They called it a 'girlfriend daycare' which generated some controversy on a mailing list named DevChix. [2] These aren't the most objective and reliable sources, its just to give you an idea of that drama.

Also BritRuby was cancelled because the speaker list consisted entirely of white males, which is somehow a bad thing. [3]

[1] http://geekfeminism.wikia.com/wiki/CouchDB_talk

[2] http://geekfeminism.wikia.com/wiki/RubyFringe_offers_girlfri...

[3] http://venturebeat.com/2012/11/18/britruby-conference-felled...


I'm stunned that RubyFringe is on this list. The writeup you linked to is brutally one-sided: the partner track ("girlfriend daycare") was conceived of, named and run by women working in the larger context of supporting a conference run by a woman who happens to be the managing partner of the original Rails dev shop.

The men who had a blast as partner track participants would agree that this controversy was the ultimate tempest in a teapot.

The name change happened because there was a conference to be run and there was no battle to be fought and won.

Luckily it didn't seem to matter as none of the DevChix folks had any intention of coming in the first place. A good time was had regardless:

http://www.rubyinside.com/rubyfringe-success-and-roundup-956...


The biggest problem in many such cases isn't really the name, but the reaction to complaints. Perfectly the name would be fine from the get go, but if it wasn't, people say "hey, that's crap", organizers change it, case closed. Real crap starts when people start freaking out that "OMG feminism has gone insane!", and it's that reaction that is the real symptom of big problems. All because someone deemed the name more important than the likelihood a woman would feel welcome in the conference proper.

Similarly in the case of PyCon: joke was crap, someone called it out. Instead of an apology and admission that it shouldn't have happened, two people lost their jobs, and a lot of whistleblowers will be discouraged from speaking out. All because people think their freedom of joke making is more important than the likelihood a woman would feel welcome.

People do know those aren't complaints about direct harassment – just about a lot of individually tiny things that, once taken together, breed an atmosphere that encourages harassment and discourages participation. And sure, some women can deal with that – but they shouldn't have.

Also, a dong joke wouldn't be an issue in a perfect world, but we're not living in one.


The PyCon incident blew up because of the tweeted picture, which to many of us was _far_ worse than the stupid joke. Complain to the organizers, sure. Make fun of them at the conference, even.

But the tweeted picture to a large number of followers took it well into harassment, where the joke wasn't.


Hard to imagine anything more horrible or harassing than posting a photo of someone.


Do you seriously not understand that the problem is not that she "posted a photo of someone", but the context?


That photo got two people fired. Seems serious enough to me.


From what I understand in the Pycon incident there was an apology and admission that it shouldn't have happened, and parties were happy with the result. The problem came later because of the tweeted picture.


Psstttt... don't tell anyone... but all of the conference dramas ever have been "tempests in a teapot."


Western people that don't have anything better to do than parade some misguided PC cause.

It's what passes for "action" and "making the world better" in this era.

That, and BS orchestrated rage against foreign issues they are instructed to care about by their government (Tibet, Iranian elections, etc).

Which is sad for people who remember the SDS, the Vietnam protests, and so on.


> Also BritRuby was cancelled because the speaker list consisted entirely of white males, which is somehow a bad thing.

The dismissive tone is unnecessary, the matter was more complex than it seems. See here for a previous discussion.

https://news.ycombinator.com/item?id=5399848


I just read your link. So the issue is that they advertised themselves as a 'diverse conference' but didn't have a diverse speaker list. I don't typically look at race/gender when I look at speaker lists, so I didn't think it was a bad thing.


There are lots of ways to be diverse, its not just a matter of race/gender. Personally, I think diversity in race is a pretty week indicator of general diversity.


>Also BritRuby was cancelled because the speaker list consisted entirely of white males, which is somehow a bad thing.

The fools! Where did they go without the token woman or black or asian person?


There are many many many suitable black / Asian / woman choices for speaking at your conf. No reason to be a 'token.'


And if you haven't gotten an application from one to do so, no need to go out of your way to have one.

If they had rejected someone for being black/asian/a woman/all the above, I would have understand the outrage. But in a field where 99% of the people active are white males in Britain, it makes less sense.

Should a conference about confucianism in China also find a western person to speak, or be cancelled?

Here's a quick quiz for you: name a woman/asian/black person that is active and does interesting things in the Python community? Here are the people that come to MY mind: 1) Guido, 2) Alex Gaynor, 3) Jacob Kaplan Moss, 4) several more white geeks.

Whereas in, say, web design circles I know far more women that do interesting things.


>Here's a quick quiz for you: name a woman/asian/black person that is active and does interesting things in the Python community?

Jessica McKellar, Hilary Mason, Wesley Chun... Cancelling a conference b/c all speakers are white male is disturbing, but it's equally disturbing the idea of "token minority" is IMO.


>Here's a quick quiz for you: name a woman/asian/black person that is active and does interesting things in the Python community?

Mahdi Yusuf, Audrey Roy, Bryan Veloso, etc. You see what you have always seen. Open your eyes, there's more in front of you than what you consciously choose to know.


> Should a conference about confucianism in China also find a western person to speak, or be cancelled?

Actually, that's a pretty good idea. There are some good scholars of Confucianism who aren't Chinese, and it'd be worth getting them in.


It surprises me that people can't tell the irony.


I used to be too, but doesn't any more. :(


A Ruby conference was cancelled:

https://gist.github.com/seanhandley/4106776

And for more drama:

http://rubydramas.com

EDIT: more facts


> http://rubydramas.com

You just made my day posting this. It's absolutely hilarious!


Awesome. This is getting added to our company chatbot's little morning news report, right next to the "days since last Java exploit" one someone posted here a couple of weeks ago.


dhh really doesn't allow too many other good opinions, eh?

If I was dhh, I'd let the other smart folks have their good says without getting all defensive.

You only have to get defensive if you somehow think you are better than others. I harbor no such illusions.


There was a presentation relating CouchDB and "Performance" in a sexual way some years ago.


Sex! Mentioned in jest! Oh, the humanity!

Aren't those conferences targeted at adults? Is there some assumption in english speaking countries that the average adult is offended when he hears about sex?

Because it sure as hell doesn't hold true in most non-english speaking countries...


I think the assumption generally is that some women will feel uncomfortable with a sex jokes in an audience where they tend to be a small minority. My experience as a man is that women in groups are at least as prone to telling dirty jokes as men, but I can understand that if you're one of a handful of women in a room full of men it might feel quite different.


As the IT guy in a variety of medical offices who's known for being pretty laid back, some of the discussions that have happened when I was in the room are filthy. Also, sometimes folks forget I'm in the room.

The most memorable and amusing was the discussion by several women (some busty) of "[flopping them on the counter]", but there have also been discussions of men or parts thereof.


I live in America. It's still unclear if there's a national consensus on women being mainly sex objects with breeding potential rather than thinking, speaking human beings, and thus every woman with a brain needs to be reminded that they're properly understood to be fuckholes. Maybe in your English-speaking country, things are better?


I live in America and you're completely incorrect.


One of the first RailsConfs (perhaps even the first one) had male/female drama... There was a chatroom somewhere that people were on while the presentations were going on and some folks said some questionable things and a woman blogged about it.

I ended up having to apologize to the woman :O



I think no longer being the "hotness" is, frankly, a blessing. Python appears to have thrived and has easily stomped Ruby when it comes to performing certain classes of Serious Work (TM), despite having been absolutely destroyed in the popularity contest war.

I personally like Ruby, and I always have. I'm excited to see how the community evolves over the coming years, even as I work with it less and less (professionally, I am switching to Python).


Python wasn't destroyed in the popularity contest war [1], only the trendiness contest war.

[1]: http://www.langpop.com/


To put it in perspective, PBR and crappy t-shirts are still more popular than Python or Ruby.

Popularity only matters to those seeking fame.


As member of the programming community, I hereby welcome Python and Ruby to the ranks of technologies that people uniquely associate their identity to!


every time I try to uniquely associate my identity with some technology or programming language, reality pulls the rug out from under me... i give up, perhaps it's time to invent my own in my zero minutes of spare time.


Has it really joined those ranks? Maybe in Jeff Atwood's bubble Ruby isn't the new hotness anymore but I'm still seeing everyone and their dog gush about how awesome they are for ditching their old and busted language for Ruby. To be clear, I'm not saying Atwood uniquely lives in a bubble, we all do, and I don't mean it in a bad way. Just that maybe the people he's talking to feel that way but it's been my observation that the larger developer community is still all about Ruby for coolness' sake.


Well, everyone is somewhere on the embrace-new-languages spectrum. It's clear that the people on the far edge of that spectrum have long moved on from Ruby. But there are still plenty of people further back. I'm sure we have years to come of stories of people switching to Ruby, just as we still see them with Python sometimes.


I wonder how you fall in to these categories, for instance, Ruby and PHP were developed around the same time (though Rails obviously came later) yet Ruby is such a "cooler language" so it can't be due simply to age.

I think a lot of it is Silicone Valley's attitude to being different to the rest of the world, the majority of sites are built in PHP? Sweet, let's go with something funky and different!

It's a great attitude to have for creating cool new things, I suppose, but it feels like it's moving too fast for me to keep up, is Node.js not cool anymore? What about Backbone? Lua? what the hell is Hadoop? How about a new Lisp?


I don't think it's "just" SV. On the whole, IME, Ruby (and Rails by immediate extension) appears to be a little more popular in the US than in Europe. I can't speak to other developer communities.

For instance, I was immediately struck upon visiting family in Norway that vanishingly few shops use Ruby, and surprisingly many use .NET. I had also just finished interviewing for an opportunity on mainland Europe for a shop that uses Perl as its production language.


There are actually tons of shops that use Perl here in Europe. It's quite popular, though it's not going to hit Java or C levels of popularity.

I lived in London and there were always tons of Perl jobs there and here in Paris, I'm shocked to find out that there are far more Perl jobs than I expected. It also appears to be moderately popular in Germany.

So yeah, Perl may also be "off the radar" for many people, but it's still a strong market. Interestingly I'm seeing Perl dev pay scales getting pushed up because because there was a rush of devs going to other languages a few years ago. Now there's a shortage of Perl devs but the code hasn't gone away.


Curious to know how many new Perl projects are started these days, compared to something like say Python.

Its not very interesting to be known as a Perl developer if all there is left to do is maintain legacy code.


My current company isn't very old and they start new projects in Perl all the time. I'm leaving in May to go freelance and my first contract is with a startup in London who's work is in Perl. I also know about http://www.nestoria.co.uk/, a very successful startup that's written in Perl. Still, these are anecdotes and not data.

I hear about new Perl companies and positions all the time, but given that I've found myself specializing in Perl and watching the market (since I'm going freelance), I might be seeing this more than most. That being said, everything I've seen about Perl suggests that the language's main issue is that it's been so successful that many competitors have arisen and taken some market share. (Of course, the language can be quite ugly at times, but I try to encapsulate the ugliness when I can, so most people don't see it in my code).


https://github.com/languages

As primarily a Perl programer, I'd say there is a fairly even split between times I'm maintaining older code and writing new code in work environments. I've played with Ruby and Python a bit (by no means extensively), and when I started a web service last month (http://www.weightgrapher.com) I used Perl.

Dancer (Web framework), DBIx::Class (ORM), and other new tools make things pretty awesome; Perl isn't all CGI.pm scripts anymore.


Existing Perl shops start new projects in Perl. e.g. http://www.shutterstock.com/jobs.mhtml (which, to be fair, also starts new projects in node.js, ruby, and other things.)


My hunch, based in part on a few single point observations as well as this thread, is that not too many new projects are using Perl.

When I asked a prospective employer why they were using Perl, the answer was in effect that it was legacy from the late 90's. I never got the impression that this legacy was an onerous impediment, however. Given the scale at which they operate, switching languages & ecosystems would be costly - and (again, due to scale) they've built up a number of customized solutions using Perl that would be time consuming to port.

IMHO, given the state of the language & its ecosystem as compared to its closest cousins (Ruby & Python), I can't really see why any new projects would be started in Perl. If anyone has a counter point I would certainly love to hear it, as I will freely admit to not having had much interaction with the Perl community as of late.


> IMHO, given the state of the language & its ecosystem as compared to its closest cousins (Ruby & Python), I can't really see why any new projects would be started in Perl. If anyone has a counter point I would certainly love to hear it, as I will freely admit to not having had much interaction with the Perl community as of late.

I might, if I knew what your point was. There's just a vague implication that the language and it's ecosystem are substandard to Ruby and Python. Apparently you think it's self evident, so doesn't require explanation, but I don't feel that way, so I'm not sure what to address.

Mind supplying some examples of what you feel Perl is lacking in comparison?

To jump start it, I've been using Mojolicious[1] lately, and find it a dream to work in. And of course, being able to pull from CPAN is a plus.

[1]: http://mojolicio.us/


>There's just a vague implication that the language and it's ecosystem are substandard to Ruby and Python. Apparently you think it's self evident, so doesn't require explanation

To turn the question on its head, why should anyone choose Perl over the alternatives? I honestly have never seen a reason to switch. Not terribly many others have either, as of late. I will attempt to lay out some of my reasoning.

When evaluating a new language & ecosystem, I tend to look for an active and welcoming community, a large selection of actively maintained libraries, and lastly a language that is interesting and/or fun to develop in. I can't really pontificate with authority on how Perl fares with regards to the above 3, but I will share my perception. Feel free to contradict (of course).

1. Community : there's no doubt Perl's community has taken a bit of a hit over the last n years population wise. In addition, the Perl community has, anecdotally, a reputation for being a bit terse [1]. Nothing cut and dry here, but again nothing that stands out IMHO.

2. Libraries : by extension of a diminishing pool of active contributors, it stands to reason some modules may not be as actively supported as their counterparts in other languages. This is compounded by the uncertain state of the language's version (5,6,7?)

3. Language : I personally have enjoyed coding in Perl, and am not really too intimidated by its historical warts. It's quite possible to write readable Perl, so write-only accusations are of little concern (to me).

Notes :

* Versioning : As an outsider, the current state of Perl's versioning is confusing. Perl 6 has been in development for over a decade, and I've seen mention of Perl 5.2 being released as Perl 7. None of this reflects positively on the language as a whole as it raises concerns about future proofing and maintainability.

* Mojolicious : Looks nice. My only concern would be that, based on the GitHub commit history, it is overwhelmingly governed and contributed to by a single individual. More so than even Rails, and significantly more so than Django. This isn't necessarily a negative, but I'd certainly want to trust him before building a production app using his tool.

[1] http://blogs.perl.org/users/joel_berger/2012/10/why-people-d...


> To turn the question on its head, why should anyone choose Perl over the alternatives? I honestly have never seen a reason to switch.

Was that the implication of the original statement? When you said you didn't see much reason for a new project to be started in Perl, I took that as any new project, even in a shop that has prior Perl experience, not a project where you are specifically looking for something different than our prior language.

Indeed, if you are already using one of Perl/Python/Ruby, I'm not sure I see a reason to switch from any one of those to any other.

If on the other hand you actually meant "When starting a new project, I see no reason to use Perl regardless of whether that's where you have experience", then we still have a discussion worth having.

> 1. Community : there's no doubt Perl's community has taken a bit of a hit over the last n years population wise. In addition, the Perl community has, anecdotally, a reputation for being a bit terse [1]. Nothing cut and dry here, but again nothing that stands out IMHO.

Did you actually read that link, or just read a section title and assume it made your point? Because the author updated that section saying that he really can't talk much on that point, because he wasn't there, and the evidence shows it to have been fairly civil.

That said, Sebastian does have a bit of a reputation for being "terse". But that's one person. Since when does one person define a whole community?

> 2. Libraries : by extension of a diminishing pool of active contributors, it stands to reason some modules may not be as actively supported as their counterparts in other languages. This is compounded by the uncertain state of the language's version (5,6,7?)

You have a lot of assumptions, and are using them as the basis for more assumptions. How much has the community decreased? What percentage of the community that are still active are contributors of modules, compared to similar communities of other languages?

Or, just look at some data: https://metacpan.org/recent Feel free to change the filter on the left to new distributions, not just new releases, to get an idea of how much active development is going on. It may be more or less than other languages, but I think what's shown should be sufficient to disabuse you of the notion that no development is going on.

As for the the version number, this is a non-issue. There is no issue of version numbers, it's a solved problem. Some people in the community occasionally bring it up because it's a sore spot, and it gets a lot of play in the tech media sites, but it's really rather simple (if different than most other languages). Perl 5 is Perl 5, and will stay so unless someone forks it and competes. Perl 6 is a new language, intended as both a successor and a companion to Perl 5. People are NOT expected to migrate Perl 5 code to Perl 6, it is a different language. This has nothing to do with the state of the language's future. Perl 5 is still being developed. Perl 6 is still being developed. Both are available, and useful, for specific subsets of uses. For Perl 6 that happens to be a somewhat smaller subset currently because of performance issues, and some portions of the spec still being fleshed out (this is a different discussion).

> 3. Language : I personally have enjoyed coding in Perl, and am not really too intimidated by its historical warts. It's quite possible to write readable Perl, so write-only accusations are of little concern (to me).

Agreed.

> * Versioning : As an outsider, the current state of Perl's versioning is confusing. Perl 6 has been in development for over a decade, and I've seen mention of Perl 5.2 being released as Perl 7. None of this reflects positively on the language as a whole as it raises concerns about future proofing and maintainability.

Blame tech media sites for taking an internal community discussion, misunderstanding the state of things, taking random suggestions from people as real community movements, and playing it up for page views. I'm sure we can agree the media isn't infallible.

I'll agree that Perl 6 is unfortunately named. If you know the eventual goals (Perl 5 interoperability) the name makes a bit more sense, but it has caused some in the Perl 5 community to feel constrained to a version number (thus the talk of Perl 7). In the end, this is a marketing problem (which is why you see it from the outside).

> * Mojolicious : Looks nice. My only concern would be that, based on the GitHub commit history, it is overwhelmingly governed and contributed to by a single individual. More so than even Rails, and significantly more so than Django. This isn't necessarily a negative, but I'd certainly want to trust him before building a production app using his tool.

There's a fair number of other people that have committed[2], but I won't argue the impression that it looks to be primarily Sebastian (even if there's supposedly 4-5 core developers, according to changelog notices). That said, from your earlier link that explained him leaving the core Catalyst team[1], he started Catalyst, so he's got some experience in this area.

I feel fairly certain others would step up to the plate if he couldn't commit as much.

[1] http://blogs.perl.org/users/joel_berger/2012/10/why-people-d...

[2] https://github.com/kraih/mojo/contributors


> Was that the implication of the original statement? When you said you didn't see much reason for a new project to be started in Perl, I took that as any new project, even in a shop that has prior Perl experience, not a project where you are specifically looking for something different than our prior language.

Yeah. This wasn't about a Perl shop switching gears, but rather seen from the POV of a blank slate. I tend to think in terms of new startups, and put myself in the shoes of someone trying to bring a new product to market.

>Did you actually read that link, or just read a section title and assume it made your point?

I did. A lot of the back-and-forth in the comment section helped me make the decision to include that link as illustration.

>It may be more or less than other languages, but I think what's shown should be sufficient to disabuse you of the notion that no development is going on.

I never said "no development" was going on. Please don't put words in my mouth.

My concern is that upon requiring a module for purpose X, to find that libraries A B and C are poorly supported / no longer supported. This isn't really as simple as counting global library updates on a given day.

For what it's worth, roughly twice as many new modules were added to ruby gems during the equivalent time period [1]. The data isn't made accessible anywhere near as neatly as on metacpan, and requires futzing with the API.

>You have a lot of assumptions, and are using them as the basis for more assumptions... Did you actually read that link..I might, if I knew what your point was...Apparently you think it's self evident

Feedback : you've spent a lot of time talking about me and my perceived flaws. Not sure if this is what you intended, but this conversation feels hostile. My intention is certainly not to be on the offensive, and I hope the same holds true for you.

[1] http://guides.rubygems.org/rubygems-org-api/#activity


> I did. A lot of the back-and-forth in the comment section helped me make the decision to include that link as illustration.

Ah. I assume when linked to an article that the article itself is the intended object of my attention. The comments are indeed a valid source of community info, but I also imagine an article title of the format "Why people don't like X", you're going to get some polarized views.

> I never said "no development" was going on. Please don't put words in my mouth.

You're right. My apologies. I know you weren't implying that. That was a sloppy turn of phrase on my part.

> My concern is that upon requiring a module for purpose X, to find that libraries A B and C are poorly supported / no longer supported. This isn't really as simple as counting global library updates on a given day.

Indeed, I agree with that assessment. I struggled with a way to provide the links as a way to indicate there is development while also alluding to the fact that I think number of updated and new modules over time is a bad metric for quality of modules, as well as being misleading as the number may change over time as many of the common, core needs are met, and those modules stabilize.

That said, CPAN module pages show the last updated time, as well as the dates of previous commits. The dependency (and reverse dependency) graphs available on metacpan also go a long way towards letting you know how much else a module relies on (for the purpose of assessing possible problem modules farther downstream), and how stable and mature a module is (to some degree, considering how many other modules rely on it).

> For what it's worth, roughly twice as many new modules were added to ruby gems during the equivalent time period. The data isn't made accessible anywhere near as neatly as on metacpan, and requires futzing with the API.

Yeah, I did some research, and found it a bit harder to get counts for Python and Ruby. But we agree raw count isn't all that useful, I was just including it to show that there was activity, and of a level that I would consider significant.

> Feedback : you've spent a lot of time talking about me and my perceived flaws. Not sure if this is what you intended, but this conversation feels hostile. My intention is certainly not to be on the offensive, and I hope the same holds true for you.

It's definitely not what I intended.

> I might, if I knew what your point was

Intended literally. I thought the statement was vague, and I wasn't sure the actual point, but it appeared to indicate something regarding the desirability of using Perl for new project due to the state of the language in comparison to similar languages. I was trying to be explicit.

> Apparently you think it's self evident.

Not meant to be snide, although I can see how you could take it that way. I assume assertions without explanations are put forth because the reasoning is self evident (or discerned easily enough to be self evident to those familiar). There were no explanations put forth, and if you did think it was self evident, that expresses something in itself. I have no doubt there are a great many people that will argue similar points to your original statement with little to no experience, by simple repeating claims they've heard as though they are fact.

> You have a lot of assumptions, and are using them as the basis for more assumptions

I'm not sure how you think this is hostile, but obviously by it's conclusion you do. it was in reference to a statement where you seemed to assume the Perl community was in decline, and used that to make more assumptions about module quality. You can't use community population and involvement decrease to indicate module decline because of lack of people without first qualifying community population and involvement decrease. That's what I meant about making assumptions, and using those to make more assumptions.

> Did you actually read that link, or just read a section title and assume it made your point?

A poor choice of words, but meant literally. The only portion of the article I found that might support your point there was replaced by a retraction that reversed the stance. I felt compelled to ask whether you had actually read that, or just went by the section title "The Developers are Mean/Antisocial/Stubborn/Other". A poor choice of words on my point, and you clarified your point to reference the comments, which indicates why you included that link.

> My intention is certainly not to be on the offensive, and I hope the same holds true for you.

No, I enjoy a good discussion, and actually attempt to monitor my speech (written or verbal) closely to try to avoid misunderstanding, but that's so hard to do with a natural language. :)

P.S. While it may seem like I'm trying to defend myself overly hard by addressing each point where you interpreted me as possibly hostile, I think it's important to explain my true point in each case to accurately reflect what I was trying to convey. If you interpreted them as hostile, it's possible you may have also misinterpreted my point, as tone often affects meaning. Individually addressing each allows you to look at each one anew.

Okay, that's enough meta. I do find examining the misunderstandings of an argument/discussion fascinating though...


I appreciate you taking the time to address the statements I was not interpreting correctly. It goes without saying, but communicating over text always leaves some small room for misunderstanding.

This discussion has certainly left me interested in re-exploring the world of Perl. As minor as it sounds, I really enjoyed playing with metacpan, which as mentioned is definitely more fleshed out than its counterparts.

In addition, while perusing various Perl repos I remembered how much I once liked writing Perl, and will probably revisit it in a side project (if not production just yet).


> It goes without saying, but communicating over text always leaves some small room for misunderstanding.

Definitely. Even spoken English is rife with misunderstandings, and when the tone is almost entirely removed as in writing, that just makes it all the harder.

> In addition, while perusing various Perl repos I remembered how much I once liked writing Perl, and will probably revisit it in a side project (if not production just yet).

Nice to hear!

Re: metacpan, it's amazing what interesting modules show up when you follow some of the metacpan dependency graphs. IMHO, once you're above a certain number of modules, the problem starts becoming less of whether a solution exists and more about how the candidate modules rate WRT reliability, platform compatibility, dependencies you do or do not already have, etc.


Hi doktrin,

Regarding -new- Perl projects, take a peek at the Mojolicious web framework [0] (because nearly everything using it is a new Perl project). It's the most fun I've had in years.

If nothing else, the Mojocasts [1] will probably bring a smile to your face (personally, I laughed out loud at times because it's so strangely simple and brilliant).

0. http://mojolicio.us/ 1. http://mojocasts.com/


Norways tech sector is small enough that it is severely dominated by entrenched interests with a Microsoft background, much more so than in larger countries. The places that tends to use Ruby tends to at least have started doing so when small, and the number of startups in Norway is vanishingly small simply because we're a small country.

(I'm from Oslo, but moved one of the startups I co-founded to London 13 years ago...)


Interesting. As a Norwegian who has never actually lived in Norway (although I have visited often and speak Norwegian) I would love to pick your brain about the tech scene there. My email is in my profile if you have a few moments to spare.


Ruby and Rails seem to be very popular here in Berlin IT scene. Still PHP and Java are a bit more popular, but it's not so hard to find work if you're a good Ruby engineer.

http://marsjobs.net/positions


What's about Scala community in Berlin?


There's also the question of population and total market size...


>> I think a lot of it is Silicone Valley's attitude to being different to the rest of the world, the majority of sites are built in PHP? Sweet, let's go with something funky and different!

I don't think that's it. Personally, I switched from PHP to Ruby because 1) Ruby seemed like a great language and 2) I saw a lot of excitement about Rails and 3) it seemed like a marketable skill.

But a few people had to decide #1 for #2 and #3 to happen. I think any new technology gets its initial hype because of some merits it has, even if the hype later gets out of hand.


"It's a great attitude to have for creating cool new things, I suppose, but it feels like it's moving too fast for me to keep up, is Node.js not cool anymore? What about Backbone? Lua? what the hell is Hadoop? How about a new Lisp?"

As far as the last part is concerned, what about R7RS Small, and later R7RS Large?


> you really need to throw fast hardware at it for good performance.

That's where — non syntetic benchmark, anecdotal real-world use — Python rips Ruby apart. I cringe every time I wait for "bundle exec {rails console|rails server|rake|cap}". At every point in development, tests and production, ruby execution feels sluggish. Our routine Python dance on my 4 years old Core 2 Duo laptop runs circles around our Ruby stuff on my desktop i7-2400.

2.0 brought Ruby into decent land, but there's so much more to do. Future developments look interesting but I fear about the performance impact of new features (such as refinements).

I'm definitely keeping an eye on Topaz.


Topaz won't help for the case you describe.

The big problem with bundle exec (or Ruby startup times in general), is the ludicrous amount filesystem access because of searching through a ridiculous large number of files for each "require". E.g. if you have a ton of gem's installed, most "require" calls will look for the files you require relative to the root of every gem....

Much more extensive use of require_relative, and fewer search paths can fix that entirely.

Try an "strace 2>&1 -e last64,stat64,lstat,stat bundle exec [yourcommand] | less" and be prepared to be shocked at the waste.

(EDIT: This of course assumes you have strace; on most Linux distro's that's just a package install away - I don't know about OS X, and I've got no idea how to make dtrace do the same)


> I don't know about OS X

DTrace, eg.

   $ sudo dtruss -d -f script/rails server
you can also attach to a PID. If you are a developer on OS X it is good to know DTrace and what it is capable of. There are a lot of default scripts installed in OS X and you can write your own (if you have ever run iosnoop or execsnoop then you have already used DTrace scripts), see:

http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scr...

http://hints.macworld.com/article.php?story=2007103112182371...

https://wikis.oracle.com/display/DTrace/Introduction


Thanks. I don't actually run much stuff on OS X - I use it as my work desktop, but all my "real work" is done via ssh to Linux boxes, so the OS X box is rarely running more than a browser, iTerm 2 and Thunderbird, all maximized. I only "see" OS X when something crashes....

EDIT: Completely unrelated, I just noticed who you are. We met in Mike's house when I came over for the launch of Edgeio. And I just realized how long ago that is.


require is way way faster in Ruby 2.0 typically bundle exec rails c will drop from 8 seconds to 4 just by upgrading the vm.

optimising this is not an impossible problem its just going to take time, its far from a trivial one.


It is fairly trivial if you're willing to acknowledge the real problem:

You can't pretend to not know about paths.

You can make the current case faster by optimizing this and that, but it boils down to reducing the number of stat calls, and the ways to do that are:

- Minimize the number of paths in the $LOAD_PATH. Ideally there should be one path there, but that might not be practical.

- require_relative everything when you know where it is.

As a bonus you get substantial less risk of breakage because of accidental filename clashes (yes, I've had filename clashes happen several times).

Now, this isn't quick, because it'd mean making people used to require 'gem-name/file' and have gem/bundle ensure that the default load path contains a symlink to the real current include path for every gem, but this doesn't even need a single interpreter change.

The problem here is not the Ruby implementations, but the gem ecosystem: This only becomes difficult if one wants the interpreter to automagically find files you've dropped all over the filesystem.


The biggest problem here is RubyGems which uses "load the specification for every gem you have installed"-approach. 300 gems installed = 300 files read at startup.

See also https://github.com/judofyr/quickgem for a monkey-patch that speeds startup time up to 4x.


300 files is nothing. I just strace'd an app I'm playing with that does 145,000 stat calls on startup.... It's in the process of being rewritten to do require_relative whenever possible. As for the gems, it'll probably end up with a hack to "precompile" a list of absolute paths after installation...


Another option is to build an index of the various parts of $LOAD_PATH. I monkeypatched (JRuby) to do this at runtime (that is, re-index every launch), and I saw a modest speed up in Rails boot time. If there were a standard way to build a semi-permanent index (updated by 'gem install', etc.), I'd expect the index to give even further gains. Of course, this is more invasive than your suggestions.

https://gist.github.com/pmahoney/3996724


I thought installing an SSD would speed up development on my local system in Rails 3 - it barely changed a thing.

It does make things like tests etc run way, way faster though.


Yeah, that's at least in part because of the stat()/lstat()-blowup.

After the first run most of the stat data will be cached in-memory anyway, but tens of thousands of unnecessary system calls hurts even with the actual data in memory...


For our use even assembly does not "rip Ruby apart.", looking at our 2 most common pages, topic list page and topic page, 30-50% of the time is still spent in SQL. Ruby 2.0 bring decent launch times to Rails (important for dev) due to the fixes falcon committed. Overall, the execution engine itself is pretty sweet and we have incredible visibility into the inner workings with flame graphs http://samsaffron.com/archive/2013/03/19/flame-graphs-in-rub... .

There is plenty of optimisation work left to do, but the vast majority of the issues we encounter can be addresses in either the application or libraries.

Sure, Google Go is much faster, no arguing there. Python and PyPy oth would be ballpark similar to Ruby 2.0 these days from benches I have seen.


>> 30-50% of the time is still spent in SQL

This. Ruby may be slow compared to compiled languages, but after working on Rails apps where it takes 30 seconds to run the tests, I was delighted to develop a gem using TDD. My gem has 100+ tests, and the suite starts and finishes in less than a second.

Our apps' tests suites are slow mainly because of database access, secondarily because of Rails, with Ruby itself being the smallest factor.



er, Python and PyPy are not in the same ballpark, so I'm not sure what you're talking about.


do you have any real world demos / benches etc that back you up here?


Let me google that for you http://speed.pypy.org


Just as a note: by default any modern rails app is going to call Bundler.require, so you only need to use bundle exec if e.g. your system rake is a different version or your system rails is not 3+. I've heard claims that this can have non-trivial performance effects.


If you're a Ruby developer, do yourself a favour and buy a SSD drive. It makes a huuuuuge difference !


Fixed it: "If you're a developer, do yourself a favour and buy a SSD drive. It makes a huuuuuge difference !"


Yep. I went from Rails development on an underpowered netbook (no SSD), to a 2012 Macbook Air. The difference is staggering.


Rails is the biggest offender in terms of startup speed, which I've noticed much more since I started playing with Padrino. But you're right; there's still a lot that could be done to improve speed.


You never need to run `bundle exec rails x`, just run `rails x`. Rails specifically does a lot of work so that you don't have to. For more: http://blog.wyeworks.com/2011/12/27/bundle-exec-rails-execut...


I agree completely with your anecdotal experience. It has been my experience as well.

However, I'm quite sure that the speed difference we've observed here is not due to the language implementations at the interpreter level. The two languages are similar in performance in that respect (Python being maybe incrementally faster, but not enough to notice most of the time). The faster speed noticed in this anecdote has got to be almost entirely due to the superior efficiency of the code in the tools we're using. Bundle is just slow basically.


You're talking about startup time, which is bad in this case because of the overhead Rubygems introduces by adding loads of directories to the require load path. Pre-rubygems, everything lived in a traditional $PREFIX/lib/ruby/{,site-ruby/}$VERSION/ directory just like Perl and Python, and startup times were much more comparable.

Atwood is talking about general runtime performance, and comparing it with the fast, mature JITed VMs that drive CLR languages. Python (and indeed other languages in its class) compare just as badly there.


Ironically, CRuby 2.0 has a much better GC, so it should perform much better than CPython.


It's somewhat a wash against Python 3.3 in benches I've run but that's still a big step. Python, Perl and Ruby are broadly in the same zone now.


Ruby 2.0 has a real GC that doesn't touch all pages, so it allows efficient fork.


the big pain at the moment with the MRI GC is that it stops the world, on Discourse we see a 50-60ms stall every few requests. Can totally be mitigated with unicorn and oobgc (we will move to this), still a PITA.


Check out Crystal.


I'm assuming you mean this language[1]. Crystal is a new language that uses Ruby syntax and compiles to C using LLVM. Pretty cool looking actually.

[1]https://github.com/manastech/crystal/wiki/Introduction


Yes I meant that language, glad you find it interesting


Are you using bundle exec instead of binstubs because you don't know about binstubs, or because you like things going slow?


Enough with the developer snark. You don't need to mock somebody just because they don't know about every tool in existence.


I'm happy you did something different, even though your reasons are of course all wrong. I do wish it had been Node and not Ruby - JavaScript fits most of your reasons for going with an open source stack a lot better than Ruby does. Why not Node was the post I was hoping to read.

But back to why you're wrong on the internet:

1. .NET licensing isn't complicated, SQL Server is. There's an easy fix for that.

2. I don't think StackOverflow really participates in the best that the .NET open source world has to offer. From the information I can read, you (and team) published a lot of the code you wrote under open source licenses, but as far as I know the StackOverflow stack didn't really interact with many (any?) open source .NET projects that weren't run by StackOverflow - e.g. writing MiniProfiler instead of working with Glimpse, working with Mono, etc.

3. There's a lot that's changed in the .NET web space in the past year as they've moved from just releasing the code (see 2 above) to accepting pull requests. This has resulted in a good amount of accepted pull requests - community contributed features which ship "in the box" and are officially supported by Microsoft. Sometimes that's lines of code, but more often it's integration of popular community libraries. If anything, that trend is accelerating.

(also posted on blog comments, but nobody reads those)

Coding Horror Fan, Jon


.NET licensing is complicated from my perspective. It's not about .NET itself, but I have to deal with Windows licenses and choose an edition (foundation, essentials, standard, datacenter), I have to use per CPU or per server licensing depending, I have to buy client access licenses, do I want to buy the software or pay for a yearly subscription, etc. None of these are insurmountable problems, but it's a different style of doing things than a lot of us like. Specifically, it seems like they're trying to get you to talk to a sales person. In fact, they have a nice section on how-to-buy Windows Server, I'm supposed to get price quotes, etc. There are many in the industry that like sales people. They like thinking, "wow, I just talked to that sales person and I can just ferry the information from the sales person to my organization and my job is done! I'm the people person!" For many of us who just want that nonsense to get out of our way, it's just terrible.

Now if a box breaks, I have to order something with the same processor equivalents. If I want to move to the cloud, I can't take my licenses with me unless I'm on a Software Assurance subscription. It limits my options, it takes organizational overhead. If I bought licenses on the processor model for two servers that I want to combine into one larger (more-core'd) server, can I do that? Can I set up VMs running it within the box (even just for testing)? What happens when the next version has a different structure? VMWare made a large licensing change that switched from CPU to RAM (or the other way around) and it hit people that had gamed their old licensing model hard.

Again, I'm not saying that the licensing is impossible, but it is a problem. With Ruby, I can launch on a $20 Linode or any number of hosting providers. Heck, with Windows, my cloud providers are limited to Amazon and Rackspace. Microsoft's stack has awesome value. Visual Studio is awesome. I prefer C# to Java and I prefer SQL Server to MySQL (and to an extent PostgreSQL since it supports things like clustered indexing and with 2012 they finally implemented a good LIMIT/OFFSET). But those goodies come with a price that's more than just dollars. There's overhead in purchasing, overhead in pre-planning, and limitations.

"Why not Node.js" would be a great post. Without taking anything away from Node, it is different. If you use Django, Pylons, Rails, .NET MVC, Play (at least the Java side), etc. Rails should feel familiar. Some people don't like evented programming. I think a lot of people don't like JavaScript as well. It's ok in my book, but I doubt it would be so popular if it weren't the only language that browsers spoke. Similarly, it wouldn't be faster if companies like Google weren't pouring energy into it. Node.js offers some wonderful benefits. Event-driven programming with non-blocking IO can be wonderful for many things. The V8 JavaScript engine is fast. But "why not Node.js" would really be "why not evented?" The answer might be something lame like, "well, people are comfortable with MVC and process-based concurrency is easy and we're not planning on doing something that an evented model would give us a huge boost." Again, evented programming is very useful, but it's also different. While I think all CS programs should teach concurrency, some don't and even people who went through such a program don't always like it. Processes are simple (even if they waste cycles context switching, even if they flush the TLB). Node.js has done our broader community a great service by bringing up evented programming and creating a good environment for those who want it. But the answer to "Why not node?" could simply be "I didn't feel like evented programming". No matter what their differences, MVC frameworks are more alike to each other.


I agree to a certain extend if you're running your own servers. It's not all that complex, and there are tons of programs that give you free licenses (e.g. the BizSpark program StackOverflow used), but it is another thing to think about.

If you're talking about the cloud, you should definitely include Windows Azure in the mix, especially Windows Azure Web Sites. You can spin up sites for free and just start paying when you want a custom domain, it runs Node / Python /PHP / ASP.NET (without any changes to cloudify), you get FTP access, etc.). With ASP.NET in Windows Azure Web Sites you don't have any licensing considerations or costs, either.


Are you trying to say that both node and C# are better open source options than Ruby? Or rather that node is better and C# is not as bad as Jeff says?

Either way -- to say that C# would be a better platform for developing an open source project is far-fetched at least (the developments of the last year notwithstanding, although agreed that MS has come light years in that direction from where it was just a short while ago), and to say node would be better is, well, not uncontroversial.

I understand, given your position, this is a point of view you must advocate (although...node? really?), but neither point makes Jeff's rationale anywhere near "all wrong."

Agreed re: SQL Server vs., say, postgres. I'm actually not sure why we don't see that option (ASP MVC + postgres/mysql) a lot more often than we do.


Let's start with the "must advocate" part. I work for Microsoft because I really like their web products. They don't tell me to comment on Hacker News, I don't get a HN comment bonus. The only possible impact commenting on HN could have on my job is negative. I'm just saying what I think.

I said that given a move away from .NET, Node would have been a better choice. I think Node is more open source friendly for a lot of reasons. For one thing, if cross platform friendliness is a primary driver, the Rails stack doesn't run easily on some of the most popular operating systems. The dev setup instructions are getting better, but they all began with "step 1. buy a mac". Is that really more enabling to the 2nd and 3rd world developers Jeff mentions? It's admittedly gotten better as they've added some Linux docs.

I also listed some reasons that C# is not really a non-starter for open source. Jeff's first two points don't really sell Ruby over .NET + Mono to me, and I explained that I don't think Jeff or StackOverflow really participated fully in the .NET open source ecosystem in a way that gave them a lot of value. There are a lot of self fulfilling prophecies in the .NET open source world.


> I work for Microsoft because I really like their web products.

Cool! Good to have gigs we like.

> "step 1. buy a mac". Is that really more enabling to the 2nd and 3rd world developers Jeff mentions?

Eh. Linux is just fine for Rails dev. The Mac thing is mostly a hold-over from earlier days when TextMate was the default editor, and because most Rails shops expect it. In fact one of the most "enabling" scenarios here is to take a cheap, lightweight Ubuntu dev laptop and ssh into a dedicated development server, do all your editing on vim or emacs.

> I also listed some reasons that C# is not really a non-starter for open source.

Yeah, but it's a hard sell is it not? When considering tech stacks to risk your entire project's future on, what's the practical difference between "Not Really A Non-Starter" and "Really, Really a Non-Starter"? Not much.


I develop Ruby on OS X using Ubuntu running in a Vagrant VM, just because package management and configuration is so much easier that way (although Boxen may change that soon). Well, and also because we use Linux in production, and platform specific bugs, though rare, are not unheard of.

Windows is acceptable for Ruby development if Vagrant or JRuby is used, although the platform is admittedly not a first class citizen.


Sorry but that's total FUD and has a very obvious agenda. Ruby is preinstalled on most Linux distros, and thus Rails is a gem install away. In production, people only run Ruby on Linux. I, and a heck of a lot of people, do all Ruby or Rails dev on Linux. So I guess you must mean Windows.

So perhaps what you actually meant to say is that Microsoft haven't stepped in to do all the work for supporting Ruby on Windows, like they did with Node?


It's only fud if that's your worldview. I wanted to get set up on discourse and all the docs were written for Mac. It's Mac first development. That's fine, it's just not any more open than Windows first development.

I think Rails might have gotten farther on Windows if the community had less of an anti-Microsoft mindset from the beginning. http://www.codinghorror.com/blog/2008/02/douchebaggery.html


I used to work at Microsoft so i can alpreciate how that shapes the lense of how you view the world.

I think the statement that Rails might of gotten further on the windows platform is a ridiculous statement. Ruby as far back as remember is a language that prefered environment was Linux. There was a point where there was no windows version. I remember when even on OSX the installation of ruby was an endevour. OpenSsl incompatabilities, gems with c extensions that never worked right (rMagick which is a Linux first lib). So the underlying language that backs Rails is not windows friendly. There is no doubt in my mind that Windows would have been a hindrance not a positive.

Macs are only popular because for the most part they are similar enough to Linux that you can develop on a Mac and deploy to Linux. I don't know of one Rails shop that chooses to deploy on Windows.


That's not what I meant, although I see that the "it's Mac first development" thing didn't help. I agree with your point that the BSD heritage of OSX really positioned it well as a *nix dev platform.

I didn't say that Rails would have gotten farther on the Windows platform. That would be silly; you're assuming that because you're assuming I have misshapen lenses and / or am an idiot. I get that some mostly Microsoft devs are sheltered, but some aren't. I've worked with Mac and Unix going back a few decades.

What I said was that the native Windows / Node experience is probably better than the native Windows / Rails experience because the Rails community by and large really isn't all that interested in how it works on Windows (see link).


Because a single project in a language has Mac only development instructions the language and ecosystem is Mac only? What leads you to think the discourse devs would have documented x-platform if using node?


And the "all wrong" thing is a bit of an inside joke. He's occasionally slightly right, but I won't ever tell him that.


Ah, got it. Humor achievement unlocked.


Did you read the post at all?

>Ruby isn't cool any more. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago. Our project isn't cool, it's just a bunch of boring old Ruby code. Personally, I'm thrilled that Ruby is now mature enough that the community no longer needs to bother with the pretense of being the coolest kid on the block.


Of course. Did you read my comment at all? Two can play this game.


Actually, I think I did suffer from some reading miscomprehension.

I apologize for the inconvenience, tho I do disagree with your base premise. Regards,


Why not node? Async is a pain in the ass performance optimization for a certain class of problems.

Another plus for Ruby is JRuby. It's very nice to have access to JVM libraries from time to time.


As a long-time user of Node, I'm curious - Why Node? Why over Python or Ruby?


mdasen replied to that pretty well in second half of his post.


Jeff Atwood comes on your podcast and this is the thanks he gets??

:-)


We've been arguing for years, mostly because he's always wrong on the internet. ;-)


> Ruby is a decent performer, but you really need to throw fast hardware at it for good performance.

Everytime a performance thing comes up I still think "Try JRuby if it is that much of a problem"

Of course there are downsides but the code itself is not one of them. Most apps will run on JRuby without trouble without any conversion work.

The biggest obstacle I think is the switch from things like passenger / unicorn to totally unfamiliar servers like trinidad or torquebox (and the inevitable breakdown of jruby to java abstractions when you want to try advanced stuff and you have to learn java'isms like JMX etc.)

It didn't actually occur too strongly in this case but if ever I see a blog post about "Ruby didn't perform well enough" and they DIDN'T give jruby a try then my forehead gets a slapping.

JRuby - The forgotten option between more hardware and switching to a different language.

[Edit] Actually I should clarify, I have not yet compared ruby2 vs jruby and the applications I write tend to be very multi-threaded which plays into jruby's hands.


JRuby is really cool, however whenever I tried using it, well it was painful. It's not JRuby's fault as the devs did a phenomenal job on making it a first-class Ruby implementation, but you always have issues with its startup time added on top of the already awful startup time of Bundler/Rails, or with incompatibilities with libraries, or with libraries behaving differently or being incomplete on top JRuby versus Ruby MRI, or with instances in which you have to mix Maven or Jars with Bundler / RubyGems and so on.

In the end, for new projects if you want to use the JVM, it's way better to use a language that was grown on top of the JVM. Like Scala or Clojure, or maybe even Java 8 when it comes out. Which is exactly what I personally did, being tired of the limitations that the reference Python/Ruby interpreters have.


I actually know of a few people who use MRI on their local machines and JRuby on the servers.

Not ideal but one option.

Regarding mixing jars / maven and bundler. Well to be honest I have never been in that position w.r.t maven but including jars in a project has never really been a problem for me. (Plus on MRI those jars wouldn't have been available in the first place!)


I ended up with a mix when I wanted to run my app on top of a Jetty server. There are projects like jetty-rackup, but when you're on top of the JVM sometimes you feel the need to throw a servlet for a problematic endpoint in there, or some middleware like a filter that you could use for websockets or some library that doesn't already have wrappers packed up as a gem and so on.

JRuby is great, all I'm saying is that when you feel the taste of a competent virtual machine there's no going back :-)


You seem to be confused. Clojure startup time is actually worse than JRuby, especially when you throw a tool like Leiningen into the mix:

http://martinsprogrammingblog.blogspot.com/2012/02/why-is-cl...


Phusion Passenger 4 supports JRuby (and Rubinius): http://blog.phusion.nl/2012/10/30/phusion-passenger-4-0-supp...


I've been loving Passenger 4 so far, multiple ruby support is great. Thank you for your efforts and advancements with passenger.


Holy hell, how did I miss that? Great news!


not the case for us, Ruby 1.9.3 outperformed latest JRuby for us. Ruby 2.0 completely smoked it (and with GC tuning and tcmalloc even more), we leverage a fair amount of native gems, like the oj json serializer and fast_xs. Trouble is we would need Java implementations of some key bits of functionality.

Now I love Charlie's work and would port to JRuby in a blink if it was faster. But as it is now, for us, it is not.



Keep in mind, the only benchmark I really care about is Discourse itself, I am sure that in many micro benchmarks JRuby is faster and/or slower


Actually yes I should have mentioned that I hadn't compared ruby2 and jruby, mea culpa.


Curious as to why Java didn't feature in the choices - considering just how similar Java is to .Net yet having none of the licensing issues and a huge (the biggest?) set of freely available high quality libraries...


> If you want to build truly viable open source software, you need people to contribute to your project[...]

I think it would somehow be very hard to get people excited about contributing to the effort to build a new, amazing piece of forum software... in Java.

Clojure, maybe ;)


I think it would somehow be very hard to get people excited about contributing to the effort to build a new, amazing piece of forum software... in Java.

Don't underestimate what effect Java 8 will have. Sure, closures are old by now, but JDK 8 combines them with streams, similar to those that have become popular in Scala and Haskell. You can write stuff like this,

https://github.com/mikaelhg/lambda-demo/blob/master/src/main...

without creating intermediate lists or whatever. Replace a call to a collection's stream method by parallelStream and subsequent operations such as map are parallelized.

Java 8 is perhaps not `Haskell cool', but you'll be able to get it past management and still enjoy some of the functional programming fun.

(Now, give me value structs and reified generics Oracle!)


> you'll be able to get it past management and still enjoy some of the functional programming fun.

I think a lot of technologies where the ability to convince management to use it is a feature are ones that don't get individual open-source contributors the most excited, unfortunately.

Maybe I'm naive to Java's open-source community, but from the outside I don't envision it to be as active as Ruby's (at least outside of Android), even with Ruby no longer being "the cool thing".


Maybe I'm naive to Java's open-source community, but from the outside I don't envision it to be as active as Ruby's (at least outside of Android), even with Ruby no longer being "the cool thing".

Actually, that was my view too. In my previous job, I had used C, C++, Prolog, and some Haskell for four years. My outside view was that the Java opensource ecosystem is boring. My current employer uses Java almost exclusively, and I have to admit being surprised how much high-quality open source libraries are available, packaged up for Maven.

I still think that Java is so-so, but the open source ecosystem is quite strong, and there are really excellent IDEs (such as IntelliJ IDEA).


I'm glad to hear otherwise! I have a few friends that are Java nuts, so I'm glad they're not as nutty as I thought!


> Maybe I'm naive to Java's open-source community, but from the outside I don't envision it to be as active as Ruby's

Check out this slides: http://www.slideshare.net/blackducksoftware/open-source-by-t...


Like I mentioned, I know Java the language is active, but how much of that is server-side Java vs. Android (which I guess is a massive contributor).


Some examples of Java-based non-Android open source projects that are very widely used:

http://www.jboss.org/projects http://projects.apache.org/indexes/quick.html


Oh, am I missing something or is this just basically Java finally getting LINQ?


Java is at the 3rd place on GitHub on Top Languages (sharing it with Python), which proves that there's collaboration going on in Java projects https://github.com/languages


A lot of Java projects on Github are Android related.

On server-side, you have a lot of alternatives you can choose from, but on Android, most of the time, you don't have the choice.


There are also non-Android related Java projects there, for example from the guys from Netflix, SpringSource, LinkedIn, Twitter, etc... but I think that you're right, a lot of Java projects are Android related.


An interesting phenomenon is a lot of Java projects on Github if they are not Android related, very likely they are from big guys like Twitter, Netflix, LinkedIn, Yammer etc. Definitely they all have the reasons (e.g. performance, static typing) to use Java or JVM technologies, but if you count the number of projects from indie developers, Ruby, JavaScript & Python are much popular - and they are the target audience of Discourse.

Java is still the No.1 language but it is unhealthy (IMO) if most indie developers prefer to ignore it, despite the benefits it bring.


So, your answer is that java isn't cool enough? Did you see the part of the essay where he wrote that he wasn't looking for the cool kids flavor of the month?


The problem is choosing a framework for Java. Most of them are just big , unwieldy and force overwrought abstractions and 1000+ line XML files on you.

The big exception is Play! Framework but that seems to have mainly shifted over to the Scala side of things.


> The big exception is Play! Framework but that seems to have mainly shifted over to the Scala side of things.

Dude, Play 2.x is perfectly fine for Java and will always support both languages.


True, but it's clear that Scala is the preferred language.


I view that as a good thing, as cool concepts like Iteratees have been inspired by functional programming and Scala. There aren't many frameworks out there that make it easy to develop traditional websites and web services and do comet/websockets with ease. There aren't many reactive frameworks out there, period.

I also hated Play 1.x because it relied on its own half-baked build system, making it hard to import Maven modules and because the templates were written in Groovy, which for me was a big turn-off, because I like the JVM for its potential for performance and using such a slow dynamic language for its templating was a big no-no (Groovy may have gotten better in the meantime, I don't really know). It also relied on many runtime hacks and bytecode generation, things that have been moved at compile time in Play2 with the help of its SBT integration.

There's many things to like about its preference for the Scala way of doing things. Don't let that stand in the way, as otherwise it's a nice framework.


> Groovy may have gotten better in the meantime, I don't really know

Last year Groovy 2 was released which provides a @CompileStatic annotation which directs the compiler to statically compile the tagged code which runs faster. Not many people seem to be using it though, e.g. Grails and Gradle only use dynamically compiled Groovy code (afaik). And it's still quite buggy, e.g. just yesterday this serious bug was reported: http://groovy.329449.n5.nabble.com/BUG-in-CompileStatic-mode...


Java has moved from XML files to @Annotations now. Most frameworks are providing support for it now, too.


You mean they have added @Annotations to XML file editing. Many frameworks still require you to edit XML files too in some places (Maven/Ant/Tomcat config etc.).


In the application code, you can use either annotations or XML, or both, it's up to the developer.

And regarding editing XML in some other required places - you can use Gradle instead of Maven or Ant (thus no XML files). But that's not the point, to get rid of all XML on your server. The point is that in the application code you are not obliged to use XML.


If you are doing much beyond simple bean injection - Camel, Quartz, OSGi, etc. - then you will be up to your armpits in XML. But it's not so bad, if you prefer configuration to convention.


And don't forget Spring MVC, my favorite choice. Since Spring 3 it supports complete annotation based configuration. And it's completely configurable to leave you choose whichever templating solution (e.g. Thymeleaf)


I have found RESTEasy (and likely any JAX-RS implementation) to be very nice for creating simple services. With various annotations and static typing to automatically convert various parameters into function arguments, it's easier than Sinatra on Ruby. (Of course, there's a bit of config overhead to hook it into a web.xml, but it's not terrible)


I've heard great things about Play. When I had to choose a Java framework about 2 years ago, I chose Stripes, and I've been very happy with it. But I notice that it doesn't even get mentioned in discussions like this one. Wonder why that is.


One of the biggest (maybe the biggest?) contributions to language and framework adoption is marketing in the form of blog posts, training sessions and quality tutorials. This is why RoR is so popular even when it isn't all that great (there are many technically superior alternatives across many languages) - it has amazingly good marketing for a framework.

So to answers your question: you don't hear about Stripes because Stripes is bad at marketing. Just look at their website - it looks like its from the 90s. A small bit of CSS work is probably the best thing Stripes could do to increase user base.


I dabbled in Stripes a while back(moved job, now on Spring3), and I liked it as well. Lightweight and easy to use but lacked decent support and user traction. No reason it's not used more, and I don't know why either.


Play is a great framework, a breath of fresh air for Java community!


Spark is a micro framework for Java[1]. I plan on trying it some time in the future.

[1] http://www.sparkjava.com/why.html


Ug...that is some ugly code. I can't believe they are arguing that this (Spark):

    get(new Route("/") {
        @Override
        public Object handle(Request request, Response response) {
            Integer age = request.queryMap("user").get("age").integerValue();
            //do stuff
        }
     });
is cleaner and easier to read than this (JAX-RS):

    @GET @Path("/")    
    public Response get(@QueryParam("user[age]") Integer age) {
        //do stuff
    }
It gets far worse if you think about what it takes to marshall a JSON response in spark...


I'm also curious where Java lands as far as running JRuby on a JVM performance wise. Granted you would need people familiar with running JVM's, which may not be the case with folks that are Rubyists. But it's not like there aren't many choices when it comes to server-side JVM.


TFA :

> It is thanks to Anders' expert guidance that .NET started out such a remarkably well designed language - literally what Java should have been on every conceivable level


Except that .NET is not a language... The language Anders invented is called C# and v1.0 looked extremely similar to Java (later versions diverged significantly from Java).


Java and .net/c# are not really that similar any more. Just to pick one example, Java doesn't have an equivalent of LINQ



Ruby isn't cool any more. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago.

This made me happy.


Jeff is so 1990ish. Cool hipsters do Erlang and Go nowadays!


Future proofed hipsters write in assembly and machine nowadays ;)

Also don't forget Haskell.


Haskell is also rapidly becoming uncool. The cool kids use Coq, Agda or Idris.


Hilariously, there actually is an Agda web framework in development[1], although it seems like more of a research project than a serious effort. If there were a web framework in Coq, that would really be something. Idris is intended to be more general purpose, so hopefully one will be written someday.

For those not in the know, these are programming languages used mostly for developing mathematical proofs. They are all dependently-typed languages, which means that a type can depend on the values it contains. For example, you can constrain a function to only accept lists of a given length in a way that can be type-checked.

1: https://github.com/larrytheliquid/Lemmachine


The vector type is always given as an example, but I find the ability to give a type to printf more mind bending.

Just in case that went over your head and to reiterate, that means that:

    printf "Hello %s" 4
would generate a type error, so would:

    printf "Hello %s" "wor" "ld!"
and:

    printf "Hello %s! %s" "world"
but:

    printf "%s %s!" "Hello" "world"
wouldn't.


...I guess I'll have to stop writing concurrent code now.


Node.js traction is true. As far as I know, Scala newbies are coming back to Java. With Play! and Scooter, Java is more Ruby than Scala. With native compile support Crystal https://github.com/manastech/crystal may soon get all Ruby crowd again.


> As far as I know, Scala newbies are coming back to Java. With Play! and Scooter, Java is more Ruby than Scala.

From what I've seen it's been a one-way street from Java -> Scala. I've yet to meet anyone who wants to go back to Java after Scala. Play! is written in Scala by the way...


> From what I've seen it's been a one-way street from Java -> Scala.

Those users may be core Java developers who don't use any frameworks. If you ask me, Scooter is quite is easy to port any Ruby code easily than any other Scala frameworks out there. Scala adoption is killing Play community (2 times it got forked due to the difference) and that's why they now market it for both Scala and Play. As someone mentioned in Play forum long time ago, Scala is not suitable for team due to its readability. Heck I myself (and our team) used Scala and moved back to Java Play.


Interesting. We find Scala to be more readable than Java. I guess it depends on the type/style of Scala you write. You definitely need be mindful of readability when writing Scala code (code reviews etc. help to ensure readable code). We use Play because it works well with Scala.


Ruby isn't cool anymore? Are startups cool? I think we'd all agree startups are pretty cool.

Going through the HN job postings, my findings are:

Ruby with 6.5 jobs

Python with 4

Java and ObjC each with 2

Node.js and CoffeScript each with 1

Sorry for not sourcing anything, I don't want a massive post. Seems Ruby is still pretty cool. Anyway, this is quite the normal distribution here from my experience. And in the interest of full disclosure -- I am not a Ruby developer.


It's still a long way to go before big enterprisy corporations boring business applications is beeing written in Ruby. As a consultant it's still either Java or .net out there. JavaScript is slowly beeing accepted (you can't avoid it). For hackers Ruby isn't cool, but for consultants Ruby is more than cool enough.


You're seriously happy with all the ,(function(){}){}); verbiage?


That pseudo code in CoffeeScript is essentially "do ->", in respect to being happy with node.js and syntax. CS is getting to be rather popular and when it comes to open source projects, anyone who understands JS pretty much gets CS, especially if they're familiar with Python/Ruby.


Jeff is really comparing the wrong things here. Whether Ruby, Python, or even ASP.net, it's all asking for Discourse to be a niche product only used sparingly by enthusiasts and in the enterprise.

Which was maybe the goal, but I don't think so.

The obvious choice IMO was to suck it up and live with PHP. Nowhere near as nice as the other options, but exponentially less friction for people to set up on a LAMP stack. I'm not going to all-out defend PHP, but it's not as bad as it used to be; and you don't have to use it as much as you used to, given that Discourse is heavily a client-side JavaScript app anyway.


Jeff claims that they want to make the Ruby install story as easy as PHP's (e.g. download and unzip into a directory accessible via mod_php). I'd love to see that happen but it strikes me as a bit of a risk to their business. I guess Jeff is independently wealthy already, though his team may not be.


The thing is that ruby is actually easier to install than php - on your own computer. Having a rails hosting environment as ubiquitous as php is a completely different story. I don't see how any single person would be able to do that.


Pfft, some of us moved to node.js straight from Python and skipped the whole Ruby thing.


Although I love node.js, but you are missing out on not using Ruby. I used both Ruby (eventmachine) and node.js on a recent project and it was a total awesomegasm. I admit that the Ruby side had some Ruby code converted to C for performance reasons (parsing binary blobs), but we are not rubysts because performance is the only thing we care about. I find Ruby incredibly sexy, be it still cool or not.


Yeah I actually did start working on a Rails project a month or so ago.

Ruby is okay. I like how extremely easy it is to pick up. I don't like that this probably leads to similar problems the PHP ecosystem developed eventually.


On the concurrency side of Ruby I've been really enjoying Celluloid recently. Still trying to come up with a project to hack on with it.


Ok, now you are ready for ruby


It's nice to see Anders Hejlsberg getting some love. Truely one of the greats.


Good read. Makes me want to learn Ruby!

One query though: All that talk about the shiny new hardware and Ruby being slower in rendering pages under 50ms and the comparison to StackOverflow; isn't that a little unfair? I am trying to understand better and not making claims of knowing better than Jeff. :)

How can you compare a completely server side solution (in ASP.NET MVC) to an almost completely client side solution (in Ember.js), which only uses the Rails API for the backend alone and say .NET is superior to Ruby? Especially when the page rendering time seems to be the only profiled checkpoint for the performance.

Wouldn't JavaScript and the whole Ember.js be adding to the slowness at all?


He's talking purely server times here. And it shouldn't be pages so much as "JSON Blobs" :)


Ah, ok. Makes sense now. Got caught up a little too much on "page" :)


I'm sure he talks about server response times.


Why not mono?

For not using .Net I can understand the his detailed reasons, Java because it's a grumpy old man, Haskell because it's a paradigm shift etc...


He is obviously concerned about adoption of the project by wider circle of potential contributors. Most of the C#/.NET developers are already working in, well, C# and .NET, usually in enterprisey environments and often with little or no contact with open-source community. Also (and this is purely my own subjective view, of someone who worked 5+ years almost exclusively with .NET, before switching completely to OSS stack and Ruby) Mono feels like a second-class platform, orbiting around .NET. I personally wouldn't like to work in Mono as it feels a bit like betraying both realms, OSS and MS, regardless of how good the platform itself and the tools are. And I believe that at least VS can't be replaced that easily with OSS alternatives.


That's addressed in his third point, the ecosystem isn't as good as other options.


> Why not mono?

Surely you jest?


I wouldn't use it, but I know people have had great success with Mono + .NET MVC + nHibernate/PostgreSQL on Linux. Now I personally would rather use Go/Java/Haskell, but I would take the above stack over Ruby any day.


> There are maybe fifty world class computer language designers on the planet. Anders is the only one of them who built Turbo Pascal and Delphi.

The Pascal _syntax_ was designed by Niklaus Wirth.

> It is thanks to Anders' expert guidance that .NET started out such a remarkably well designed language

.NET is not a language.


TurboPascal departed a lot from standard Pascal syntax, especially in very popular versions 5.5 and 6. IIRC, standard Pascal didn't even support modularity (importing symbols from other files). Pascal was mostly academia language, suitable for learning imperative programming (Wirth later designed Modula-2, which was capable for industry). TP 5.5 introduced OO, pretty much what we see as Java-style mainstream these days. Also, the IDE itself was incredibly nice to work with. Not to mention Delphi.


> .NET is not a language.

It may as well be. VB.net and C# are the only .NET languages that have any traction, and the differences between them are almost entirely superficial. Off the top of my head, the only significant difference is that VB.net supports inline XML.


Actually the syntax comes from Algol, but Wirth was also part of the design team.


syntax is not the only thing behind language design. at all.

the semantics of a language are equally (if not more) important.

you also need to recognise the importance of a good compiler, one which gives good error messages and optimises your code.


Geez, this post is full of complete nonsense and FUD when it comes to programming languages and their performance characteristics. I won't comment about the language design (I kind of like C#, but it's beyond the point), but the facts:

* C#, and specifically microsoft implementation of it is absolutely horrible. The AOT part is ok, but the JIT is incredibly dumb. There are good reasons why it is the way it is, but it's ridiculously slow compared to Java (and yes, you're legally obliged not to do this comparison)

* MRIs Ruby GC collector until 2.0 had bugs which prevented it from having good performance, even asymptotically. To be honest, CPython had it until 2.6 too. That means that if you allocate objects rapidly you can end up in a O(n2) situation where each n allocated objects end up taking more and more time.

* Ruby and MRI in particular is nowhere near good performance. But you can throw more hardware on the problem always.

* I would like to see some data about "StackOverflow is fast because it's on .NET", it definitely does not fit with my view of how fast/slow libraries/VMs perform.

To be honest, language speed often does not matter. Java has pretty decent VMs, like hotspot and yet a lot of Java code is horribly slow, because libraries are badly written (think eclipse).

Also I'm personally terrified with ruby's security stories recently (and yes, it's both ruby and rails at fault)


For a post accusing another of FUD, it would help if you got more of your own details right: C# doesn't have an AOT or JIT compiler - all compilers that I'm aware of always compile it to IL. You're right that the .NET JIT has historically focused on startup speed rather than pure speed, but there are many factors that affect performance (e.g. C#'s defaulting methods to non-virtul may mitigate the lack of hotspot-like optimization; value types and the resulting lack of boxing/unboxing may likewise have a positive impact; ditto for reified generics). What in particular strikes you as "horrible" about Microsoft's implementation?


We did quite a lot of benchmarks about various programs (like Python interpreter written in RPython compiled to C#) and the performance was pretty bad. There were various issues, some avoidable some unavoidable, like Exceptions being very very slow (and being essentially for free on Java). I don't think it's possible to summarize it without writing a small novel and I don't care enough, but the JIT is as far as I know a direct IL-to-ASM compiler with very little optimizations or not at all. This puts a serious ceiling on what can be fast and what cannot be fast. In particular the escape analysis is either non-existant or very weak.

The AOT part is exactly C# -> IL and then it's later compiled to assembler.


I have just started to learn Python and Django after read a lot of questions about "Ruby/Rails vs Python/Django". I worked with Node.js since 2011 and with Play last year.


Play with Java or Scala? What did you think about it?


With Java. IMHO Play framework make more agile the web development with Java, I think that it's similar to Rails. I had some problems with its Ebean ORM and MySQL, also the scala templates have some limitations (e.g. I couldn't declare a variable). I chose Play because in my college all knows Java, and at that moment Play was the better framework for web development with Java. It's my project with Play Framework 2 : http://www.youtube.com/watch?v=i5Uf3N1rgWc and I'm going to still work with Play sometimes.


No matter what language or VM you choose, there are going to be tradeoffs. A good engineer understands these tradeoffs well and makes opinionated decisions with all the knowledge he or she has.

All the "my language is better than yours!" bashing is a result of being stubbornly opinionated and not willing to look at things from another perspective. There are always things that one VM will shine with where another will fall flat at, at vice versa.

Also, I don't think Ruby is nearly as bad as most people think. It's not as monolithically slow and vulnerable to exploitation as some people on HN claim. The VM is decent, and there are ways to tune the performance up that make it even "good". See, there's a tradeoff. The language is, IMO, fantastic, but you're going to take a performance hit for that that you need to deal with in some way or another. You're trading execution speed for "developer happiness", whatever that means anymore.


I think there's too much talk about which language is the best, which framework is the best, .NET vs node.js vs ember vs Java.

Okay I get the issues with licensing for .NET but in terms of functionality, most languages and frameworks that developers are using are stunningly good. We're lucky so have so many and most of this stuff doesn't cost a penny.

I think people should get less caught up in what tools they are using and focus on making a decent application. A great application could be made from any language mentioned here and so can bad application.

I like the comment about Ruby not being cool now. Too many developers get caught up chasing the latest language and framework, continuously climbing the learning curve of the latest offering.


Alright, this post convinced me! I'm going to start learning this weekend!

I did some searching around and found these classes:

https://www.udacity.com/course/cs253 http://www.codeschool.com/paths/ruby http://ureddit.com/class/40250/web-programming-with-ruby-on-...

My goal is to learn web development, preferably Ruby but I'll make an exception for the Udacity course because I like Udacity.

Of the above courses, which one would you recommend and why? Or is there a better one? I am a C# and ASP.NET developer.


I'd also be lying if I didn't mention that I truly believe the sort of project we are building in Discourse does represent most future software.

You know, it's great to believe in what you build and all, but being modest sometimes would be nice.


I think he's referencing the "built on an open source language" model, not saying that everybody will be emulating discourse. Its not immodest to say that you're switching to something that you believe is the future. Its not like he's claiming that he invented "open source languages" or was the first to claim that as the future of programming.


> I'd also be lying if I didn't mention that I truly believe the sort of project we are building

He qualified it pretty well. It could have been:

> Discourse represents the future of software.

Wouldn't that have been more arrogant?


Sarcasm aside, what are some benefits of .NET? I've only briefly used it, and I hated the whole experience (probably because I really don't like Visual Studio). I want to keep an open mind though, what am I missing out on?


Most .NET devs (myself included) really enjoy the Visual Studio Environment. So, if you prefer a text editor like vim, it may not be the right tool for you.

The debugger is hard to beat (as Jeff mentions). C# has kept up with most features (LINQ, dynamic, async/await, etc) that are available in Ruby, and the CLR is quite fast. The core libs are also very solid. ASP.NET MVC is very comparable to Rails.

There are a bunch of downsides as well, but they are well-covered by OP.


Don't open your mind too far; having an opinion is not always a terrible thing. You already said you don't like a large chunk of the typical tooling, no comment will make you like it. I like using Visual Studio even if it is not the most pragmatic choice, especially for open source. I am not a robot and I doubt you are either.

> what am I missing out on? I'm not really sure what you know but the answer may be nothing. I have been playing around with code contracts and expression trees a lot recently, I think that stuff is neat. The thing is though that most other languages & frameworks have this stuff too.


I still dont get the drift about Ruby being fast enough. Ruby is slower then CPython, PyPy, Lua, LuaJit, and literally majority of other popular dynamic scripting languages.

The argument that keeps being throwing up is that It is fast enough for most ( actually only for Rails related ) things and is mostly limited by SQL, but that is like saying my Toyota Prius is fast enough since the high way speed is limited anyway.

I meant most of the complain aren't really about Ruby getting LuaJit speed ( is that even possible? ) or JS V8 engine. Just at least it is on par with Python ( not talking about PyPy either )


To return the compliment, as a now-mostly-Ruby programmer with experience on most of the other open source stacks, when I built a C# desktop app a few years ago, I fell in love with the language. The APIs for Collections and IO aren't as clean as Java's, but the language is great. In many ways it felt like I was still in Ruby. I'm super-impressed how Microsoft was able to out-innovate Sun, since starting with basically a Java clone. If you haven't ever tried C#, I encourage you to whip up a quick desktop utility and give it a try.


I have developed with C# since it was in beta. I absolutely love the language. Prior to that I had done extensive C++ and some Java.

Last year I gave Ruby a try (for an ambitious project) and I have to say that it felt like going back in time to my C++ days. The syntax is very, very different and the environment support (command line + sublime) is clearly not something that I have done in the past 10 years.

I like the flexibility of it but coming from statically typed languages I find myself trying to replicate the same way of thinking in Ruby. Which in turn is making me less productive. Given the mental blockage and fear of productivity loss I am not certain I can push through to get to the point of productivity with RoR.

I am giving Python a try next! I would also appreciate any pointers to get me up to speed w/ Python frameworks for web development.

PS: The rails part is just fine, I have developed an Active Record based framework to do web development on C# in 2003. So I am more specifically talking about Ruby the language.


(However, It's also worth mentioning that Discourse is, if anything, even more of a JavaScript project than a Ruby on Rails project.

So why not Node.js? Presumably it's down to maturity.


And the language simply isn't as good, IMHO. The ecosystem and the runtime may be better in numerous ways (the "node" part of "node.js" is also superb) and it may be fun to develop in, but that's in spite of the language. As a pure language JS isn't just up with Python, Ruby, C# or the like yet IMHO but progress is being made on this front (and even if it doesn't, things like asm.js, CoffeeScript, TypeScript, and Dart give us options.)


He addressed it:

Ruby isn't cool any more. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago. Our project isn't cool, it's just a bunch of boring old Ruby code. Personally, I'm thrilled that Ruby is now mature enough that the community no longer needs to bother with the pretense of being the coolest kid on the block. That means the rest of us who just like to Get Shit Done can roll up our sleeves and focus on the mission of building stuff with our peers rather than frantically running around trying to suss out the next shiny thing.

(edit: formatting)


This is just a rant and not a reason.

"Hurr I said it's old school, so I use it. Now node.js is cool, so we can do our thang and no kiddies getting in the way"

I mean, wth?!

This whole post could be written with ruby changed to python and node.js changed to go or something.

Seems like there is no "real" reason to use ruby at all, he just likes it but can't simply admit it...


It's his reason for his decision. I don't see any problem with it, he prefers a more mature language/ecosystem (i.e. not cool) so they focus on GTD not trying to be the coolest guys around. He has a longer post on that topic: http://www.codinghorror.com/blog/2008/01/the-magpie-develope...

As he also noted:

There's always more than one way to do it, and just because I chose one particular way doesn't make it the right way – or even a particularly good way.

I guess you've other metrics to decide what tools to use, and that's great :)


I think that "node.js" is excelent for build real-time applications in a few days but for huge projects is a little difficult to handle all the "callback-style" and async results, IMHO it's about readable code , a key factor in developer teams.


It's certainly a departure for many, but any code can be hard to read depending on how it's architected and who's writing it.


Or a callback soup in the hands of many teams.


I think, what he meant to say by that, is that the forum is more of a browser app unlike your traditional forum software.


Isnt discourse mostly an EmberJS app with a rails REST backend? Seems like the big frameworks are slowly loosing relevance as more development moves client-side.


> Of course, we went on to build Stack Overflow in Microsoft .NET. That's a big reason it's still as fast as it is.

Wow, that claim could really do with some qualifying.


Their architecture has been pretty well documented, and can and has handled a good amount of traffic with relatively small resources - http://highscalability.com/blog/2009/8/5/stack-overflow-arch...


Without evidence to the contrary that claim seems reasonable: http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...

We all know CPU performance is much less important than IO performance (file, DB, network), but assuming a large Ruby site and large .NET site both got that part right, and CPU performance does start to matter, what he says sounds reasonable.

Rather than being noticeably faster (lower latency) for a single user, the compiled tier (Java,C#,Go,Haskell,Scala,etc)'s better performance often just allows for far fewer (or cheaper) servers than the interpreted tier (PHP,Perl,Ruby,Python) to be thrown at the problem.


Just to elaborate further on why I think this is a throwaway comment from Atwood rather than getting into the whole "one language is faster than another" dick-measuring competition:

"Fast" in the context of the Internet is incredibly subjective (especially when you factor in global network latency), and has no place in technical discussion unless backed up with benchmarks (and even then, to be taken with a pinch of salt). For example, think about these made-up statements:

1. "Our site is really fast."

2. "That site is faster than the other site."

3. "We made our site 10% faster."

4. "We build our site using language X because it's fast."

I'm sorry, but statements like that raise my bullshit firewall. It's bordering on marketing speak.


Now is a fantastic time to get into Ruby, in my opinion, whatever your background is.

As someone who starts his first Ruby gig on Monday, this puts a smile on my face.


Good luck! I can't wait to be in the same boat. :)


As someone who is trying to wean himself off of .NET I'd say Ruby isn't exactly the best choice out there. I could jump over to any JVM language (even hip ones) or convert into a Pythonista.

Ruby is hardly efficient and with better(and efficient) alternatives out there I wonder why do people still flock to Ruby/Rails.


node.js is great when building rich client applications. At the end of the day you only need your back-end to grab and serve data as fast as possible and you delegate all the parsing to the browser.


And where is php in all this, is it really considered a dead language?


While not sexy and hip, remember 35 percent of web traffic is handled by PHP... PHP is still a player. I'm not a huge fan of either PHP or Ruby, but with HipHop PHP apps seems to have a path to higher scalability. All languages eventually decline and die, and while PHP might be declining (and as of this year maybe Ruby too) PHP's death is going to be extremely slow, probably decades. In 30 years I would not be surprised if PHP is the COBOL of web development.


> Ruby isn't cool any more. Yeah, you heard me. It's not cool to write Ruby code any more. All the cool people moved on to slinging Scala and Node.js years ago.


This part seems to have given peace of mind to so many ruby avoiding people. Now you can finally discover ruby. You'll finally find out it's cool :)


I just started using scala on the job and have never been more confused in my life. I wish I was getting stuff done instead.


Off Topic:

What is that editor in the screenshot?


Turbo Pascal, one of the best Pascal dialects with fast compilation times, modules and everything you need for doing systems programming.

The IDE was also quite good for the time.

It was my favorite programming language until I was forced into C and C++ land.

Nowadays I am just another polyglot developer, but the Pascal family of languages has a special place on my heart.

I think the software would be safer would one language of that family be the default systems language for mainstream operating systems.


Turbo Pascal, one of the best Pascal dialects with fast compilation times, modules and everything you need for doing systems programming.

And a great built-in debugger. And Borland Pascal 7 even had protected mode support. I still get nostalgic when I see screenshots of Turbo Pascal.

I think the software would be safer would one language of that family be the default systems language for mainstream operating systems.

Indeed, there were better languages in the Pascal family (e.g. Modula-2 and Oberon), but they gained much traction. I did write some OS/2 programs with the Canterbury Modula-2 compiler.


Have you ever used Native Oberon or his successor AOS operating systems?

A nice experience that it is possible to have desktop operating systems written in GC enabled system programming languages, contrary to what many people think.

Sadly not well known outside the Zurique's Technical University (ETHZ) or the institutes that work with them.

I liked in the experience back in the mid-nineties and I am a bit of Oberon collector.


There is precious little exposure of Oberon.

What you need to do is make a decent 'unwrapping' video and then talk about how the object system worked e.g. widgets.

That'd get some attention here.


Yeah, I am actually planning to do something like this, but so far real life keeps getting in the way. :)


Turbo Pascal!

> Anders is the only one of them who built Turbo Pascal and Delphi

http://prog21.dadgum.com/116.html http://williamedwardscoder.tumblr.com/post/32659364988/turbo...

Since I'm leaving links to my blog, here's another relevant one: http://williamedwardscoder.tumblr.com/post/43394068341/rubys...


I ran across my Turbo Pascal 3.0 disk in my pile of computer history in my attic the other day. It saved me a lot of time in college - everyone else had to submit their code to the mainframe's compiler which had no error correction and dumped reams of errors on a single syntax error.


Turbo Pascal 7.0


6 at most. 7 had syntax highlighting.


Use it if you like it and be done with it.


"Why Python", anybody?


"I'm not inclined to make grand pronouncements about the future of software, but if anything kills off commercial software, let me tell you, it won't be open source software. They needn't bother. Commercial software will gleefully strangle itself to death on its own licensing terms."

If there was no open-source alternative companies like MS could have continued for ever and ever with ever more convoluted licensing terms and people wouldn't have had the choice...


The popularity of the idea that a language becomes "mature" when it is no longer the popular fad makes me sad. Ruby was already a mature language before it become a fad. Evaluate the language, don't avoid a language just because it is trendy, and then jump on it after the bandwagon has moved on.


Not again Ruby. Please.

PG needs to put in a filter over there, just like he deleted Adria's firing posts yesterday. Though the contexts are different.

>>that .NET started out such a remarkably well designed language – literally what Java should have been on every conceivable level

I am glad Java didn't turn out to be that way.

>>Argentina, or Nepal, or Bulgaria

Why has he mentioned all of them in one line/context? I don't see them at a similar level either in education, wealth/poverty or so.


Being from Bulgaria: .net is widely used over here. Most of the companies that I've worked for do relay heavily on MS stuff.


"Ruby is maturing up nicely" ... They've certainly learned about security recently and the response to the incidents was reasonably "enterprisey".


Ruby != Ruby on Rails


I wasn't aware that the rubygems.org exploit was limited to libraries that are used in RoR.

As an aside, I'm not quite sure why I'm being down-voted since I meant the original comment as a compliment. Shutting down the package site and quickly cleaning up the vulnerabilities are (IMHO) a sign of a more mature platform. I guess the first rule about Ruby is that you can't talk about Ruby (unless you're one of the chosen few).




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

Search: