 Good morning everybody, its one year on, and we are back in the same place outside the toilets. We have with us our first victim, I mean interviewee, for TechEd, and its Michael Foord.
Hello there.
 We just sort of bumped into you a little while ago, you started telling us a very interesting story about what you are involved with, so tell us a little bit about what you do and what you are doing there at TechEd.
I work for a firm in London called Resolver Systems, its a new startup, its about 2 years old, I have been working with them for around 18 months, and we are developing an application with Iron Python.
 Cool, so you are a Python developer by trade then?
I've been developing with Python for about 5 years, coming to work with Resolver was my first experience of working with .NET, and coming from a lanuguage that has a Linux background and generally the culture is to have a healty distain for all things Microsoft, it was a very pleasent surprise to start working the the .NET APIs and particulaly with Iron Python, its a very good implementation of Python, so using the .NET framework, the .NET classes in Python just feels very natural. It feels like you are developing in Python and you have got this massive set of new libraries to play with and to experiment with, its been fun.
 So what are the differences between Python and something like C#? Whats the sort of syntax of the language, how does it differ?
Well, the first thing is that it is a dynamic language rather than a static language. Dynamic language is one of those terms that everyone thinks they know what it means but is actually very difficult to pin down. Typically it meand that you dont declare your types. Rather than having interfaces you have protocols for doing things, for doing operator overloading, and you use duck typing rather than static typing but it is a stringly typed language. You cant do crazy things like add a number to a string or that sort of thing.
 So similar to Ruby, or different to Ruby?
Theres a great deal of competition between Ruby and Python, and my theory is thats because they are actually very similar. They are competing for the same sort of mindshare, the ame sort od developer mindspace. So in many ways its a very similar language to Ruby. The thing that everyone notices about Python is that rather than using curly braces you delimit block structure with indentation.
So if you have an IF statement or a method definition or a class definition then the code that follows will be indented to indicate that its inside that, and what that means is that you dont have the curly braces everywhere and that all your code is indented, as you probably would have indented anyway, but can visually see the structure of the code, but its something that people when they forst come to Python are like, Woooh! Where are all my curly braces and end statements?
 So does that mean that you have to be careful with your tabbing?
Well you can do as much as you like, Python doesnt dictate how much you indent, just that you do it in a consistant way.
 So is there a Python editor that we might see in Visual Studio?
Well, with the SDK, yes you get Iron Python support in Visual Studio with some intellisense, because Python is a dynamic language you dont always know the type of the objects until runtime, you could have a function that could return different types, but Visual Studio does a very good job of working out what objects you have got and where. I prefer to use a native Python IDE called WING, its a commercial IDE and thats got a very good intellisense as well.
 So what are you actually talking about here at Teched, whats your subject?
So I am doing a talk with [Mahesssh] and [Martin Mayleigh] I think [Mahesssh] is in charge of the DLR, the Dynamic Language Runtime team and Martin is one of the lead developers other than [Jim Hugen] who wrote Iron Python initially, who has been on the team the longest.
I am actually showing Resolver. Resolver is an application that is written in Iron Python, its what I have been developing at Resolver Systems, and its the largest Iron Python project thats out there, theres 30,000 lines of Iron Python code in the production code. We have got a full test framework, we use test driven development, and theres more than 100,000 lines of Iron Python code in the test framework.
 So what are the advantages as far as you are concerned, of developing in Python instead of something like c# or vb?
Obviously, I like the Python language, in terms of the project how they got involved, the decision to use Iron Python was made before I joined the company, but I was the first developer in the company with any Python experience, which was interesting!
Having an interpreted language embedded in Resolver is a core part of the way Resolver works and they were evaluating the different scripting language engines that were available for .NET and what they found was that Iron Python, which was version 0.7 at the time, was that the .NET integration was fantastic and that everything they needed to do from .NET, everything they needed to access, they could do very easily from Iron Python.
But the great thing about Dynamic Languages is that they are very easy to test. Because they are dynamically typed, because they use duck typing for interfaces and objects it makes it much easier to test and Resolver uses test driven development. But also I find that Python is an extremely expressive language and a natual language to write in, typically to can write the same things with a lot less code.
 Just for the purposes of listeners, what is the DLR, some people may not have heard of that?
Right. The DLR is the dynamic language runtime, which is something that has come out of Iron Python.
There is an Iron Python 1 implementation which is still the stable version and what the Microsoft team did once they got that working and got that basically complete, they said we have created this great language and we have lots of developers asking for dynamic languages, and included in Iron Python is a whole framework for hosting, for dynamic types, compiler support, what we can do is abstract out of that all of this parts and turn them into a framework, you have a framework for creating dynamic languages that run on .NET. Thats now available. Thats Iron Python 2.
Thats also happening with Ruby, there is a managed version of Ruby, called Iron Ruby, has also been implemented on top of it. The next version of Visual Basic, Visual Basic 10, is being implemented on top of the dynamic language runtime. There is a set of managed javascript, a managed set of jscript implementation that runs on it. One of the great things about the DLR is that will also run with the core CLR that comes with Silverlight 1.1, so all of these dynamic languages will be available for use with Silverlight.
 Thats fantastic. Whats the future as far a you are concerned regards to Iron Python, what are your plans?
I intend to stick with Resolver, I enjoy working with .NET, I think Resolver is a greate product, I believe in it. Its great to see Python extending to people who would not necessarily coming into contact with it.
 What does Resolver do as a product?
Right, ok, we havent mentioned that yet! Resolver was originally aimed at the financial serives market and it bridges a gap between a spreadsheet and an IDE and the formula and the data you enter into the grid actually get turned into Iron Python code and the spreadsheet is validated by executing that code and rather than having a seperate macro language with is one side to the spreadsheet which is the traditional spreadsheet model, you can actually insert your own code into the spreadsheet and becomes executed as part of the actual spreadsheet. You can use all the .NET libraries, you can use all the python libraries and this is because the guys that founded Resolver where sees that the traditional spreadsheet model, beyond a certain level of complexity, breaks down and becomes very difficult to work with.
 And you are writing a book?
Yes, thats right. Iron Python in action, with Manning publications. Actually there is early access available online so if you actually go to www.manning.com/Foord then the first chapter is online for free for everyone.
Thats the introduction to Iron Python with some simple examples to get you up and running. Then the first 6 chapters you can sign up for the early access program and gain access to that. I'm not sure if it will be completed by the end of the year but it wont be long beyond that before the complete book comes out.
 You have a blog?
I do, yes. I blog a lot about Python and a lot about Iron Python, www.voidspace.org.uk/python/weblog
 Okay, why the word Iron? I've always wondered this. Iron this or Iron that. Why Iron?
The best explanation I have heard comes from John Lamb, he says it is revisionist history, that have invented it backward to fit with iron, but I think that It Runs On dotNet is a good acronym.
 Michael, thanks for your time.
Your welcome. |