« September 2006 | Main | November 2006 »

October 2006

October 24, 2006

RubyConf 2006 in pictures

This was a RubyConf to remember. I finally went public about my move to Microsoft, and it felt so good to get that off my chest. RubyConf this year was in Denver, and we even got a nice dusting of snow!

Snow in Denver!

I shot quite a few frames, and here are the best of the lot.

Tim Bray, who was quite the character:

Tim Bray

Charles Nutter of JRuby fame:

Charles Nutter

Ryan Davis:

Ryan Davis

Glenn Vanderburg:

Glenn Vanderburg

Laurent Sansonetti from Apple who was the other bridge implementer in the house:

Laurent Sansonetti

Nathaniel Talbott, who gave his usual thought-provoking talk:

Nathaniel Talbott

Ani Babaian, “the Microsoft gal” who took a lot of good-natured ribbing during the conference:

Ani Babaian

Here’s a couple of pictures of Matz, who was his usual gracious self:

Matz

Matz

Masayoshi Takahashi, the famous inventor of the famous Takahashi presentation method on the history of Ruby:

Masayoshi Takahashi

And last but not least, Rich Kilmer:

Rich Kilmer

and Chad Fowler, our most excellent hosts:

Chad Fowler

October 20, 2006

Dynamic Languages, Microsoft, and me

I’ve decided to stage a friendly takeover of Microsoft. As of January, 2007 my new work address will be Building 42 at Microsoft. I’ll be working in the CLR team to help bring the love of dynamic languages out to the statically typed heathens :)

This all started back in August when I was dragged into various back rooms at OSCON and Lang.Net and presented with an offer that I could not refuse. At some point in your life, you realize that you have an opportunity to affect some real change in the world. RubyCLR was one way to affect that change, and thanks to the gracious support of my partners Barry Gervin, Dave Lloyd, and Bruce Johnson over at ObjectSharp, I was able to give folks a glimpse of what is possible. Thank you all for your generosity and your friendship.

However, my platform and reach at ObjectSharp is limited. We’re a consulting company and while we do use Ruby to deliver value to our customers, it’s literally one developer at a time (hi Andrew!) It’s a whole other thing to work at a platform company whose reach extends out to millions of developers. That’s a remarkable opportunity, and a unique privilege.

This is why I’m uprooting my family and moving all the way across the continent and to a different country. The timing is right since our kids are young enough that they won’t even notice (I was the same age as Matthew when I moved to Canada from Hong Kong). A big public thank-you to my wife, Carolyn, who has supported me since day one. I love you.

So, now begins the next phase of my life. I know that some of you have questions, but I’m somewhat limited in what I can say about what comes next. I hope you can understand if my answers are somewhat evasive or vague. I merely ask for your patience as all will become apparent in due time. It really will. I wouldn’t have put my family on a one-way flight to Seattle if that weren’t the case …

What’s going to happen to RubyCLR? It’s in reasonably good shape now, and I’m actively looking for people to help drive that project. There is still a couple of months before I start at Microsoft, so please contact me if you’re interested in helping out. The source code is released under the MIT license, so you are free to do with it as you wish if you don’t like the direction the project is taking.

What am I going to do once I get to Microsoft? This is the part where I’m going to have to be evasive and vague. I can tell you what I’m not going to be doing: I’m not going to stop blogging, I’m not going to leave the Ruby community, and I’m not going to do evil things. I see my mission at Microsoft as helping to make developers happier; to give them tools that make programming fun. That’s why I program-I enjoy programming. I like to use tools that put a smile on my face. Perhaps what I’ll be making at Microsoft will put a smile on your face too. Just be patient …

If you’re at RubyConf this weekend and you’d like to talk in person about my move, make sure you come over to say hi. I’m the guy with the giant camera in the front row.

October 17, 2006

See you at RubyConf 2006

There will be lots of exciting things happening at RubyConf this week. A few folks who are working on alternate Ruby implementations (JRuby, Ruby.NET, Sydney) will be at the conference, so we’ll have a chance to get together to swap some notes.

I’m still figuring out the story that I’ll be telling in my You got your Ruby in my CLR! talk. Right now the story focuses on how to get things done, both from my perspective as the implementor of RubyCLR, as well as from the perspective of developers who are using RubyCLR. I think that’s a good spine for the story – it lets me hang a lot of interesting ideas off of it.

If you’re wondering why all of the radio silence, I’ve been really busy at a new consulting gig here in Toronto, which involves a long 2 hour commute. That barely leaves me enough time to answer email these days when I get back from the office. Hopefully things will ease up soon so that I can start putting some cycles back into RubyCLR.

October 07, 2006

One way to look at the world

I wonder if static typing advocates really look at the world this way (or if they do that they find this picture funny, I know I do):

Found via Steve Yegge’s excellent follow-up to his now classic Bad Agile blog post.

RubyCLR Installation Guide

Thanks to Andrej for his illustrated RubyCLR installation guide I’m still working on ironing out the distribution kinks with different Ruby versions and environments.

October 05, 2006

Where would you like to work?

Ernest Hemingway wrote some of his books on the second floor of a carriage house on his wife’s estate in Key West. Here’s what it looks like:

Kathy Sierra does her writing from an amazingly cool Airstream trailer that’s parked next to her house:

The thing that makes both of these spaces so attractive for a home office is the physical separation from the house. The small amount of friction that’s involved in walking out of your house to go into another ‘dwelling’ greatly reduces the amount of interruptions in your day (I work in a public library when not at a client site).

The Airstream has the additional feature of being portable. Hmmm … I wonder if I can swing one of these in the next household budget :)

Interfaces that don't break object identity

Warning: danger ahead! A major breaking change is in the works for RubyCLR. I’ve been unhappy with the way interfaces were handled in RubyCLR since the current implementation also breaks object identity.

Each one of the objects that’s returned via the as operator is another Ruby shadow class object. Which means that I’m now smearing the identity of the CLR object over more than one Ruby shadow class object. This can, as you might imagine, get you into all sorts of trouble.

The new implementation follows the lead of IronPython. Interface methods are now invoked using what looks like a static shadow class, where you explicitly pass a reference to the object whose interface methods you’d like to invoke. Here’s a simple example of using the IEnumerable and IEnumerator interfaces on an ArrayList object:


def test_enumerable
  a = ArrayList.new
  a.add(1)
  if a.has_interface? IEnumerable
    e = IEnumerable.get_enumerator(a)
    assert IEnumerator.move_next(e)
    assert 1, IEnumerator.current(e)
    assert !IEnumerator.move_next(e)
  end
end

It’s not as clean as using as, but I just couldn’t condone playing fast and loose with object identity like I did in the past.

I apologize for the impact that this design change makes to your existing code. But I think you’ll eventually come back to thank me for making this change since you’ll avoid much more subtle bugs down the road.

Update: New interface code is now checked into the public subversion repository. Let me know if you have problems porting your code. See the unit tests in tests_basic.rb for more examples of usage.

October 02, 2006

Experimental RubyCLR gem

I finally got some time to hack together an experimental gem for RubyCLR distribution.

Here it is.

To install, just download the file and run gem install rubyclr-0.5.0.gem. Afterwards, run gem check -t rubyclr to verify that the unit tests pass on your computer.

There is still the unfortunate ActiveRecord dependency in the unit tests. So you must have the ActiveRecord gem installed if you want to pass the gem check. This will be fixed in the future.

Photos

  • www.flickr.com
    This is a Flickr badge showing public photos from John Lam. Make your own badge here.

Recent Comments

Recent Posts

May 2008

Sun Mon Tue Wed Thu Fri Sat
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Blog powered by TypePad