Ironing code, geek t-shirts and even presentations!


Slides and Code Samples from my Talk at LIDNUG - What?!? C# Could Do That???

On Thursday I had the honor to do a virtual talk at LIDNUG – the LinkedIn .NET User Group. A stage where lots of .NET celebs like Scott Gu, Jeffery Richter, Jeff Prosise and others have talked in the past.

I’d like to thank all the attendees and the LIDNUG crew who made this possible – Inbar, Peter and Brian – you guys rock!

About the talk – I focused on the dynamic capabilities of C#. Started with some black magic done using the dynamic keyword, then moved on to practice witchcraft with the combination of IronRuby and C#, and ended with the new and shiny .NET spell-book also known as project “Roslyn”.

The talk was recorded and it can be found on YouTube:

The code samples from the talk are also available – click here to download them [2.47Mb].

I had a blast, hope you did as a well.
All the best,

IronRuby and IronPython are Officially Handed Over to the Community, IronRuby Tools for VS is Out and More!

I’m so happy! finally some good news about IronRuby!

As you might know, IronRuby and IronPython got to a dead-end inside Microsoft a few months ago, a move that set a firestorm within the community which demanded Steve Balmer’s head on a stick (yea, we’re loco here in the DLR land!). Since then we lived in uncertainty regarding the future of these languages, walked among the crowd with tears in our eyes and prayed every night to the God of open-source to help us in these horrible times.

But yesterday evening everything changed! and changed for the better!

When Open-Source becomes Open-Source

I’m thrilled to say that Microsoft announced yesterday that they were handing IronRuby and IronPython over to the community! completely! And not just that, there will be new coordinators of these projects who will lead them to greatness. The coordinators for IronRuby will be Miguel de Icaza and Jimmy Schementi. For IronPython the new coordinators will be Miguel de Icaza, Michael Foord, Jeff Hardy, and Jimmy Schementi. These are incredibly talented people who are capable of taking these languages to great new heights and convert them from “very cool and nice-to-have” to “breath-taking OMFG give it to me give it to me now!!!”.

IronRuby 1.1.1

In addition to the great news from above, IronRuby 1.1.1 has been released yesterday with exciting new and anticipated features.
Pay attention that this version is tagged as alpha, which means that there are still some things that do not work so good or are missing.

Compatible with Ruby 1.9.2

IronRuby is closing the gap with MRI (the official Ruby implementation) and provides compatibility with Ruby 1.9.2. Here, watch:

IronRubu 1.1.1 using Ruby 1.9.2 Features

IronRuby Tools for Visual Studio

So the most voted feature in Microsoft Connect site and one of the main reasons that kept .NET developers away is now a thing of the past. IronRuby can now be developed from within your beloved Visual Studio IDE!
The new tools contain: Ruby colorizer and syntax checker, interactive loop window, directory based project, and templates for common Ruby applications (including Ruby on Rails 3, Sinatra, Gems and Silverlight based browser scripting app). Here, watch:

IronRuby New Project dialog inside Visual Studio

IronRuby Interactive inside Visual Studio

Ruby syntax highlighting and the Interactive console inside Visual Studio

Download NOW!!!!!!!!!!11

Quick! go, download, install and let the awesomeness take over:

Exciting times!

All the best,

kick it on Shout it

The Official Response from Microsoft about the IronRuby Situation

A few days ago someone asked on the IronRuby mailing list if there were news about the future of IronRuby. In return, Tomas Matousek, the last active IronRuby developer inside Microsoft, posted Microsoft’s official position (which apparently was published some time ago):

"At this time, we have no announcements to make beyond what we announced in July 2010 — that we were putting these [IronRuby and IronPython] under the Apache License v2.0. Clearly, there is customer and community interest in these languages. With many organizations running mixed IT environments, we continue to value community feedback on how we can support their interoperability needs, and we remain committed to supporting multiple tools and languages that provide developers with the most choice and flexibility.".

I’m not quite sure what that means but hey, at least we got something :)

Live well and prosper!

Related reading: Keep Your Chin Up Child and Wipe the Tears from your Eyes

My MSDN Magazine article is out – IronRuby on Windows Phone 7

The new MSDN Magazine issue, the one of September 2010, features my article about taking advantage of IronRuby on Windows Phone 7:
”IronRuby expert Shay Friedman goes mobile and shows you how to build a Windows Phone 7 app with Microsoft’s implementation of the popular Ruby dynamic language.”.

You can read it on the printed version or online -


Keep your Chin Up Child and Wipe the Tears from your Eyes

Last week was hysterical. It started with a flight to Nashville and a 3-day conference, Devlink, with 2 IronRuby sessions on the last day I had to do. On the second day of the conference I had a nice talk with Michael Moores, who turned out to be working with Micahel Letterle who is the first IronRuby MVP. That was the closest I’ve ever got to another IronRuby MVP :)

Anyway, the thing is that in the end of the second day just before I started the last dry-runs for my talks, I saw Jimmy Schementi’s blog post, “Start spreading the news”: the future of Jimmy and IronRuby, where he was announcing the he was leaving Microsoft, mainly because his boss had asked him “what else would you want to work on other than Ruby”. That leaved IronRuby with one developer (Tomas) and one partial-time tester that helps in other stuff too (Jim). They are both very talented, but still – 1.5 (or even less) people who work on a product kind of gives you the idea of where this is going to. IronPython is not in a better position either by the way.

The news hit me, I gotta say, by total surprise. I didn’t see it coming (at least not so soon) and my first reaction, like most reactions on the Twitter-sphere, was an “oh no, the evil monster has done it again” reaction. It’s a very natural psychological reaction to disappointment:

“The psychological results of disappointment vary greatly among individuals; while some recover quickly, others mire in frustration or blame or become depressed.”
-- "Disappointment", Wikipedia

And indeed, I was frustrated (not depressed, though; technology isn’t worth to be depressed over it) by the fact that something I believed in, with all my heart, was starting to die. And I didn’t believe in it because I thought it was cool (even though it is cool), but because I thought it added value. And that’s what it’s all about right there.

Getting back to the timeline, on the next day I had 2 sessions about IronRuby and I decided not to let the news affect them. However, I did do a little small talk with the audience before every session about it. The reactions varied from “I couldn’t care less” reactions to “I don’t know” to frustration. And watching other people being frustrated by that was a huge push for me to keep doing what I do. Moreover, the news spread so fast that as I was walking that day in the halls of Lipscomb University, I could hear people talking about the subject. I think I overheard about 5 different conversations about IronRuby that day.

Add to that the tons of reactions on Twitter, the conversation on the IronRuby mailing list and the various emails I’ve received since then (of people saying they were planning to use IronRuby and what do they do now) and you get one meaning - people care.

And solely because of that, I believe that IronRuby has a future. With or without Microsoft. Honestly, I’d hate to see it being released from Microsoft since this was a wonderful way to get it inside medium-large corporations that still require the Microsoft “stamp”. However, I won’t place my bet on that to continue.

To tell you the truth, I’ll understand Microsoft if they decide to stop funding the project. Think about it, Microsoft’s first and foremost goal is to make money. Just like your or my company. And they’re currently making money from various things:

  • Licenses for Windows, Office, Visual Studio, SQL Server and other products.
  • Professional support.
  • Hardware.
  • Training.
  • Certification exams.
  • Other stuff I don’t know about.

The biggest part of Microsoft’s revenues comes from selling licenses. As .NET developers, we are a part of Microsoft’s revenues system – we use Windows, we code in Visual Studio, we use Windows servers because that’s what we know and when we need a DB we directly go with SQL Server because it integrates perfectly with Visual Studio and other Microsoft products we have. By that I answer reactions I’ve seen like “if this is how Microsoft treats its open-source projects, we can’t trust it to continue with ASP.NET MVC too” – ASP.NET MVC will not die. Ever. Just because it follows all the preconditions. However, IronRuby does not – you do not use Visual Studio, you don’t have to use Windows, SQL Server is not so widely used with Ruby frameworks. And it gets even worst – you might be tempted to open the door and leave; to join your Ruby friends on the other side, the ones who write code in Mac and deploy their apps to, God helps us all, *nix machines.

In other words, CRAZY. The guy who approved that must have been drunk or something.

BUT, there was some rationality in the decision of writing a Ruby implementation on top of the .NET framework too – to give options, to make the framework better. In other words, to add value. And you know what, it might have had the power to even, God forbid, make these lunatic Ruby guys to show some interest in the .NET framework.

And you know what happens when money and making the product better are on the same scale? they burn the scale and the “making the product better” side up and run away with the money. That’s not Microsoft, that’s life.

So what does the future hold for us, IronRubyists? Well, I’ve got no idea. The current situation is kinda hazy – not here and not there. On the one hand, Microsoft is still controlling the code contributions, web site, github account and other related resources. On the other hand, they cut in human resources for the project.
My prediction is that Microsoft will give up IronRuby (and IronPython) in the next few months. As I said, if I was a director in Microsoft – I wouldn’t be able to justify its existence (but I would have so much more money too so I can’t really tell what I would have done :) ). And ones this happens, it will create a huge opportunity for the IronRuby community.

Since IronRuby is open source, the community will be able to take control and continue developing IronRuby. This will allow us to advance faster (hopefully) and more importantly, work on the features we want instead of the features we’re told we want. From the stuff I’ve been hearing and reading, the community of IronRuby is bigger than I though and people are willing to help. Along with the help of well-known icons like Rob Conery, Jimmy Schementi and others we can get to large audience and get even more people on board.

However, in order for this to happen I think that a few things should happen:

  • Microsoft must declare that the IronRuby project is not funded anymore and by that, it ceases to exist internally inside Microsoft.
  • Microsoft must pass the control over the entire code base, web site, github account, codeplex page, copyrights and all other related things to the community.
  • A single guy (or gal!) or a tiny team should become responsible for IronRuby. More people can be responsible for parts of the project but one or a very small amount of people should be responsible for all of it.
  • A roadmap should be written to allow people to start working.
  • Finding a contact point inside Microsoft is important too, IMHO. Someone who can help with DLR issues (the DLR is still being developed inside Microsoft) or other issues we might run into.

In conclusion, if you’re asking me, IronRuby is here to stay. It’s become stronger than Microsoft and the next months/years will be our time to prove it. Personally, I know I won’t stop working with it, talking about it and helping you guys with your questions about it. I’ll do it because I believe in it and papa always told me to do what I believe in.

“we are not alone, we feel an unseen love
we are sons and heirs of grace
we are children of a light that never dims
a love that never dies, keep your chin up child
and wipe the tears from your eyes”
-- from Music Box by Thrice


IronRuby and IronPython on the next Israeli .NET User Group Meeting

August is going to be a very busy month for me, speaking at DevLink, TechEd Japan and RubyKaigi. In addition, with the help of Dror Helper, we’re bringing dynamic languages to the local .NET crowd in Israel!


August 18th, 17:30-20:30.


The Israeli .NET User Group (IDNUG) August meeting,
Microsoft offices, Dekel room
HaPnina 2, floor 0
Raanana, ISRAEL


17:30 - 18:00   Assembly
18:00 - 19:15   “Introduction to IronRuby”
                           Shay Friedman
19:15 - 19:30   Break
19:30 – 20:30  “Introduction to IronPython”
                           Dror Helper

Abstract #1: Introduction to IronRuby
Ruby has been a home for some great innovative frameworks like Ruby on Rails, Cucumber and Rake. IronRuby has recently been released, unleashing the power of Ruby to the .NET world. In this session you will get familiar with the Ruby language and its amazing ecosystem and you will learn to take advantage of it in your everyday development tasks. Come and see how this great new addition to the .NET family makes your development process faster, clearer and happier.

Abstract #2: Introduction to IronPython
Do you want to learn about dynamic languages and their uses? IronPython is a good place to start. This dynamic .NET language can be used to develop just about anything – windows application, web services and Silverlight to name a few. This session will explain what Python is all about and how to write .NET applications using IronPython. The session is intended for .NET developers without any previous knowledge of Python that want to learn about the power of Dynamic Languages.


Register now at

See you all there!

Using the IronRuby Interactive Console

Hi all,

Eric Nelson, an Evangelist in Microsoft UK, has published a guest post of mine in his successful blog. The post explains how to take advantage of the IronRuby interactive console to explore .NET assemblies.

You can find the post here:


IronRuby is going to Japan!

If you don’t already know, Japan is where the Ruby language was created, back in 1995. This is the origin of this great language, this is where it all started!

So I’m very excited to announce that on this August, IronRuby is coming to Japan!

IronRuby in Japan

I’m going to visit Japan in August and talk about IronRuby! I will participate in two very different conferences – TechEd Japan and RubyKaigi.

TechEd Japan, the main Japanese .NET conference, will take place between August 25th to August 27th. I’m going to speak on day 2 of the conference (the 26th) about IronRuby for .NET developers.

TechEd Japan 2010 

RubyKaigi 2010 will take place between August 27th to August 29th. It is a world-class Ruby conference that hosts Ruby great minds from all over the world like Yukihiro Matsumoto (the creator of Ruby), Yehuda Katz, Jeremy Kemper and others. I’m going to give there a talk on the 29th, named “IronRuby – What’s in it for Rubyists?”.

RubyKaigi 2010

I’m so excited to visit Japan and present in front of both .NET and Ruby developers. Maybe this will be the bridge between the large Japanese Ruby community and the large Japanese .NET community!

Shay Friedman – bridging between developers since 1983!

See you there!

Working with .NET Lowercase Namespaces and Classes in IronRuby

[if you have no idea what IronRuby is, read this first]

.NET has some common naming conventions that everybody uses. One of them is that namespace and class names are PascalCased. However, like in real life – rules are meant to be broken. In C#/VB.NET there is no real constraint on this convention – you can name your namespaces/classes using all lowercase or in any other way you want (and I ask, why?). Therefore, the next C# code is totally acceptable:

namespace demo
  class library
    public void Print()
      Console.WriteLine("Yay! I've broken the rulez! I'm a smartass!");

The Problem

Unlike C#/VB.NET, in Ruby you must start namespace (which is called a module) and class names with a capital letter. And there you have it – clash of the titans.

Clash of the Titans  
Now, normally you wouldn’t care about that but if you’re using IronRuby, you’re right in the middle here. On the one hand, you’d expect IronRuby to allow you to use .NET classes with their original names but on the other hand, the Ruby language just doesn’t allow that.

The Solution

To solve this issue we must use some kind of a workaround. Luckily, IronRuby provide a pretty simple workaround. For example, consider the next C# classes (let’s assume this code is built into an assembly named demo.dll):

namespace demo
  public class library
    public void Print()

  public class LibraryWithGoodName
    public void Print()

This is how you use it from IronRuby:

require "demo.dll"

# Get the namespace object
Demo = Object.const_get("demo")

# Get the lowercase library class object
Library = Demo.const_get("library")

# Use the library class:
lib =

# Another alternative to create a library class instance in one line:
lib = Object.const_get("demo").const_get("library").new

# Use the LibraryWithGoodName class:
lib1 =

All the best,