News for hackers. Stuff that matters.
Re:Introducing Rubinius X by cromwellian on Tuesday October 15, 2013 @12:04PM (#6554103)
I'm going to lose a lot of karma of this one, but here we go. The organizations I know of that have switched from Ruby to Java have done so for the following reasons:

1) Performance. The JVM simply scales better, it is more cost effective in the datacenter. Without mentioning names, I know of significant Silicon Valley darlings that spent huge sums trying to scale Ruby, got crushed, and eventually ripped-and-replaced the backends with Java.

2) Skill Availability. There are 7+ million Java programmers, it is easier to hire Java programmers.

3) Tool Availability and Maturity.

I think Ruby is a fine language, but I see it like PHP, great for rapid prototyping and productivity in the small, but it's version 1 for the lean startup or for the corporate departmental app. Version 2 is Java, C#, etc using the UX and product feature lessons learned from the Ruby prototype.

IMHO, Node.js is the new Ruby. It has the benefit of having the same language on the client and the server, but once again, it's going to run into similar scalability issues when large organizations try to use it. I think we're going to run into the same issues, of it becoming a cool bandwagon, the platform being stretched to its breaking point, followed by the realization that there are serious problems.

Re:Introducing Rubinius X by marcocampos on Tuesday October 15, 2013 @12:40PM (#6554399)
I don't know why people keep complaining about Ruby's (MRI) speed. Yes, it's not that fast but for most programmer's doing web development it doesn't matter. Remember, you are (probably) not writing the next Twitter/Facebook/whatever. You are (probably) writing a boring LOB web application.

Not everyone is working on a startup trying to peddle their stuff to a zillion users and getting hammered in the process. If you ever get to Twitter/Facebook/whatever size no out-of-box solution is going to work. You'll end up doing what Twitter did which is re-architect all their infrastructure/code and tune all their stuff as much has possible.

Ruby's issue IMHO is that it has always been a Rails-centric community/ecosystem and never had the change to grow beyond that. It's still largely used to write web stuff and nothing else. Python, which is a "similar" language, has a much healthier and more diverse ecosystem being used in things like scientific computing or computer vision.

If you want to make Ruby better, grow beyond the web application ecosystem and make it more diverse.

Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @12:55PM (#6554521)
I agree with the Rails-centrism issue. Even alternative web frameworks have a hard time in the Ruby world.

I disagree with the assumption that Ruby is web only. E.g. Chef and Puppet are huge efforts that have no direct connection to frontend web, both written in Ruby. Vagrant as well. Ruby is big in the infrastructure world.

Re:Introducing Rubinius X by neves on Tuesday October 15, 2013 @10:51PM (#6557755)
It is funny to ready Ruby guys complaining of the lack of web frameworks alternatives. Python community likes to complain that they have too much web frameworks. Nobody is ever satisfied :-)
Re:Introducing Rubinius X by marcocampos on Tuesday October 15, 2013 @03:11PM (#6555631)
What about game framework, computer vision, scientific computing, robotics, etc? I'm sure you can come up with examples for each of these but most are either dormant/abandoned or simply non-existant. As for infrastructure, yes Chef and Puppet are big in the startup world but I know a lot more companies using Python or Java for that.
Re:Introducing Rubinius X by chc on Tuesday October 15, 2013 @08:13PM (#6557240)
Companies use Java instead of Puppet? How does the conversation go where you even start to compare those two things?
Re:Introducing Rubinius X by empthought on Tuesday October 15, 2013 @11:00PM (#6557788)
"Hey do we have $X million for Opsware?"

"Sure thing."

"Damn it feels good to be a banker."

Re:Introducing Rubinius X by bascule on Wednesday October 16, 2013 @01:00AM (#6558093)
For robotics, see Artoo: http://artoo.io/
Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @03:56PM (#6555911)
Does it help that I know far more companies using Chef and Puppet for that then Python and Java?
Re:Introducing Rubinius X by empthought on Tuesday October 15, 2013 @10:59PM (#6557784)
Depends, do they have a fraction of the IT staff that Tivoli and Opsware users have? I'm guessing not.
Re:Introducing Rubinius X by Argorak on Wednesday October 16, 2013 @02:15AM (#6558278)
I usually work for DAX companies. Yes.

My point was that your personal sample is most probably irrelevant.

Re:Introducing Rubinius X by ruok0101 on Tuesday October 15, 2013 @07:22PM (#6557014)
I've been doing some robotics stuff using my arduino and ruby via the dino gem (https://github.com/austinbv/dino)
Re:Introducing Rubinius X by petercooper on Thursday October 17, 2013 @03:36PM (#6567636)
http://www.rubymotion.com/ is an increasingly big deal for iOS (and now Mac) development.
Re:Introducing Rubinius X by xs_kid on Tuesday October 15, 2013 @05:27PM (#6556463)
There are people working on it, see for example: http://sciruby.com/
Re:Introducing Rubinius X by redwall_hp on Tuesday October 15, 2013 @08:59PM (#6557383)
>It's still largely used to write web stuff and nothing else.

Vagrant? Homebrew? Jekyll?

Re:Introducing Rubinius X by reuven on Tuesday October 15, 2013 @12:25PM (#6554257)
As I wrote elsewhere in this thread, I don't think that people are leaving Ruby in the droves that the author claims. Ruby isn't dying, and Rails isn't dying, at least not right now.

However, the author does point to problems in Ruby's performance and maturity that are problems and issues -- if not immediately, then down the road. Your point about how people are leaving Ruby in favor of people, tools, and performance in the Java world is a good one. I would like to think that JRuby is a good option for such people, but maybe not.

I found the author's ideas for modernizing Ruby to be interesting. I didn't agree with all of them, but at least he's trying to hash out some possible ways in which Ruby could improve. This sounds like a wish list for Ruby 3.0, though -- interesting ideas that would break compatibility, and that will take a while to implement. Perhaps his work, and that of Rubinius, could show us the way forward to such a new version.

Re:Introducing Rubinius X by bhauer on Tuesday October 15, 2013 @12:30PM (#6554293)
JRuby, at least in my experience, has not yet delivered performance in line with my expectations of a JVM-hosted language.

In my opinion, performance is by a huge margin the chief reason I do not begin new projects on Ruby. I would rather defer performance tuning efforts and scale complexity until much later in projects' life, rather than immediately following launch when I have 100 concurrent users hitting the application.

Re:Introducing Rubinius X by stock_toaster on Tuesday October 15, 2013 @07:51PM (#6557146)

  > IMHO, Node.js is the new Ruby. It has the benefit of
  > having the same language on the client and the server,
  > but once again, it's going to run into similar
  > scalability issues when large organizations try to use
  > it. I think we're going to run into the same issues, 
  > of it becoming a cool bandwagon, the platform being 
  > stretched to its breaking point, followed by the 
  > realization that there are serious problems.
I think Elixir[0] may be the new hyped language. PragProg seems to be positioning[1] themselves[2] for a hype cycle on it, at the very least.

  [0]: http://elixir-lang.org
  [1]: http://pragprog.com/magazines/2013-06/programming-elixir
  [2]: http://pragprog.com/book/elixir/programming-elixir
Re:Introducing Rubinius X by dingdingdang on Wednesday October 16, 2013 @05:46AM (#6558788)
No matter the whole hype cycle I do actually reckon Elixir is positioned to be the new leader on the programming-web-front: being underpinned by Erlang means it is the ONLY platform/language out there so far with super solid scalability to rival Java AND a light/novel way of programming. That being said I'm personally doing fine with newer versions of PHP (which for my purposes are solid and fine when backed by best practices and prepared sql statements!)
Re:Introducing Rubinius X by tonyedgecombe on Tuesday October 15, 2013 @12:12PM (#6554154)
I think a bigger change is the JVM and .Net don't suck so much now. There are interesting languages like Scala and Groovy on the JVM and frameworks like Play and MVC on .Net that make development less painful.
Re:Introducing Rubinius X by danieldk on Tuesday October 15, 2013 @04:15PM (#6556020)
I think a bigger change is the JVM and .Net don't suck so much now.

Frankly, JVM hasn't really sucked since it got a JIT compiler (J2SE 1.2, 1998) or if you prefer the switch to HotSpot as the default VM (J2SE 1.3, 2000).

Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @12:16PM (#6554181)
Most of these stories also contain a lot of "we used a monolithic approach first and then split it up". A lot of companies I know kept their frontends in Rails, because its frontend tooling is really good. But you'll never write the big backend processing part in Rails.

Also, this is a question of resources. Once your first version succeeds, you suddenly have the funds to build a complex version where you care about all the small details.

Ruby is a _very good_ language as long as you are in the "I don't need to tune all the details phase".

Re:Introducing Rubinius X by spullara on Tuesday October 15, 2013 @12:30PM (#6554297)
Twitter got a huge performance and efficiency boost even rewriting the front end on the JVM (in Scala).
Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @12:35PM (#6554342)
Twitter is a one-in-a-thousand company with traffic amounts that most of us here will dream of ever achieving. Even the more people that don't take specific interest in running large scale deployments.

Even writing you frontend in Java first would (most likely) not have helped you coping with the new-found challenges in that heights.

Re:Introducing Rubinius X by spullara on Tuesday October 15, 2013 @01:13PM (#6554665)
Perhaps on the efficiency side. On the performance side it would be true even on a small site (unless it was all static, cached content).

http://www.techempower.com/benchmarks/

Re:Introducing Rubinius X by danieldk on Tuesday October 15, 2013 @04:19PM (#6556038)
Twitter is a one-in-a-thousand company with traffic amounts that most of us here will dream of ever achieving.

And not every low-traffic site is simple CRUD. If you do image processing, applying machine learning, natural language processing (or a thousand other things that are CPU intensive), it's nice that you can directly use one of the many high-performance libraries available in the Central Repository in your webservice.

Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @04:28PM (#6556080)
You probably won't reasonably run most of these applications in your frontend framework either.

Also, the example was the Twitter frontend. So I respond to Twitter frontend. Don't derail.

Re:Introducing Rubinius X by vidarh on Wednesday October 16, 2013 @09:32AM (#6559509)
Twitters original architecture was an absolute disaster.

I'm sure they could get a speedup by rewriting the front-end, but the fact that they kept trying and fail to scale stuff that with anything remotely like a sensible architecture is network IO bound rather than CPU bound even with MRI on the hardware available when they launched was a good sign that their main problem had nothing to do with language.

Their "simple" case of updating n followers for every status update when n is small is trivially distributable with a relatively simple message bus routing fabric; their "hard" case of updating when n is excessively large is simple-ish by simply structuring the follower lists as a tree of "virtual" follower lists that acts as forwarders; you can do that with off the shelf components.

To illustrate just how basic this problem is: I've built message buses for scenarios like that using mail servers even - though if you do that, at least with a standard mail server, you will be limited by disk IO on forwarding nodes unless you spend too much money (you don't need message updates to be durable "in transit", as if the system is suitably.

Another simple approach to the large follower problem is to pull from "expensive" publishers and push from cheap ones. You can do that too with 25-30 year old software and some scripts to maintain the lists: Push via SMTP, pull via NNTP and make the "mailbox" you post status updates to for people with large follower lists a SMTP->NNTP gateway.

No, I'm not suggesting they should actually do that, just pointing out that it is viable, and it was viable with the kind of data volumes they are dealing with well over a decade ago. Yet they had problems handling it years later with a much smaller data volume than they have now.

When you get to the size Twitter is now, it makes sense to sacrifice developer effort for saving some percents here and there on servers, but their complaints about language when they started their rewrites was distractions from the real issues, whether they realised it themselves or not - it's not like they were handling data volumes at the time that lots of people haven't managed to handle with much more modest resources.

Re:Introducing Rubinius X by mikeryan on Tuesday October 15, 2013 @01:51PM (#6554988)
This is a pretty horrible example. Twitter is a real time communications platform and even ignoring scale its not the right choice for Twitter. I doubt there's many folks at all in the Rails community who would say that Rails is the right stack for Twitter.
Re:Introducing Rubinius X by spullara on Tuesday October 15, 2013 @02:26PM (#6555297)
The front end is just a bunch of calls to services and HTML rendering from templates. It really has nothing to do with real time communication.
Re:Introducing Rubinius X by Argorak on Tuesday October 15, 2013 @02:37PM (#6555358)
Except that little thing that shows you new tweets immediately...
Re:Introducing Rubinius X by vidarh on Wednesday October 16, 2013 @09:47AM (#6559577)
That "little thing" which maintains and generates the timeline should be IO bound whether it's written in C or Ruby unless it's written by someone who does not understand the problem space, and ought to be a separate service. We can agree Rails doesn't make much sense for it, but frankly, language does not matter. Understanding how to minimise context switches for a network service and how handle fan-out does. It's not a hard problem - it's been solved dozens of times over by people writing queueing message servers, NNTP servers and SMTP servers, amongst others.
Re:Introducing Rubinius X by Argorak on Wednesday October 16, 2013 @10:24AM (#6559790)
I don't disagree with any of your points. I just disagree with the assumption that twitter frontend is something static with no time-related components.
Re:Introducing Rubinius X by vidarh on Thursday October 17, 2013 @05:13AM (#6564306)
The frontend should be. It is folly to handle things like the timeline update there, where it is time sensitive, rather than as a backend process that is not - nobody will notice if their timeline is a few seconds out of date. They will notice if it takes more time for the pageload to complete.
Re:Introducing Rubinius X by spullara on Tuesday October 15, 2013 @06:59PM (#6556922)
That is just polling essentially the same endpoint that renders the page.
Re:Introducing Rubinius X by blueblob on Tuesday October 15, 2013 @12:14PM (#6554164)
I guess JRuby is trying to address the first point and they wouldn't have to retrain their staff. I don't know how popular JRuby is but it runs on the JVM.
Re:Introducing Rubinius X by colinza on Tuesday October 15, 2013 @06:06PM (#6556693)
"Skill Availability"... riiight.

You know, one of these days this argument might catch on in other industries. For instance you go to the doctor and say "Doctor, I have a sore throat" and the doctor replies "Well, you might need your tonsils removed, but in order to do that we'd need to hire competent surgeons - how about we just punch you in the face until you forget about your throat"

Re:Introducing Rubinius X by Afton on Tuesday October 15, 2013 @06:34PM (#6556821)
How is that relevant? You can solve the same problems in Java as you can in Ruby. An ENT surgeon is not interchangeable with a physical therapist.
Re:Introducing Rubinius X by colinza on Saturday October 26, 2013 @05:59AM (#6616879)
You're clearly missing the boat by a mile here. The skill of developing software is transferable to different languages. Choosing a language for its skill availability is saying that you're too lazy to hire developers competent enough to learn a new language in a short space of time. If you're hiring people who can/will only write code in $language then there's something wrong with your hiring policy, or there'd be no reason for multiple languages to exist.

Also you're flat out wrong about solving the same problems in different languages. It may be possible to solve all problems in Java or Ruby, but it is not possible to solve them in the same way - or more specifically the best, most economical or most maintainable way.

To bring skill into the equation means no one should ever have written anything in Erlang because few people could write Erlang - but people do, because competent software engineers can learn Erlang.

Re:Introducing Rubinius X by qwerta on Tuesday October 15, 2013 @06:20PM (#6556765)
I believe Node.js has solid technical foundations and it will not run into same troubles as Ruby or PHP. There are millions poured into JS research, Ruby never had decent GC or JIT. Also Node.js code base and unit tests are solid, not like client side JS.

Also there are modern strongly typed languages which compile into JS and run just fine on Node.JS. This solves code-base scalability for large teams..

Re:Introducing Rubinius X by mbillie1 on Tuesday October 15, 2013 @11:44PM (#6557893)
I agree that Node.js is technically solid, but the Ruby/Rails code bases and communities have an immeasurably larger and more mature testing culture than JS/Node... and "modern strongly typed languages compiling to JS" does not by any means solve code-base scalability problems for large teams. That claim is simply false. There are boatloads of experienced Java developers. The people who tend to write "strongly typed languages compiling to JS" tend to write those languages, and not JS.

To be clear: the web would not be what it is without JS, and Node is a fascinating and innovative thing. I disagree that there are loads of people who are experienced in C/C++ are champing at the bit to go write Node. The Java/C# talent pool is massively larger than the non-frontend JS talent pool at this time, and the C/C++ talent pool is largely otherwise occupied. That could change... but it hasn't changed yet. The HN/startup scene is not representative of the software industry at large, and a lot of people writing these "languages that can compile to JS" are part of the industry at large.

Re:Introducing Rubinius X by qwerta on Wednesday October 16, 2013 @02:57AM (#6558385)
All I am saying is that Node.JS has solid foundation to support huge community growth. For me as Java/Scala programmer Node.js is appealing for reasons described above. RoR usually means troubles and I try to avoid it.
Re:Introducing Rubinius X by ebonfortress on Thursday October 17, 2013 @06:38AM (#6564500)
V8 is backed up by Google, I guess that's pretty big deal.
Re:Introducing Rubinius X by mcantelon on Tuesday October 15, 2013 @02:17PM (#6555237)
>IMHO, Node.js is the new Ruby

That seems a bit apples-to-oranges to me. The degree of hype is similar, yes, but other than that they seem like different animals. Ruby started slow (performance-wise), with memory leaks (that were denied at first), and was predominantly a community development. Node.js is running on top of V8, which is mature, performant, and backed by Google.

Re:Introducing Rubinius X by briantakita on Tuesday October 15, 2013 @02:39PM (#6555381)
Plus it's evented so it's not really I/O bound, which makes it great as a service glue.

Also, node.js with browserify & grunt makes for a great front end packaging & dependency tool.

Re:Introducing Rubinius X by mbillie1 on Tuesday October 15, 2013 @11:54PM (#6557924)
> Also, node.js with browserify & grunt makes for a great front end packaging & dependency tool.

This reminds me of "homebrew is a great packaging/dependency tool, it's basically as good as apt/yum/pacman"

Re:Introducing Rubinius X by vidarh on Wednesday October 16, 2013 @09:50AM (#6559592)
Ruby / MRI has for the most part been evented internally. It's how Ruby got away with green threads until 1.9.x; it's just largely hidden from the developer (until you try to call badly behaved C extensions...).
Re:Introducing Rubinius X by mbillie1 on Wednesday October 16, 2013 @12:01AM (#6557942)
V8 was first released in 2008 - and while it is awesome, "mature" sounds like a bit of a reach...
Re:Introducing Rubinius X by thatthatis on Tuesday October 15, 2013 @08:25PM (#6557279)
Is it reasonable to paraphrase what you're saying as:

When developers are more expensive than servers, rails makes sense.

When servers are more expensive than developers (because of scale), Java/c# start to make sense.

Re:Introducing Rubinius X by habitue on Tuesday October 15, 2013 @09:44PM (#6557535)
Or because you straight don't need an army of super capable developers once an organization is large. You need people keeping the lights on and maintaining the momentum
Re:Introducing Rubinius X by ultimoo on Wednesday October 16, 2013 @09:30PM (#6563150)
>> PHP is great for rapid prototyping

A few of the worlds most trafficked websites use PHP is production: wikipedia, facebook, wordpress, and hundreds of other bb forums.

Re:Introducing Rubinius X by ebonfortress on Thursday October 17, 2013 @06:36AM (#6564492)
Yes, Node.js is the new Ruby on Rails. It's amazing how EventMachine and other similar frameworks failed to gain traction.
Re:Introducing Rubinius X by jcroll on Tuesday October 15, 2013 @07:21PM (#6557012)
PHP has HHVM, Symfony, and Composer; it does not suffer from any of these problems. Ruby is dying, PHP is the future.