Call of the lemming

November 22nd, 2008 | 0 comments

It’s sometimes hard to gauge troll, tirade, or spirited challenge online. The Opposite of Momentum strikes me as a mix, though in what percentages, I haven’t decided. KirinDave is a little late to the bag-on-Ruby party, and if it’s Javascript he wants, Yegge was there well over a year ago. Browse some of the mind-expanding comments by the bottom feeders at Reddit chewing on KirinDave’s post. It’s a reassuring, if disappointing, commentary on the consistency of human behavior: it is always easier to complain than to fix.

But, anyway.

True, the reference implementation of Ruby has some problems. But, Rubinius has a precise, generational garbage collector. It is definitely not “technically stagnant”, nor is it “in implementation limbo”. It was only in May of this year, before RailsConf, that we first got Rails running on Rubinius. We are close to getting it running again on the new VM. If we do that by year’s end, we will surely have some kind of record. For all the thousands of lines of Ruby code he’s written, KirinDave hasn’t contributed any code to Rubinius. That’s too bad.

Ruby isn’t that extraordinary as a language. But it is a very good language. What is more, Ruby is a humane language, in the spirit of Jef Raskin’s The Humane Interface. Furthermore, now like never before is the age of the dynamic programming language. The technical hurdles are being explored all around us. In fact, before the year is over, you should spend a few quality hours with one or more of the following languages.

Factor. This fascinating concatenative language will definitely get you thinking outside of the box. Rubinius is a stack-based VM. Writing some Factor code is a little like peeling back the syntax layer of Ruby and watching the muscles and tendons work. Check out the quotations and combinators and think about how you write functional code with Ruby. Don’t miss the Google tech talk by Factor’s creator, Slava Pestov.

Clojure. This is another fascinating language by another wicked smart guy, Rich Hickey (check out the video). In fact, this is currently my favorite language to study. It’s the Ruby of Lisps, in my opinion. And it contains a wealth of ideas that could be useful for implementing Rubinius, not to mention, thinking about writing concurrent programs.

Io. Like Javascript? You owe it to yourself to play with this language a bit. I’d be interested to see about an implementation of Io on SquirrelFish Extreme

Haskell. Amaze your friends and improve your sex life. Jump stateful, side-effect tangled heaps of code with a single Monad. There is a cool new online book that will soon be released in print as well.

Seriously, if you are a Ruby programmer, you could hardly do poorly by adopting any one of these languages. If Javascript makes your curly braces tingle, who am I to ridicule you. But if Ruby continues to maintain its captivating hold on your attention, don’t be disappointed. There is some awesome sauce in there, and we’re working on the recipe that really makes the flavor pop. Just a little request, instead of bitchin’, pitch in.

Rubinius is a community project

November 18th, 2008 | 0 comments

Yesterday was a tough day. You can read the details and Evan’s thoughts about it.

It was especially hard for me because Wilson was a mentor of sorts and the first person I talked to when I dropped into the #rubinius channel nearly two years ago. He allayed any fear I had that Rubinius would fragment the Ruby community and helped me get started contributing.

And Eero, among many other things, jumped on board right away and toiled for many hours on the early specs, putting up with my dead ends when the project that is now RubySpec was merely an expedient to fast-track Rubinius development.

So, I want to express my thanks to my teammates and wish them the best in their next endeavors. And I want to emphasize something that is well known to those of us who have worked hard on Rubinius from long before Engine Yard began to support the project: Rubinius is a community project.

Evan’s free-flowing commit bit, the early adoption of Git, and the emphasis on writing specs while developing are just a few aspects that have helped propel Rubinius very quickly in its couple year history. And there is still plenty of exciting and interesting work to be done. We are all very grateful for Engine Yard’s support of the project, and that support remains strong and dedicated.

But the key to Rubinius’ success is the community. In the past year, I feel we have to some extent let you, the community, down. We need to make Rubinius even easier to try out, understand, and contribute to. And we need your feedback on ways we can do this. The recent VM rewrite has been a huge step forward in this regard. But have you opened up the code, poked around, asked us about stuff that doesn’t make sense? If you haven’t, let us know why not. Have you taken a look at a failing spec for the core library? There’s tons of beautiful Ruby code just begging for some love. Let us know what barriers prevent you from spending some free time in there.

If you’re worried that development on Rubinius will slow down, I would challenge you to not let that happen. Evan produces prodigious amounts of code and has a terrific mix of genius and pragmatism. I will certainly not be working any less hard than I have for the past two years. So if you, like me, believe that Rubinius can be a terrific platform for Ruby, jump in. No contribution is too small. And we’re building on a solid foundation of past success.