I’d like to start out by thanking everyone who came up to talk to me at the conference. We had a Dynamic Languages booth at the conference, and it was great to talk to all of the folks who took the time out to drop by for a visit.
A big thanks goes out to our booth staffers – Dave Fugate, Curt Hagenlocher, Jimmy Schementi, Bill Chiles and Mahesh Prakriya who helped to keep things running smoothly. Dave somehow managed to grab an enormous whiteboard from somewhere and used it to help answer many of the FAQs for folks who were hanging around waiting for a blue-shirted guy to become available.
Tech Ed is (not surprisingly) a very enterprisey conference. We spent at least as much time telling folks what Dynamic Languages were (or correcting their misperceptions) as we did talking about our team’s progress. We also had a whole bunch of folks come up to ask us questions about F# because, apparently, F# is now a dynamic language :)
By far the most frequently asked question was why dynamic languages? The advice that resonated the most with the folks that I talked to was about using it to help them build internal DSLs for their applications. This is the idea that you can use DSLs for part of your app, dynamic languages to help faciliate those DSLs, and statically typed languages for the foundational pieces. You'll find that this idea is often called polyglot programming.
The IronRuby talk was the very last talk of the conference. Apparently I was one of the ‘big guns’ that would convince folks to stay all the way to the very end of the conference. While I prefer being at the start of the conference so that my talk can help drive further discussions with folks while they’re still there, it is what it is. Oh well, let’s see if the tubes can help start a conversation :).
My talk focused on three things. First up was an introduction to Ruby since half of the folks in the room hadn’t used Ruby before. I wrote a simple unit-testing framework live on stage. Each new feature in the framework helped to introduce a different feature of Ruby. At the very end of the talk I showed how that same framework could be used to test .NET code. Here it is in its entirety:
And here is some .NET code that we tested using this framework:
It worked rather well, and I think I’ll continue to use it at talks where I need to introduce Ruby to the audience.
Next, I talked about our Silverlight integration. I showed the excellent set of demos that Jimmy created for RailsConf last week, including his client-side Try IronRuby demo:
and the lovely Silverlight watch demo:
I also got a chance to sneak in some of the code I was hacking on in the evenings – an adapter that maps the HTML 5 Canvas API to Silverlight. I ran a few of the examples from the excellent Mozilla Canvas tutorials using a my adapter. I pasted some code (with minor rubification) from the Mozilla tutorial into the text box:
and hit run - the colored boxes with the translucent circles appeared below:
There's no reason why we couldn't do this with managed JavaScript either using the cross-language interop features of the DLR.
Oh yeah, there was one more thing that I demo'd - more on that tomorrow.
IronRuby dispatched some simple requests through an unmodified copy of Rails a few days ago. Today, we’re going to show off our progress live at RailsConf. This is an important milestone for IronRuby; it’s our ‘ticket to entry’ to the world of alternative Ruby implementations.
We started our work on IronRuby back in February 2007. Now, just 15 months later, we’ve reached what others are calling the “Rails Singularity”. A few folks claimed that we would never get here this quickly, or that we wouldn’t be allowed to accomplish this goal. But we did it on our own, in our own way and with help from our community. And we’re just getting started.
I have always maintained that you must judge us based on our actions and not our words. Running Rails shows that we are serious when we say that we are going to create a Ruby that runs real Ruby programs. And there isn’t any a more real Ruby program than Rails. This demonstrates that we’re true to the language, and that we’ve put compatibility above all else on our TODO lists.
But we have a lot more work to do.
Our performance is nowhere near where we expect it to be, particularly in startup of a large application like Rails. We are consuming much more memory than we would like to. But this is the price you pay when you put compatibility ahead of all other work. We’ve shown that we are willing to do what it takes to run Rails. Now we have to do the work to make it run better, and faster.
But there are other things to talk about as well.
IronRuby doesn’t just let you run Rails; it lets you interact with the rich set of libraries provided by .NET. You’ll be able to use IronRuby to build server-based applications that run on top of ASP.NET or ASP.NET MVC. You’ll be able to use IronRuby to build client applications that run on top of WPF or Silverlight. You’ll be able to use IronRuby to test, build and deploy your .NET applications. You’ll be able to run Ruby code in your web browser and have it talk to your Ruby code on your web server. That’s a feature that we feel that many folks will enjoy.
Perhaps even more important than all of this technical stuff is what the IronRuby project represents at Microsoft. IronRuby has pioneered a number of new processes that make it easier for other folks at the company to build and release Open Source products. What we learn from building IronRuby will be applied in other product groups to help us become more open and transparent than we have been in the past. We have a great leadership team that is willing to push the envelope on openness and transparency to create a world where both Microsoft and our customers can benefit.
Come join our project on Rubyforge and help us show everyone how it’s done!
OK. So here’s the scoop. 2pm at the International Meeting Place (see map).
I’m going to be at the Convention Center from around 1:30 onwards. There are a lot of central public meeting places at the convention center. From where I sit at my desk this morning, it looks like the “International Meeting Place” on the second floor will do just fine:
I’ll hang out there and I’ll be happy to demo / talk about IronRuby, OpenSource and whatever else *you* want to talk about.
Follow me on twitter (john_lam) if you want up to the minute updates on where we’ll be just in case this location doesn’t work out.
I’ll be giving talks on Ruby in both the C# and VB tracks. Right now it looks like 10:30AM and 12:30pm – check your schedules to make sure – the second talk’s time slot looks fishy to me.
BTW, for those of you who are reading this who don’t know what an MVP Summit is, it’s an event where we fly put up in hotels and feed some of our closest supporters to Redmond for a week-long tech love-fest. This is an awesome event since we get a chance to give back to the folks who help us do our jobs here at Microsoft.
I have a simple request for you if you are:
Please go ahead and nominate us for one or both of these sessions and I’ll show up along with Jimmy Schementi to discuss at the MVP summit. Take advantage of the Open Spaces format – you get to control the agenda!
BTW- please leave a comment here if you want to nominate so that we’ll be sure to show up then!
Update: Apparently the folks running the “Open Spaces” event at the MVP Summit want to exercise central command and control over the event, quite unlike this definition of a BarCamp from Wikipedia:
“The procedural framework consists of sessions proposed and scheduled each day by attendees, mostly on-site, typically using white boards or paper taped to the wall. This has been dubbed, with another play on words, The Open Grid approach.”
Apparently nominations are now closed, so we won’t be there to participate, sorry.
Update 2: OK. So we’re going to stick it to the man and take matters into our own hands. Follow me on twitter, and we’ll figure out a place to do our own Ruby meetup at the MVP summit.
Yep, that’s right. That’s my other job here at the company. This means that I participate in a set of events that have nothing to do with IronRuby as a technology, but have everything to do with IronRuby as part of a movement toward greater openness within the company.
Last week, I participated in the Microsoft Technical Summit that we held here on campus. Every year we invite a bunch of Microsoft skeptics to campus and subject them to mind conditioning engage in a dialogue with them. I talked about why we were doing Open Source, why we were doing dynamic languages in particular, and showed them a few demos of stuff that works today. It was great to get blunt feedback from folks who took time out of their lives to attend, and hopefully we did move the dial on their perceptions of what we’re up to here at the company.
I had a lot of fun talking to Adam Keys who rocked my world with his RubyConf one-man play (warning – you need to either be a Ruby programmer to really appreciate the crazy humor that this is, or be fascinated by what geeks think is funny):
On Friday, I participated in our inaugural Open Source Day internal conference at Microsoft. I was on a panel with three other folks: Rob Mensching, who did the first Open Source project at Microsoft – WiX, Shawn Burke, who runs the AJAX Control Toolkit project, and made the .NET library source code available among many other cool things, and Tom Hanrahan who runs our Linux Interoperability lab. We talked about experiences – Rob and Shawn have been at the company a long time and had a ton of fun anecdotes about what it was like to try and do Open Source at the company back in the dark ages. I contributed some stories about how we do IronRuby development and some pointers about how other product groups can think about why and how they should participate in Open Source. Tom was our elder statesman, and talked a lot about why interop is important to our customers (bottom line is that virtually all of our medium to large customers live in a heterogeneous aka non-100% Windows environment).
One thing that came out in the discussions is how we need to be better at transparency, even while developing our non-Open Source products. One of the powerful ideas of Open Source is the ability for outsiders to actively participate in the creation of products even if they never crack open the sources themselves. That’s a powerful idea, and one that I think that (at least in Developer Division – where I work) we’re in a great position to deliver on.
*
I’m a huge fan of vimperator after discovering it via Zed Shaw. If you’ve internalized the vim keybindings, you’ll be surprised at how you can leverage your muscle memory while surfing the web.