<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>John Lam on Software</title>
    
    <link rel="alternate" type="text/html" href="http://www.iunknown.com/" />
    <id>tag:typepad.com,2003:weblog-1292386</id>
    <updated>2009-05-18T10:11:53-07:00</updated>
    <subtitle>Ruby, Dynamic Language Runtime, Silverlight and Microsoft</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><link rel="self" href="http://feeds.feedburner.com/LessIsBetter" type="application/atom+xml" /><feedburner:emailServiceId>LessIsBetter</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
        <title>Dynamic Languages at TechEd 2009</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/1x4J3xgJZdo/dynamic-languages-at-teched-2009.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2009/05/dynamic-languages-at-teched-2009.html" thr:count="6" thr:updated="2009-06-23T13:15:58-07:00" />
        <id>tag:typepad.com,2003:post-66930709</id>
        <published>2009-05-18T10:11:53-07:00</published>
        <updated>2009-05-18T10:17:01-07:00</updated>
        <summary type="html">Dynamic languages on .NET are picking up momentum at this year's TechEd. Your typical TechEd attendee is a mainstream .NET developer, since this conference focuses on technologies that are shipping today (as opposed to futures conferences like the PDC). To...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Los Angeles Convention Center Information Booth by John Lam, on Flickr" href="http://www.flickr.com/photos/john_lam/3542782480/"&gt;&lt;img alt="Los Angeles Convention Center Information Booth" src="http://farm4.static.flickr.com/3648/3542782480_1a48ef25d5.jpg" width="332" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dynamic languages on .NET are picking up momentum at this year's &lt;a href="http://www.msteched.com/teched/default.aspx"&gt;TechEd&lt;/a&gt;. Your typical TechEd attendee is a mainstream .NET developer, since this conference focuses on technologies that are shipping today (as opposed to futures conferences like the &lt;a href="http://www.microsoftpdc.com/"&gt;PDC&lt;/a&gt;). To speak more to this crowd, I focused on how they can make their existing .NET apps better by mixing in some end-user scripting.&lt;/p&gt;  &lt;p&gt;My talk was DTL332 if you're a TechEd attendee (not sure when/if the videos will open up to the general public). I showed how you can add Ruby and Python scripting to an existing app, and spent some time building some simple REPLs. Toward the end of the talk, I showed a more realistic scenario where I embed a REPL in an existing Open Source .NET application: &lt;a href="http://code.google.com/p/wittytwitter/"&gt;Witty&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;During the demo, I showed off a twist on the traditional REPL - one where the editor and the REPL are one and the same. To run code in this REPL, you select the code that you want to run, and the output appears immediately below the selection. Since the REPL is just an editor, you can just delete any output that you don't want. History behaves just fine as well. Here's a screenshot of the REPL in action:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef011570912f5d970b-pi"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef011570912f62970b-pi" width="453" height="515" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;There are a couple of other notable things in this REPL. First, it syntax colors the text that ran correctly. Second, it supports more than one .NET language - you can switch between Python and Ruby using %python and %ruby (although whether that's a good idea is left to the reader). Third, all of its configuration is self-contained inside of a single DLL. This means that all you need to do to add scripting support for your app is add a reference to a single assembly. The assembly will write all user configuration files to well-known locations on disk (within your HOME directory) the first time it is run.&lt;/p&gt;

&lt;p&gt;This idea of a REPL within an editor buffer isn't new by any means. I've been spending some time hanging out with &lt;a href="http://www.photoshophalloffame.com/winners/mhamburg.html"&gt;Mark Hamburg&lt;/a&gt; recently, and this is his favorite way of implementing a REPL (he's done quite a few, including the embedded IDE that the &lt;a href="http://troygaul.com/LrExposedC4.html"&gt;Adobe Lightroom folks use to build Lightroom&lt;/a&gt;). He won me over on the idea, so I thought that I'd hack up an implementation for folks to experiment with.&lt;/p&gt;  &lt;p&gt;I pushed the code up to Github as the &lt;a href="http://github.com/jflam/repl-lib/tree/master"&gt;repl-lib project&lt;/a&gt;, so feel free to fork, play with the code, and send me some feedback on the idea. Note that there's a nice long tail of bugs in this REPL, so feel free to fix bugs and submit changes!&lt;/p&gt;  &lt;p&gt;Here's a screenshot of the Witty main window; notice the console button:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef01156f9b8257970c-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef011570912f69970b-pi" width="350" height="565" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Here's a sample console session:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef01156f9b8269970c-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef01156f9b8273970c-pi" width="504" height="301" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The last line of code causes the Witty UI to display:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef011570912f70970b-pi"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef01156f9b829a970c-pi" width="334" height="574" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;After poking around inside Witty, I think there is some work that needs to be done to make scripting truly a first-class citizen in the project. While some might look at this as bad news or an indictment of Witty, it really isn't. Any project that isn't designed for such an invasive feature will likely make lots of assumptions that make it hard to make that feature successful. &lt;/p&gt;

&lt;p&gt;But the good news here is that if you use scripting as a end-user feature to drive your refactoring efforts, you will wind up with an app that is easy to script, but more importantly, &lt;strong&gt;is better designed&lt;/strong&gt;. I argue that your design is better because it's forces a clean separation of concerns in your code: especially your models and your views. This separation of concerns will make it easier to test your end-to-end scenarios and script your integration tests. This all adds up to better software for everyone.&lt;/p&gt;

&lt;p&gt;I've made it pretty easy to add scripting support to your app. Grab the &lt;a href="http://github.com/jflam/repl-lib/tree/master"&gt;repl-lib project&lt;/a&gt; and spend a few minutes (that should be how much time it takes) to integrate scripting into your project. If you're interested in how much work it took to integrate these changes into Witty, check out this diff; most of the stuff is VS-related, and ReplResources.xaml is no longer required in current builds of repl-lib:&lt;/p&gt;

&lt;p&gt;&lt;p&gt;&lt;script src="http://gist.github.com/113483.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=1x4J3xgJZdo:08FMaMM7lw4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=1x4J3xgJZdo:08FMaMM7lw4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=1x4J3xgJZdo:08FMaMM7lw4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/1x4J3xgJZdo" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2009/05/dynamic-languages-at-teched-2009.html</feedburner:origLink></entry>
    <entry>
        <title>Disable that annoying beep on Thinkpads when resuming from Sleep</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/Z0bJCWUngR0/disable-that-annoying-beep-on-thinkpads-when-resuming-from-sleep.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2009/01/disable-that-annoying-beep-on-thinkpads-when-resuming-from-sleep.html" thr:count="6" thr:updated="2009-06-28T18:18:29-07:00" />
        <id>tag:typepad.com,2003:post-60735380</id>
        <published>2009-01-02T16:32:44-08:00</published>
        <updated>2009-01-02T16:32:44-08:00</updated>
        <summary type="html">It’s under the Power Manager settings:</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;It’s under the Power Manager settings:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef010536ace630970c-pi"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="267" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef010536a48783970b-pi" width="310" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=Z0bJCWUngR0:Tj4QEqPyiI0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=Z0bJCWUngR0:Tj4QEqPyiI0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=Z0bJCWUngR0:Tj4QEqPyiI0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/Z0bJCWUngR0" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2009/01/disable-that-annoying-beep-on-thinkpads-when-resuming-from-sleep.html</feedburner:origLink></entry>
    <entry>
        <title>Hello, 2009</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/DZBzxq1jA60/hello-2009.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2009/01/hello-2009.html" thr:count="8" thr:updated="2009-01-27T07:31:40-08:00" />
        <id>tag:typepad.com,2003:post-60700006</id>
        <published>2009-01-01T16:41:27-08:00</published>
        <updated>2009-01-01T16:41:27-08:00</updated>
        <summary type="html">Happy New Year! It’s been a hectic holiday season here in the Pacific Northwest. We were snowed in over here for somewhere in the neighborhood of 10 days or so. I wanted to spend most of my time with family,...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Happy New Year!&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;It’s been a hectic holiday season here in the Pacific Northwest. We were snowed in over here for somewhere in the neighborhood of 10 days or so. I wanted to spend most of my time with family, but I’m sneaking away for a few hours today to prepare for the new year.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I’m writing this post from my office in my new chair that I picked up from &lt;a href="http://www.plushcomfort.com/"&gt;Plush&lt;/a&gt; over at the Redmond Town Center:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://l.b5z.net/i/u/6060374/i//PlushComfortShoot_143.jpg"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;No that’s not me :) It’s a fantastic chair. I wanted an alternative place to work that wasn’t just my desk (which is a great setup, but a bit of variety is a good thing). I got the fur cover which makes it feel like I’m sitting on a giant teddy bear.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I’m writing this post on my &lt;a href="http://www.notebookreview.com/default.asp?newsID=4718"&gt;Lenovo X200s&lt;/a&gt;, which finally arrived after deciding to take a tour of Canada for a week:&lt;/p&gt;  &lt;p&gt;&lt;img height="411" src="http://notebookitalia.it/images/stories/lenovo_thinkpad_x200.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;This is a fantastic laptop. The keyboard is hands-down the best keyboard that I’ve used. It’s significantly better than the T61p that I have, and I’m finding that I prefer the feel of its keyboard over my 17” MBP as well. I’m loving the fact that I now have the extra keys that I’ve been missing on the Mac. Form Follows Function. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;My top criteria around laptops are:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;1) Screen quality – this thing has a 1440 x 900 LED backlit display which is fantastic. A good compromise considering the laptop weighs in at around 3.2 lbs with the 9-cell battery that I have installed.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;2) Battery life – this thing has crazy battery life. I have the screen set at max brightness right now, and my battery meter shows 7 hours remaining at 88% charge.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;3) Emissions – heat and sound. This thing is quiet and is not hot at all. This was the thing that annoyed me the most with the MBP – it was hot *and* loud. Playing a movie on it without headphones on was an exercise in frustration.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;4) Performance. This thing is plenty fast with the 1.86GHz Core 2 Duo. It rates 4.9 on the Vista CPU perf, but that doesn’t tell the whole story. It has 6MB L2 Cache, but I also paired the laptop up with the most excellent &lt;a href="http://torvalds-family.blogspot.com/2008/10/so-i-got-one-of-new-intel-ssds.html"&gt;Intel X25-M SSD&lt;/a&gt;. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;The Intel SSD was the thing that turned this into a very special laptop. There are no annoying pauses at all while working. My system is instantly responsive after logging on – which certainly isn’t the case with my quad core desktop because of all of that contention for the HDD head. It boots really quickly, shuts down fast. &lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Now that I’m all geared up for the new year, I’m looking forward to the goals that I’ve set for myself:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;1) Ship IronRuby.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;2) I want to make it just as easy for an external developer to work on IronRuby as someone who sits down the hall from me.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;3) Work on the fit and finish that will make IronRuby a great experience for .NET developers. Integration with ASP.NET MVC, fixing our interop bugs, fixing our startup and working set issues, and getting some quality docs out there.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;4) Refactoring me. I’m going to fix a bunch of things that I’m not happy with. I’m turning into a fatso again and that’s not cool. Part of this is admitting that I have a problem, and then figuring out that I don’t have to do it alone. I’m not going to do crazy things like my brother is doing (&lt;a href="http://fitstoronto.typepad.com/fitstoronto/2008/11/dr-lams-quest-for-40.html"&gt;40” vertical in 2009!&lt;/a&gt;) but I should be able to hit 150 lbs this year.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;I hope you all have a great year! &lt;/p&gt;&#xD;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DZBzxq1jA60:siayX1TCJEY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DZBzxq1jA60:siayX1TCJEY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DZBzxq1jA60:siayX1TCJEY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/DZBzxq1jA60" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2009/01/hello-2009.html</feedburner:origLink></entry>
    <entry>
        <title>PDC 2008 Wrap-up</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/DjKSFCH_st4/pdc-2008-wrap-up.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/10/pdc-2008-wrap-up.html" thr:count="11" thr:updated="2008-12-30T04:28:22-08:00" />
        <id>tag:typepad.com,2003:post-57800431</id>
        <published>2008-10-30T17:08:56-07:00</published>
        <updated>2008-10-30T17:08:56-07:00</updated>
        <summary type="html">As usual, PDC 2008 was a great event. I had a chance to meet a lot of old friends (it’s been 7 years since I’ve been to a PDC- it attracts a certain crowd that only shows up there) and...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        <category scheme="http://sixapart.com/ns/types#tag" term="pdc2008" />
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/john_lam/2987200533/" title="Phil loves Jeff by John Lam, on Flickr"&gt;&lt;img alt="Phil loves Jeff" height="332" src="http://farm4.static.flickr.com/3028/2987200533_32b4c431ef.jpg" width="500"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;As usual, &lt;a href="http://www.microsoftpdc.com/"&gt;PDC 2008&lt;/a&gt; was a great event. I had a chance to meet a lot of old friends (it’s been 7 years since I’ve been to a PDC- it attracts a certain crowd that only shows up there) and I’m happy to see that everyone’s doing well.&lt;/p&gt; &lt;p&gt;My IronRuby talk was the first day of the conference. It was a crazy mixture of many, many demos (9 in all) which showed:&lt;/p&gt; &lt;p&gt;- when and why you should create a new type in IronRuby using C#&lt;/p&gt; &lt;p&gt;- how to write a Visual Studio plug-in using Ruby&lt;/p&gt; &lt;p&gt;- how to build a unit test and mock object framework &lt;/p&gt; &lt;p&gt;- how to integrate Ruby scripting into your existing C# application&lt;/p&gt; &lt;p&gt;- how to build simple web services using Sinatra&lt;/p&gt; &lt;p&gt;Only one blew up (the last one) when I forgot to change the type name in my ironruby_mischief.rb file to the type that I created in the IronRuby libraries.&lt;/p&gt; &lt;p&gt;You can watch &lt;a href="http://channel9.msdn.com/pdc2008/TL44/"&gt;it on TV now&lt;/a&gt; (Silverlight required).&lt;/p&gt; &lt;h2&gt;&lt;/h2&gt; &lt;h2&gt;Brief Rant:&lt;/h2&gt; &lt;p&gt;Session evaluations are a great way to give direct feedback to the teams. Sure, you can send email to the speakers directly, but session evaluations get circulated fairly broadly internally and are often used by management for future product plans. They are a great way for you to influence the way we plan and prioritize the work that we need to do. &lt;/p&gt; &lt;p&gt;But there’s really not a lot in it for you, the attendee, outside of maybe some personal satisfaction that you helped to influence the products that you use (that’s if you knew how influential they can be in the first place). &lt;/p&gt; &lt;p&gt;Here’s my proposal:give direct incentives for folks to fill out their evaluations. It can be something as simple as 1 eval == 1 ticket for a drawing for prizes at the end of the conference. The more evals you submit, the greater your chances for winning prizes that are donated by the sponsors.&lt;/p&gt; &lt;p&gt;You could do things like what &lt;a href="http://www.stackoverflow.com"&gt;Stack Overflow&lt;/a&gt; does: give merit badges to folks that provide quality feedback. Written comments are always preferable to just clicking on radio buttons, so you could earn more merit points by doing just that. The whole system is online anyway, and it wouldn’t be that hard to implement.&lt;/p&gt; &lt;p&gt;You could even do something simple like write 5 evaluations to get your conference T-shirt. That should significantly improve the response rate, considering what the awesome power of T-shirts are in the geek world :)&lt;/p&gt; &lt;p&gt;I don’t believe that this would skew the feedback in a significant way. Hopefully we’ll hear more from the ‘silent majority’ this way. For example, I had 245 people in my IronRuby talk and as of this writing, I only have 15(!) evaluations.&lt;/p&gt; &lt;p&gt;If you read this far (and you attended my talk at PDC)&lt;strike&gt; please &lt;/strike&gt;&lt;strike&gt;click here to submit your evaluation&lt;/strike&gt;. Apparently that link is some kind of one-time link. You'll (unfortunately) have to &lt;a href="http://www.microsoftpdc.com/"&gt;go to the PDC site&lt;/a&gt; and navigate to my session (TL44).&lt;/p&gt; &lt;h2&gt;What I liked:&lt;/h2&gt; &lt;p&gt;I loved the Big Room. It was a place where folks could gather to meet and mingle. Since I want to &lt;em&gt;talk&lt;/em&gt; to customers at the show, I was happy to spend virtually all of my time in the Big Room talking to customers.&lt;/p&gt; &lt;p&gt;But there was one talk that I did attend: Miguel de Icaza’s awesome Mono and .NET talk. Horrible title – it really should be called “Awesome Mono hacks by Miguel and his band of merry hackers”.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/john_lam/2986883367/" title="Miguel and Lackey by John Lam, on Flickr"&gt;&lt;img alt="Miguel and Lackey" height="332" src="http://farm4.static.flickr.com/3172/2986883367_2025633d05.jpg" width="500"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Here’s the coolest thing that he showed: &lt;/p&gt; &lt;p&gt;Mono applications running on a non-jailbroken iPhone. Yes, you heard that right. For those of you who aren’t in the know about these things, the iPhone SDK prevents you from writing a JIT compiler through some kernel restrictions (you can’t mark a writable page as executable). It also prohibits you from writing an interpreter so that they can maintain their lock on application distribution via the App Store. So how did they do it? They made it possible to compile an entire Mono application into a single binary executable which gets signed via xCode and downloaded to the phone. This opens up some pretty awesome opportunities for using .NET as a platform for building apps that run on the iPhone.&lt;/p&gt; &lt;p&gt;He also showed a very cool C# REPL in action. There are some cool UI ideas from his REPL that are going to find a nice home in the IronRuby REPL :)&lt;/p&gt; &lt;p&gt;Lots of fun banter during the talk as well. &lt;a href="http://channel9.msdn.com/pdc2008/PC54/"&gt;Click here to watch it on TV&lt;/a&gt; (video not there right now at the time of this writing, but should be there soon).&lt;/p&gt; &lt;p&gt;I had a chance to meet a lot of folks, and once my talk was done, I decided to try and shoot photos of as many of my friends as I could. I’ll continue to upload them to my PDC 2008 &lt;a href="http://www.flickr.com/photos/john_lam/sets/72157608516797557/"&gt;flickr photoset&lt;/a&gt; as I process them on my laptop.&lt;/p&gt; &lt;p&gt;More later as I continue to collect my thoughts.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DjKSFCH_st4:rFsYp7Q-gbk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DjKSFCH_st4:rFsYp7Q-gbk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=DjKSFCH_st4:rFsYp7Q-gbk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/DjKSFCH_st4" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/10/pdc-2008-wrap-up.html</feedburner:origLink></entry>
    <entry>
        <title>The Fukuoka Ruby Delegation</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/6sO3L6-5Wdc/the-fukuoka-ruby-delegation.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/09/the-fukuoka-ruby-delegation.html" thr:count="5" thr:updated="2008-09-24T16:46:10-07:00" />
        <id>tag:typepad.com,2003:post-55822110</id>
        <published>2008-09-18T16:22:35-07:00</published>
        <updated>2008-09-18T16:22:35-07:00</updated>
        <summary type="html">I had the honor of meeting with a delegation from Fukuoka, Japan this morning at Microsoft's Executive Briefing Center. Part of the delegation represents the Ruby Business Commons, one of the largest Ruby SIGs in Japan (&amp;gt; 500 people as...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Me with the Delegation from Fukuoka, Japan at the EBC by John Lam, on Flickr" href="http://www.flickr.com/photos/john_lam/2868093247/"&gt;&lt;img height="333" alt="Me with the Delegation from Fukuoka, Japan at the EBC" src="http://farm4.static.flickr.com/3227/2868093247_6f05c03b82.jpg" width="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had the honor of meeting with a delegation from Fukuoka, Japan this morning at Microsoft's Executive Briefing Center. Part of the delegation represents the &lt;a href="http://rubybizcommons.blogspot.com/"&gt;Ruby Business Commons&lt;/a&gt;, one of the largest Ruby SIGs in Japan (&amp;gt; 500 people as of August 2008). They were here to talk to us about Ruby, its impact in Fukuoka, and how we can work together to help promote Ruby and IronRuby in the IT industry in Fukuoka. &lt;/p&gt;

&lt;p&gt;It was a challenging meeting since everything had to be done through a translator (who did a remarkable job). They had some great questions and suggestions for how we can work together to help promote Ruby in the Enterprise in Japan. I'm looking forward to seeing what we can do together to help spread the love.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=6sO3L6-5Wdc:T47Uo3uQHG0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=6sO3L6-5Wdc:T47Uo3uQHG0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=6sO3L6-5Wdc:T47Uo3uQHG0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/6sO3L6-5Wdc" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/09/the-fukuoka-ruby-delegation.html</feedburner:origLink></entry>
    <entry>
        <title>My Dev Kit</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/OVIkXvAdj5o/my-dev-kit.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/08/my-dev-kit.html" thr:count="13" thr:updated="2008-09-08T23:29:27-07:00" />
        <id>tag:typepad.com,2003:post-54957470</id>
        <published>2008-08-31T20:18:27-07:00</published>
        <updated>2008-08-31T20:18:27-07:00</updated>
        <summary type="html">Update: Added missing profile.ps1 file. The IronRuby team is getting ready for another major push for the PDC. To get ready for this (be careful what you wish for!) I'm upgrading my laptop's hard drive from the stock 160GB that...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/john_lam/2742655543/" title="Untitled by John Lam, on Flickr"&gt;&lt;img alt="" height="375" src="http://farm4.static.flickr.com/3112/2742655543_edc43c24d8.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Added missing profile.ps1 file.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://ironruby.net"&gt;IronRuby&lt;/a&gt; team is getting ready for another major push for the &lt;a href="http://www.microsoftpdc.com/"&gt;PDC&lt;/a&gt;. To get ready for this (be careful what you wish for!) I&amp;#39;m upgrading my laptop&amp;#39;s hard drive from the stock 160GB that it came with to a brand-spanking new &lt;a href="http://www.wdc.com/en/products/Products.asp?DriveID=477"&gt;Black Scorpio 320GB drive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This also means that I&amp;#39;m repaving my Boot Camp partition (I had previously allocated a measly 40GB on the old drive). While waiting for software to install, I figured that folks out there might be interested in what my setup is for a computer. So, here it is:&lt;/p&gt;
&lt;h3&gt;Operating System and general productivity tools:&lt;/h3&gt;
&lt;p&gt;I run Windows Vista SP1, 32-bit. I had tried to get Windows Server 2008 64 bit installed in the BootCamp partition, but it was a lost cause. The combination of my pre-Santa Rosa 17&amp;quot; MBP hardware and the general lack of 64 bit drivers made it virtually impossible to do a native OS install on the Boot Camp partition. I should be able to get 64 bit Windows Server 2008 installed in a Fusion virtual machine. I&amp;#39;ll report later how that goes.&lt;/p&gt;
&lt;p&gt;I do have a mildly pimped out Vista Sidebar. I&amp;#39;m a huge fan of &lt;a href="http://blog.orbmu2k.de/"&gt;Christian&amp;#39;s widgets&lt;/a&gt;. I use his CPU, Memory, and Network Traffic meters. I run &lt;a href="http://weather.weatherbug.com/"&gt;WeatherBug&lt;/a&gt;, and &lt;a href="http://sascha.katzner.de/driveactivity.html"&gt;Drive Activity&lt;/a&gt; as well. I don&amp;#39;t find it nearly as useful on my laptop as I do on my desktop where I have two 21&amp;quot; panels.&lt;/p&gt;
&lt;p&gt;I use Internet Explorer quite a bit, especially for browsing internal Microsoft sites. I leave it set as my default browser, since I&amp;#39;ve always loved its startup time vs. Firefox. I&amp;#39;m currently using IE 7, but I do have IE 8 Beta 2 installed on one of my desktops at the office.&lt;/p&gt;
&lt;p&gt;I use Firefox 3 quite a bit as well, especially since it has &lt;a href="http://vimperator.mozdev.org/"&gt;Vimperator&lt;/a&gt;, which adds VI key-bindings to Firefox. IE should seriously consider building a Firefox compatible plug-in API so that it can run Firefox plug-ins. &lt;/p&gt;
&lt;p&gt;I&amp;#39;m a big fan of &lt;a href="http://www.cooliris.com/"&gt;PicLens&lt;/a&gt;, and I have it installed on both IE and Firefox.&lt;/p&gt;
&lt;p&gt;As you might imagine, I spend a lot of time in Outlook 2007. While I have a hard time understanding why it needs to use 36 threads and open 3,319 OS handles to do its thing, it works quite well once I&amp;#39;ve pimped it out a bit with my &lt;a href="http://www.iunknown.com/2007/07/outlook-zen.html"&gt;three basic macros&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://get.live.com/writer/overview"&gt;Windows Live Writer&lt;/a&gt; to compose all of my blog posts. It works great with TypePad, who is my blogging hosting provider. Life is too short to run your own blog engine on some random hosting provider (I used to use Dreamhost back in the day). I want it to be somebody else&amp;#39;s problem to solve if my site goes down.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://jgpaiva.donationcoders.com/gridmove.html"&gt;GridMove&lt;/a&gt; as a tiling window manager using its 2-part grid vertical template. CTRL-ALT-1 moves the active window to the left *half* of the screen, and CTRL-ALT-2 moves the active window to the right *half* of the screen. On my desktop, CTRL-ALT-3 moves the active window to the left half of monitor 2 and CTRL-ALT-4 moves the active window to the right half of monitor 2. It&amp;#39;s easily the most useful utility that I&amp;#39;ve added in a long time.&lt;/p&gt;
&lt;h3&gt;Developer Tools&lt;/h3&gt;
&lt;p&gt;I use &lt;a href="http://msdn.microsoft.com/en-us/vsts2008/default.aspx"&gt;Visual Studio 2008 Team System&lt;/a&gt;, SP1. I configure it via a custom &lt;a href="http://www.iunknown.com/2007/11/visual-studio-2.html"&gt;vssettings&lt;/a&gt; file that I&amp;#39;ve carried around from machine to machine. &lt;/p&gt;
&lt;p&gt;I use multiple enlistments so that I can do work in parallel. Some of the devs on my team have 6 enlistments(!) Such is life when you have to battle the Troll to get your changes committed into the source repository.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://www.viemu.com/"&gt;ViEmu&lt;/a&gt; to enable VI key bindings in Visual Studio. Developer Division at Microsoft has a site license for it, but I&amp;#39;d definitely pay my own money for this.&lt;/p&gt;
&lt;p&gt;My primary text editor is &lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt;. I have a custom &lt;a href="http://www.iunknown.com/2006/09/vim-can-save-yo.html"&gt;.vimrc&lt;/a&gt; file that I&amp;#39;ve carried around from machine to machine. It&amp;#39;s not as pimped out as some other folks&amp;#39; vim setup, but it works for me. &lt;/p&gt;
&lt;p&gt;I use Windows PowerShell for my day-to-day work. I have a mildly pimped out PowerShell console that uses a directory that I cloned from &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&amp;#39;s&lt;/a&gt; machine. Like a lot of folks, I can&amp;#39;t work without a good set of aliases. Those can be found in my &lt;a href="http://www.iunknown.com/files/profile.ps1"&gt;profile.ps1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a Tools directory that I carry around from machine to machine. There&amp;#39;s lots of stuff in it, but here&amp;#39;s a general breakdown of the tools I use most often:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keith Brown&amp;#39;s &lt;a href="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/05/where-to-get-password-minder.aspx"&gt;Password Minder&lt;/a&gt; 
&lt;li&gt;Most of Mark Russinovich&amp;#39;s &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals Tools&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://sourceforge.net/projects/notepad2"&gt;Notepad 2&lt;/a&gt; - it&amp;#39;s awesome for viewing integrated diff files. 
&lt;li&gt;Lutz Roeder&amp;#39;s &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.scootersoftware.com/"&gt;Beyond Compare 2.0&lt;/a&gt; 
&lt;li&gt;&lt;a href="http://www.tgries.de/agrep/"&gt;AGREP&lt;/a&gt; 
&lt;li&gt;RemapKey from the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;displaylang=en"&gt;Windows Server Resource Kit&lt;/a&gt; (I remap Caps Lock to CTRL via this, reverse the Windows / ALT key mapping on the left side and re-assign my right Command key to DEL). &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;IronRuby uses &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; for our external-facing source control. Our SVN repo lives on RubyForge, and I use a combination of &lt;a href="http://tortoisesvn.tigris.org/"&gt;Tortoise SVN&lt;/a&gt; and the command-line tools to do my day-to-day work.&lt;/p&gt;
&lt;p&gt;IronRuby is using &lt;a href="http://git.or.cz/"&gt;GIT&lt;/a&gt; for a few of our sub-projects. Eventually we&amp;#39;ll be moving the primary source repository from SVN to GIT. Like most folks using GIT these days, we use the awesome &lt;a href="http://github.com/jflam"&gt;github&lt;/a&gt; service. I use the &lt;a href="http://code.google.com/p/msysgit/"&gt;MSysGit&lt;/a&gt; implementation on Windows with the option to run GIT from the Windows Command Prompt enabled.&lt;/p&gt;
&lt;h3&gt;The Cloud&lt;/h3&gt;
&lt;p&gt;More and more of my life is moving to the cloud. Here&amp;#39;s a list of the services that I use, and the places where I go.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://www.flickr.com/photos/john_lam"&gt;flickr&lt;/a&gt; for posting my photos. I&amp;#39;ve been a Pro member for quite some time. For $25 / year it&amp;#39;s a bargain. I don&amp;#39;t really use flickr as a social network like some other folks, but I&amp;#39;m quite happy with how well it works for me.&lt;/p&gt;
&lt;p&gt;I use &lt;a href="http://twitter.com/john_lam"&gt;twitter&lt;/a&gt; to post random bits of status. The 140 character limit encourages posting. I&amp;#39;m pretty much only using the blog to post longer pieces.&lt;/p&gt;
&lt;p&gt;I use Google Reader to consume my RSS feeds. I use multiple computers every day, and I like the fact that read / unread status is stored in a central location.&lt;/p&gt;
&lt;p&gt;I use Google Apps for my domain for my personal email. I used to run my own Exchange Server back in the day, and the day I switched was an awesome liberating moment for me. I no longer run any servers in my house.&lt;/p&gt;
&lt;p&gt;I have a &lt;a href="http://www.facebook.com/people/John_Lam/685772348"&gt;facebook&lt;/a&gt; account that I don&amp;#39;t use all that much. It&amp;#39;s pretty much at the bottom of my list of places to go. My status updates are via twitter, which makes it look like I&amp;#39;m on facebook a lot more than I actually am.&lt;/p&gt;
&lt;h3&gt;What about you?&lt;/h3&gt;
&lt;p&gt;As you might have figured out by now, I&amp;#39;m a big fan of minimalist UI, black backgrounds and keyboard-driven UI&amp;#39;s. What&amp;#39;s in your dev kit, and why do you love it?&lt;/p&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=OVIkXvAdj5o:rSbBfEjG__Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=OVIkXvAdj5o:rSbBfEjG__Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=OVIkXvAdj5o:rSbBfEjG__Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/OVIkXvAdj5o" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/08/my-dev-kit.html</feedburner:origLink></entry>
    <entry>
        <title>IronRuby at OSCON</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/AnhcGyk9F_g/ironruby-at-oscon.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/07/ironruby-at-oscon.html" thr:count="9" thr:updated="2008-08-10T15:29:44-07:00" />
        <id>tag:typepad.com,2003:post-53196628</id>
        <published>2008-07-24T16:11:16-07:00</published>
        <updated>2008-07-24T16:11:16-07:00</updated>
        <summary type="html">OSCON is a happy place for me. It’s my third OSCON, and I created good memories at each one. At my first OSCON, I was showing off RubyCLR to the world, and I met some folks from Microsoft who convinced...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Inspiration by John Lam, on Flickr" href="http://www.flickr.com/photos/john_lam/2678358233/"&gt;&lt;img height="375" alt="Inspiration" src="http://farm4.static.flickr.com/3162/2678358233_18121c85b1.jpg" width="500"&gt;&lt;/img&gt;&lt;/a&gt;   &lt;p&gt;&lt;a href="http://en.oreilly.com/oscon2008/public/content/home"&gt;OSCON&lt;/a&gt; is a happy place for me. It’s my third OSCON, and I created good memories at each one. At my first OSCON, I was showing off &lt;a href="http://rubyforge.org/projects/rubyclr/"&gt;RubyCLR&lt;/a&gt; to the world, and I met some folks from Microsoft who convinced me that it was the right time in my life to go ship something big. At my second OSCON, I was working for The Man, and we announced that were accepting contributions into &lt;a href="http://ironruby.net"&gt;IronRuby&lt;/a&gt; – a big change at the time.&lt;/p&gt;  &lt;p&gt;Today, we’re raising the bar even higher in IronRuby. There are three changes happening today:&lt;/p&gt;  &lt;p&gt;1. We’re shipping our &lt;a href="http://rubyforge.org/projects/ironruby"&gt;first binary release&lt;/a&gt;. In this package, we’re taking a “batteries included” approach and shipping the Ruby standard libraries in it. This takes us a big step closer towards “IronRuby runs real Ruby programs”.&lt;/p&gt;  &lt;p&gt;2. We’re announcing a new project: &lt;a href="http://github.com/ironruby/ironruby-contrib/tree"&gt;ironruby-contrib&lt;/a&gt;. It’s hosted at &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;, an awesome place to do collaborative development. The goal of ironruby-contrib is to provide a place where folks from the community can participate in projects that enhance IronRuby or its underlying platforms. The first project in ironruby-contrib is the Rails plugin that we demonstrated at &lt;a href="http://en.oreilly.com/rails2008/public/content/home"&gt;RailsConf&lt;/a&gt; this year. It makes it easier for Rails developers to add &lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt; to their Rails applications, and contains some of our ideas about migrating controller code to the client. &lt;a href="http://blog.jimmy.schementi.com/"&gt;Jimmy Schementi&lt;/a&gt; is the brains behind the project; see his &lt;a href="http://blog.jimmy.schementi.com/2008/07/browser-meet-ruby-on-rails.html"&gt;introductory blog post&lt;/a&gt; for more details.&lt;/p&gt;  &lt;p&gt;3. We’re announcing that we’ve submitted our first set of changes to the awesome &lt;a href="http://rubyspec.org"&gt;RubySpec&lt;/a&gt; project. We’ve been &lt;em&gt;talking&lt;/em&gt; about contributing to RubySpec for a long time now, but various things kept us from doing so. We’ve fixed those things now, which takes us a big step closer towards being an active participant in all things Open Source, and not just the things that we create.&lt;/p&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=AnhcGyk9F_g:aCYuIddjbXs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=AnhcGyk9F_g:aCYuIddjbXs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=AnhcGyk9F_g:aCYuIddjbXs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/AnhcGyk9F_g" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/07/ironruby-at-oscon.html</feedburner:origLink></entry>
    <entry>
        <title>IronRuby and ASP.NET MVC</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/fBwdt98LUeY/ironruby-and-aspnet-mvc.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html" thr:count="14" thr:updated="2009-04-19T23:26:48-07:00" />
        <id>tag:typepad.com,2003:post-51191520</id>
        <published>2008-06-11T07:41:16-07:00</published>
        <updated>2008-06-11T07:41:16-07:00</updated>
        <summary type="html">At Tech Ed last week, I showed a prototype of integration between IronRuby and ASP.NET MVC. I was really happy about how straightforward this turned out to be; it’s a strong testament to the robustness of our hosting API that...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;At Tech Ed last week, I showed a prototype of integration between IronRuby and &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt;. I was really happy about how straightforward this turned out to be; it’s a strong testament to the robustness of our &lt;a href="http://compilerlab.members.winisp.net/dlr-spec-hosting.pdf"&gt;hosting API&lt;/a&gt; that Levi on the ASP.NET MVC team was able to add IronRuby integration with only a simple example and the existing docs. &lt;/p&gt;&#xD;
&lt;p&gt;Let’s walk through a simple example. Keep in mind that this is a &lt;em&gt;prototype&lt;/em&gt;, and that many things will likely change before we’re done with it (particularly some of things we do today with globals and instance variables).&lt;/p&gt;&#xD;
&lt;p&gt;First, let’s look at how you can define some default routes via routes.rb:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32588833-pi"&gt;&lt;img alt="image" border="0" height="53" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664c7b8834-pi" width="509"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;Next, let’s look at the Controller code for the HomeController:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664c7c8834-pi"&gt;&lt;img alt="image" border="0" height="149" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664c808834-pi" width="366"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;The index action renders a view using a trivial Model which lives in models\HomeModel.rb:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32678833-pi"&gt;&lt;img alt="image" border="0" height="108" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32698833-pi" width="406"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;This model is used by the index action View, which lives in views\home\index.rhtml:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664c8a8834-pi"&gt;&lt;img alt="image" border="0" height="69" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664c8d8834-pi" width="448"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;Next, let's look at a slightly more sophisticated example using a Products Controller that renders a list of categories that looks like:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b326e8833-pi"&gt;&lt;img alt="clip_image002" border="0" height="491" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32718833-pi" width="500"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;It also renders a list products for a category when you click on it:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32748833-pi"&gt;&lt;img alt="clip_image002[5]" border="0" height="510" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32758833-pi" width="500"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;This is what the controller looks like:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32798833-pi"&gt;&lt;img alt="image" border="0" height="461" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b327b8833-pi" width="519"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;There are two actions in this controller: index and list. The index action returns a list of the categories, and the list action returns a list of products for that category.&lt;/p&gt;&#xD;
&lt;p&gt;Note that we're using instance variables on the controller to communicate with the view - this is likely going to change in the future, but it was something we hacked in to see what it would look like.&lt;/p&gt;&#xD;
&lt;p&gt;If we look at ProductsModel, you'll see that it contains a simple adapter around a Visual Studio generated wrapper for the Northwind database:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b327d8833-pi"&gt;&lt;img alt="image" border="0" height="90" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664ca48834-pi" width="381"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;We had to write our own adapter to work around a few bugs that we have in our .NET interop story as of right now, as well as adding a few model-esque methods. Here's what the NorthwindDatabase adapter looks like:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b32838833-pi"&gt;&lt;img alt="image" border="0" height="346" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553664cad8834-pi" width="544"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;Notice how we can use LINQ to SQL to write our queries to the database, and the funky C# 3.0 anonymous delegate syntax that we use for GetCategory().&lt;/p&gt;&#xD;
&lt;p&gt;The interesting code in the view looks like:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b328d8833-pi"&gt;&lt;img alt="image" border="0" height="150" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e5534b328f8833-pi" width="520"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;Today we're using the MVC template engine, but there isn't any reason why we couldn't enable erb / haml etc. in the future.&lt;/p&gt;&#xD;
&lt;h3&gt;How can I get it?&lt;/h3&gt;&#xD;
&lt;p&gt;You can &lt;a href="http://www.iunknown.com/files/IronRubyMvcWeb.zip"&gt;download&lt;/a&gt; a ZIP of the entire project from here if you want to take a closer look. Note that you can't run these bits yet, since I demo'd it using a private build of ASP.NET MVC from mid-way through their current milestone. That said, when Preview 4 of ASP.NET MVC ships you'll be able to run IronRuby on top of it (their current release is Preview 3).&lt;/p&gt;&#xD;
&lt;p&gt;Look for a blog post here, and from the folks like &lt;a href="http://haacked.com/Default.aspx"&gt;Phil&lt;/a&gt; over in MVC-land when we're ready to ship you some bits to build MVC apps using IronRuby.&lt;/p&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=fBwdt98LUeY:kgTOlWeZ_fk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=fBwdt98LUeY:kgTOlWeZ_fk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=fBwdt98LUeY:kgTOlWeZ_fk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/fBwdt98LUeY" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html</feedburner:origLink></entry>
    <entry>
        <title>IronRuby at Tech Ed 2008</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/nNKEgfG1aVs/ironruby-at-tech-ed-2008.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/06/ironruby-at-tech-ed-2008.html" thr:count="3" thr:updated="2008-08-28T10:40:23-07:00" />
        <id>tag:typepad.com,2003:post-51162996</id>
        <published>2008-06-10T16:48:56-07:00</published>
        <updated>2008-06-10T16:48:56-07:00</updated>
        <summary type="html">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...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650ed78834-pi"&gt;&lt;img height="63" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ce808833-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;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. &lt;/p&gt;

&lt;p&gt;A big thanks goes out to our booth staffers – Dave Fugate, Curt Hagenlocher, &lt;a href="http://jimmy.schementi.com/"&gt;Jimmy Schementi&lt;/a&gt;, 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.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://flickr.com/photos/jschementi/2568334217/sizes/m/"&gt;&lt;img height="375" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ce858833-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;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 :) &lt;/p&gt;

&lt;p&gt;By far the most frequently asked question was &lt;em&gt;why dynamic languages?&lt;/em&gt; 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 &lt;em&gt;&lt;a href="http://memeagora.blogspot.com/2006/12/polyglot-programming.html"&gt;polyglot programming&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;The Talk&lt;/h3&gt;

&lt;p&gt;The &lt;a href="http://www.ironruby.net"&gt;IronRuby&lt;/a&gt; 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 :).&lt;/p&gt;

&lt;p&gt;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:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650eea8834-pi"&gt;&lt;img height="926" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ce9b8833-pi" width="492" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And here is some .NET code that we tested using this framework:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650ef28834-pi"&gt;&lt;img height="634" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650ef48834-pi" width="494" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;It worked rather well, and I think I’ll continue to use it at talks where I need to introduce Ruby to the audience.&lt;/p&gt;

&lt;p&gt;Next, I talked about our &lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt; integration. I showed the excellent set of demos that Jimmy created for RailsConf last week, including his client-side Try IronRuby demo:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650efe8834-pi"&gt;&lt;img height="402" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ceac8833-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;and the lovely Silverlight watch demo:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ceb38833-pi"&gt;&lt;img height="514" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349ceb58833-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I also got a chance to sneak in some of the code I was hacking on in the evenings – an adapter that maps the &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/"&gt;HTML 5 Canvas API&lt;/a&gt; to Silverlight. I ran a few of the examples from the excellent &lt;a href="http://developer.mozilla.org/en/docs/Canvas_tutorial"&gt;Mozilla Canvas tutorials&lt;/a&gt; using a my adapter. I pasted some code (with minor rubification) from the Mozilla tutorial into the text box:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650f0e8834-pi"&gt;&lt;img height="450" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e553650f118834-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;and hit run - the colored boxes with the translucent circles appeared below: &lt;a href="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349cec08833-pi"&gt;&lt;img height="473" alt="image" src="http://iunknown.typepad.com/.a/6a00d834fc885d53ef00e55349cec48833-pi" width="500" border="0"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;There's no reason why we couldn't do this with managed JavaScript either using the cross-language interop features of the DLR. &lt;/p&gt;

&lt;p&gt;Oh yeah, there was one more thing that I demo'd - more on that tomorrow.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=nNKEgfG1aVs:jfOe9cavaAY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=nNKEgfG1aVs:jfOe9cavaAY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=nNKEgfG1aVs:jfOe9cavaAY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/nNKEgfG1aVs" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/06/ironruby-at-tech-ed-2008.html</feedburner:origLink></entry>
    <entry>
        <title>IronRuby and Rails</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LessIsBetter/~3/MK2o1Ec0Ppo/ironruby-and-rails.html" />
        <link rel="replies" type="text/html" href="http://www.iunknown.com/2008/05/ironruby-and-rails.html" thr:count="28" thr:updated="2008-07-11T12:19:00-07:00" />
        <id>tag:typepad.com,2003:post-50606442</id>
        <published>2008-05-30T06:00:01-07:00</published>
        <updated>2008-05-30T06:00:01-07:00</updated>
        <summary type="html">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...</summary>
        <author>
            <name>John Lam</name>
        </author>
        
        
<content type="html" xml:lang="en-US" xml:base="http://www.iunknown.com/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://flickr.com/photos/stuckincustoms/211239773/"&gt;&lt;img src="http://farm1.static.flickr.com/83/211239773_940d75fc4d.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.ironruby.net"&gt;IronRuby&lt;/a&gt; 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 &lt;a href="http://en.oreilly.com/rails2008/public/content/home"&gt;RailsConf&lt;/a&gt;. This is an important milestone for IronRuby; it’s our ‘ticket to entry’ to the world of alternative Ruby implementations.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 &lt;em&gt;real&lt;/em&gt; 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. &lt;/p&gt;

&lt;p&gt;But we have a lot more work to do.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;But there are other things to talk about as well.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Come join our project on &lt;a href="http://rubyforge.org/projects/ironruby"&gt;Rubyforge&lt;/a&gt; and help us show everyone how it’s done!&lt;/p&gt;
&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=MK2o1Ec0Ppo:vHRu6v6TzcM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=MK2o1Ec0Ppo:vHRu6v6TzcM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LessIsBetter?a=MK2o1Ec0Ppo:vHRu6v6TzcM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LessIsBetter?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LessIsBetter/~4/MK2o1Ec0Ppo" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.iunknown.com/2008/05/ironruby-and-rails.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
