Sunday, April 27, 2008

Headius on the Peril

The Promise and Peril of Alternative Implementations is a must read, if only for his detailed summary of the Ruby implementations out there, but on the peril's:


JRuby

Compatibility is *hard*. I'm not talking a little hard, I'm talking monumentally hard. Ruby is a very flexible, complicated language to implement, and it ships with a number of very flexible, complicated core class implementations. Very little exists in the way of specifications and test kits, so what we've done with JRuby we've done by stitching together every suite we could find. And after all this time, we still have known bugs and weekly reports of minor incompatibilities. I don't think an alternative implementation can ever truly become "compatible" as much as "more compatible". We're certainly the most compatible alternative impl, and even now we've got our hands full fixing bugs. Then there's Ruby 1.9 support, coming up probably in JRuby 1.2ish. Another adventure.



IronRuby

But there's some peril here too. IronRuby is largely still being developed in a vacuum. Perhaps in order to have secrets to announce at "the next big conference" or perhaps because Microsoft's own policies require it, IronRuby's development process proceeds largely from all-internal commits, all-internal discussions, and all-internal emails that periodically result in a blob of code tossed over the fence to external contributors. The OSS story has improved, since those of us on the outside can actually get access to the code, but the necessary two-way street still isn't there. That's going to slow progress, and eventually could make it impossible for IronRuby to keep up as resources are moved to other projects at Microsoft. JRuby has managed to sustain for as long as it has with only two fulltime developers entirely because of our community and openness, and indeed JRuby would never have been possible without a fully OSS process.


Say I wonder if anyone has written a Ruby implementation in Python, hehe


Have you started working on your Ruby implementation yet? All the cool kids are doing it. It's remarkable how many implementations of Ruby are in the works right now. It remains to be seen whether the ecosystem can support such diversity in the long term, but at the very least they're introducing splendid variation. And there's a lot more to do with Ruby in terms of performance, scaling, and "getting things done". Ruby's future is looking bright, in no small part due to the many implementations. How's your favorite language looking?

Friday, April 25, 2008

Sad to Say It But I miss Ruby

So I'm writing a quick CRUD app for work and I decided to go with Django mainly because of the power of the built in Admin interface. This is not a real app. I just wanted to get some data in a database and maybe generate some simple reports, so Rails didn't make sense. It would take too long. Plus, following the Django tutorial for the umteenth time during the last couple of years gave me 80% of the functionality I needed in just a few hours. Yeah Django migrations are non-existent and there is not Model inheritance, but since this isn't a real app (basically something quick where a wiki or Excel wouldn't do) I was left with no choice.

But I definitely miss the density of Ruby.

Monday, March 3, 2008

Yeah, I'd Give Greg Brown Sixty Bucks

And I'm not being sarcastic, either. Maybe it would just be a vicarious pleasure because with 3 kids, a year oold Honda Minivan and overpriced Skokie house there is no way in hell I could live on $2000/month. Or maybe because there's a bunch of cool Python (non-web) libraries that should be ported to Ruby. If I'm willing to give Obama $50 I'm certainly willing to give Greg Brown $60 To work on Open Source


I find myself in a rather unique situation: Single, living alone in a small studio apartment, only taking a class or two here and there, and basically living off of small contracts. It’s not that I’m not offered big gigs, or that I couldn’t go back to school full time if I really wanted to, I just find I enjoy living a simple lifestyle that lets me spend a lot of time on community oriented projects, especially Ruby stuff.

Saturday, February 23, 2008

RUSH is On To Something

Courtesy of Ruby Inside I ran across Rush: The Ruby Shell


What we really want - the modern way - is to query the unix system (filesystem, processes, network, services) as if they were a database. This avoids the fragility of text pipes, the complexities of firing up a complete new environment on each system call, and would allow unit tests of system-level code.

This is why I've created rush. It's a replacement for bash and ssh which uses Ruby syntax. More than that: it IS ruby. Imagine an irb shell in which you can do everything you can do at the unix command line, but without any backticks. That's the vision; what I've got so far is a good start in that direction.

Tuesday, January 1, 2008

Now this guy is really angry (and also switching back to Python)




Rails is a Ghetto is even harsher than anything I've written here:


This is that rant. It is part of my grand exit strategy from the Ruby and Rails community. I don’t want to be a “Ruby guy” anymore, and will probably start getting into more Python, Factor, and Lua in the coming months. I’ve got about three or four more projects in the works that will use all of those and not much Ruby planned.

This rant is full of stories about companies and people who’ve either pissed in my cheerios somehow or screwed over friends. I can back all of them up from emails, IRC chat logs, or with witnesses. Nothing in here is a lie unless it’s really obviously a lie through exaggeration, and there’s a lot of my opinion as well.



Hat Tip: Mr. Brown and response to Zed.

Hey wasn't Zed in Pulp Fiction?

Wednesday, November 28, 2007

Where is the PSI for Ruby?

About every 6 months a Google recruiter will run across my LinkedIn page and try to trick me into starting the grueling 2-3 month interview process. Why anyone with a job already would put themselves through this is beyond me, but it did get me thinking about Python again and to catch up on my Python Package Index Feed (which kicks RubyForge's ass, BTW) and I ran across the Python System Information. I had to write this sort of stuff (and more) in Ruby about 6 months ago. That is the different between Python (and grudgingly Perl, gag) and Ruby. Some sort of mainstream task is probably already done (and relatively)

Not that I'm complaining


>>> import psi

>>> a = psi.arch.arch_type()
>>> a

>>> isinstance(a, psi.arch.ArchMacOSX)
True
>>> isinstance(a, psi.arch.ArchDarwin)
True
>>> a.sysname
'Darwin'
>>> a.nodename
'laptop'
>>> a.release
'8.9.1'
>>> a.version
'Darwin Kernel Version 8.9.1: Thu Feb 22 20:55:00 PST 2007; root:xnu-792.18.15~1/RELEASE_I386'
>>> a.machine
'i386'

>>> psi.loadavg()
(0.705078125, 0.73046875, 0.7626953125)

>>> import os
>>> mypid = os.getpid()
>>> mypid
13903
>>> p = psi.process.Process(mypid)
>>> p.command