An overdue update
A long overdue update about my big project rubinius.
Scheduling
The team is still moving along nicely, still aiming for a 1.0 release by RubyConf 2007. We’ve still got a ways to go, but I’m confident. A part of the team is getting together for a sprint in mid September. Other projects have used sprints to really pull away, productivity wise, and I’m hoping we can do the same.
Git
In the last few days, I decided to migrate the project off Subversion to Git, the DSCM. While I’m certain some will see this as a complete waste of time, I feel that it’s important for the project in the long term, and the developers in the short term.
Long Term
As many people are aware, the mainline ruby interpreter (MRI) suffers a lack of transparency. The perception (I can only speak for rubyists in the US, and perhaps a few in Europe) is that ruby-core team works at their own pace and doesn’t accept much input into the process, nor does it report on the process much.
Now, whether or not you agree with that assessment is not what I’m concerned about. It’s the long term perception and possibility that this same thing could happen to rubinius. So rather than wait and see, I’ve decided that the best way to avert this is to make it as easy as possible to contribute and progress rubinius. Again, some will argue that git was not required to reach this goal, and that is a valid argument. Part of it was just a irrational decision, I’ve been interested in git for a while and wanted to play with it more.
Short Term
Local branches, sane merging, a toolkit interface, oh my! I’ve already fell in love with the parts of git that svn lacks, which in my book, was a reason to switch anway. The tools are richer and more powerful. The code is cleaner. Nuff said.
Application Push
We’re currently in a phase of development I’ve been calling Application Push, which is just a fancy term for try to run shit. The existing body of ruby code is quite dense and provides an excellent proving ground to flesh out rubinius. The project has finally progressed enough that this level of proving can be done. Charles has talked about how this style of dev is what really pushed JRuby to 1.0, so we’re hoping to follow in those same footsteps.
Currently playing in iTunes: The Outernationalist by Thievery Corporation
A return to blogging
It’s again been too long since the last update. If anyone has a good way to keep yourself disciplined on writing regular posts, please comment and let me know the secret.
I’m going to keep this one personal, then write another with tech stuff. Abby and I are adjusting to life in LA nicely. Lots of restaurants to explore as always, and our new favorite game: Spot the celebrity! I’m ahead in the standings due to an uncanny ability to pick up the subtle clues they give off.
Most recently, I spotted Jane Lynch (40 Year Old Virgin) at Urth Caffe with courtney. Abby has recently started to do well, spotting Cassidy Lehrman (Sarah Gold, Entourage) at the Santa Monica pier, and Ben McKenzie (Ryan Atwood, The OC) at Stardust last night.
Hopefully we don’t seem vapid and fame-obsessed, but this is LA, where this happens quite a bit. Think of it like a post-modern Slug Bug.
As always, Fog, our muse around the house, has provided much entertainment. Since I’ve begun working at home, we’ve started to get on a routine: Feed her, play a little, she sleeps for 4 hours, we play more, watch some TV, sleep a bit more, feed again, repeat. It’s tough being a Felis domesticus.
Update: I have evidence
Zenspider’s trials and tribulations
Some of you will notice that blog.zenspider.com has been down for a few days, as have the QuickRef and the rest of the services Ryan Davis (zenspider) runs.
He’s having massive problems with his ISP and all the services are currently hosted from his home. Hopefully they’ll get it ironed out soon, otherwise I’m worried about reading how a Covad/Qwest/Speakeasy support person was dragged into the street and beaten to a pulp.
We all wish him good luck!
WordPress being strange
Something is screwed up with how I’ve got wordpress installed. I’ve switched it backing to using the ugly permalinks for now, because the nice looking ones cause it to serve up RSS everytime. Still investigating, but at least things work now.
If anyone has had this problem, please comment!
In LA, unpacking my life
Abby, Fog and I have finally arrived in LA.
- We arrived on Sunday in the car with Fog, to find that I’d forgotten to have the power company turn the power on. So our first night was in the dark (kind of fun actually).
- Monday we unpacked the car, ran some errands, not much
- Tuesday, the furniture arrived! Movers were awesome. As Abby has been saying, “The best $3k we’ve ever spent.” Took them about 2.5 hours to move everything from the trunk in. Only thing broken so far is one drinking glass.
- Since then we’ve been unpacking A LOT. We’ve got a ton of stuff and probably wont be fully unpacked for another week. We’ve got to get some more organizational units to put stuff in too. We downsized our stuff on the Seattle side, but we’ve still got a ton.
- Finally today, Time Warner installed the cable. Got the HD DVR (which is pretty sweet so far), and the fastest internet (10 Mb/s down, 1 Mb/s up!)
We’ve been walking a lot, which is a little strange for LA, but is exactly what we’d hoped we’d be doing. The neighborhood is great, lots of kids and people out and about. Walking down the the side streets, it almost seems like you’re in an idyllic suburb. Birds chirping, kids playing in the yard, sunny and 76 degrees.
Abby has posted photos of the move. The ones at the beginning or in seattle, then the drive down, finally, in LA.
EVDO ftw
Since I’m with working for EY (Engine Yard) there is no office, I’ll be working from home solely. Problem with working from home is that you’re home all the time, and I tend to go a bit crazy if I stay home all day. So I ponyed up and got a new Sprint EVDO account, so I can work from where ever!
The device I got is the Sierra Wireless AC 595U, which is USB. It’s pretty nice because the connector is at a 90 angle from the rest of the device, so it stands straight up, rather than straight out like a lot of them. Straight out is a pain because the footprint of your laptop grows by like 6 inches by having it in. This one barely sticks out any more than the Powerbook power connector, which is great.
Performance

The speed isn’t awesome (saw it at 100kb/s burst upload though), but from what I’ve seen, it’s faster in LA (which is where I’ll be using it from mostly). I’ll be sure to run the speedtest again when I get there.
OS X Compatible:
This turned out way better than I’d hoped for. Sierra Wireless has ported their connection manager to OS X in total, so I could actually activate and provision the card under OS X. Most reports of using EVDO on OS X talks about needing a Windows machine to provision and activate, so I was pleasantly surprised to hear that wasn’t the case here.
It just shows up as a modem to OS X, but Sierra’s software reports extra stats like what speed networks are available (1xRRT, EVDOr0, or EVDOrA). Right now, sitting just north of Lake Union in Seattle, I’ve got 3 bars of strength and EVDOrA (the fastest).
To play with:
The box says that it’s got some kind of GPS capability too. I’m suspecting it’s the newish ground based GPS (same thing Helio uses), so I’ll have to see how I can query the modem for coordinates or something.
Moving to LA
As some have heard, my wife Abby and I are leaving Seattle for sunny and 74 degrees Los Angeles, CA.
The move has been in the works for a while (about 6 months) and the time has finally come. The movers have already picked up everything this morning, and Abby, Fog (our cat), and I are driving down to LA starting Saturday morning.
Why? is a pretty common question. Here’s a few reasons:
- We both went to USC, so we’ve lived in LA before. We’ve still got a lot of friends there, so it will be fun to be able to hang out with them again.
- My recent employment by Engine Yard allows me to work from anywhere, so I’m untethered in that regard. Abby is going into TV production, and LA is the place for that. So our professional lives has facilitated this move.
- Unlike a lot of people, we actually like LA. Probably because we both lived there during our formative years, the culture and pace of life is a lot of fun. We’ve huge movie buffs, and LA is a great town for that. Being able to go sit on the beach and actually swim in the ocean is a plus too.
On a generic moving note, I’m so ready to be done moving. Having movers has made it SO much easier, but it’s still a major pain. I wonder how much it is to just have people show up at your house, pack and move everything while you go on vacation… As bourgeois that sounds, I can really see the appeal.
A note to all my seattle friends: You’ve been amazing friends, and you are all welcome down in LA anytime (but call first).
Slides from SVRC posted
I’ve uploaded the slides from my recent talk at Silicon Valley Ruby Conf (SVRC). Check them out.
Task class in SVN
Last night I finished up support for the Task class, which will form a core part of the system.
The Task class provides essentially the same functionality as getcontext/setcontext and setjmp/longjmp in C, with a little more icing to make them more useful. The main functional difference is that when a new Task is created, it gets a new stack to operate on. This allows Tasks to be switched in and out with any other Task at any time.
The other main feature is the ability to associate a Task with a block. When the block is activated, it will begin executing the block.
You can probably see where this is going… thats right, greenthreads. Tasks are going to form the basis for green threading. The main thing that Threads add on top of Tasks is a scheduler, ie, which Task should run when.
Now, A small example:
ts = Task.current
t2 = Task.new do
puts "2: wee! new task! switching back.."
t2.swap(ts)
puts "2: you're returned!"
end
puts "1: activating new task.."
ts.swap(t2)
puts "1: back to the future!"
ts.swap(t2)
puts "1: and we're done."
Who’s output is:
1: activating new task..
2: wee! new task! switching back..
1: back to the future!
2: you're returned!
1: and we're done.
This is a trivial example, where Task#new creates a new Task and associates the given block with this new task. But you can see how as Tasks are swapped back and forth, execution of the task continues exactly where left off.
I’m going to begin work on the Thread scheduler shortly, and I’m expecting to be able to implement it and the Thread class itself directly in Ruby (ie, no C).
The biggest thing missing is synchronization mechanisms. My plan is to add a Channel class which will allow for objects to be passed between Tasks, with some synchronization built-in.
Speaking at SDForum
I’m happy to announce that I’ve been invited to speak about rubinius at the upcoming SDForum Ruby Conference. I’ll be spicing up my usual rubinius intro talk by diving into some of the internals and showing how people can really customize the entire system.
I may also do my usual “blow your mind, then ask for questions” approach, where I go through everything, then leave about 20 minutes at the end for questions. Leave a comment if you think you’d like to see that.
Big thanks to (hasmanyjosh) Josh Susser for getting me on the speakers list (and also wrangling the conference as of late).
Also, please leave a comment on this post if there is any topic you’d like to see me go over. As usually, I won’t have the talk finalized until an hour before I give it.