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.
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.
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.
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.
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.
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.
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.
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
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.
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,
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).
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?
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)
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.
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.
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.
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 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...
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)
> 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).
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.
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!
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.
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.
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.
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.
>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.
> 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 sug...
> 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.
> 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...
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.
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).
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 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).
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.
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.
>> 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?
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?
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.
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]
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.
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:
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.
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.
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.
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.
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 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).
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.
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.
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.
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.
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.)
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.
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.
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, 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.
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.
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.
> 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).
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)
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
> 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 :-)
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.
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.
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.
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.
> 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.
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).
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.
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.
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.
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.
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?
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.
284 comments
[ 2.5 ms ] story [ 607 ms ] threadThis made me happy.
Also don't forget Haskell.
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
Just in case that went over your head and to reiterate, that means that:
would generate a type error, so would: and: but: wouldn't.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...
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.
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.
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 ;)
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.
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.
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!)
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".
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).
Check out this slides: http://www.slideshare.net/blackducksoftware/open-source-by-t...
http://www.jboss.org/projects http://projects.apache.org/indexes/quick.html
The big exception is Play! Framework but that seems to have mainly shifted over to the Scala side of things.
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.
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.
Dude, Play 2.x is perfectly fine for Java and will always support both languages.
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.
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...
[1] http://www.sparkjava.com/why.html
> 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
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?
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.
(I'm from Oslo, but moved one of the startups I co-founded to London 13 years ago...)
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.
Its not very interesting to be known as a Perl developer if all there is left to do is maintain legacy code.
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.
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/
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...
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 sug...
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
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...
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).
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.
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/
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).
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.
http://marsjobs.net/positions
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.
As far as the last part is concerned, what about R7RS Small, and later R7RS Large?
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...
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.
https://gist.github.com/seanhandley/4106776
And for more drama:
http://rubydramas.com
EDIT: more facts
You just made my day posting this. It's absolutely hilarious!
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.
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...
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
>@sarahmei no offense but I doubt any of the guys there look @ you in that way so no need to be scared
Auch.
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...
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.
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.
But the tweeted picture to a large number of followers took it well into harassment, where the joke wasn't.
The fools! Where did they go without the token woman or black or asian person?
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.
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.
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.
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.
I ended up having to apologize to the woman :O
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).
[1]: http://www.langpop.com/
Popularity only matters to those seeking fame.
So why not Node.js? Presumably it's down to maturity.
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)
"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...
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 :)
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.
What is that editor in the screenshot?
> 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...
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.
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.
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.
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.
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.
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)
optimising this is not an impossible problem its just going to take time, its far from a trivial one.
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.
See also https://github.com/judofyr/quickgem for a monkey-patch that speeds startup time up to 4x.
https://gist.github.com/pmahoney/3996724
DTrace, eg.
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
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.
It does make things like tests etc run way, way faster though.
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...
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.
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.
[1]https://github.com/manastech/crystal/wiki/Introduction
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.
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.
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.
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.
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!)
JRuby is great, all I'm saying is that when you feel the taste of a competent virtual machine there's no going back :-)
http://martinsprogrammingblog.blogspot.com/2012/02/why-is-cl...
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.
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.
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.
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.
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.
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.
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).
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...
Surely you jest?
As someone who starts his first Ruby gig on Monday, this puts a smile on my face.
Wow, that claim could really do with some qualifying.
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.
"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.
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.
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?