February 12th 2009 | Ben Yoder
Writing Silverlight Apps with IronRuby and IronPython
As someone who started programming with Java and then moved over to C# and .NET, I have had very few opportunities to program in different languages. This isn’t a bad thing, but there are so many interesting languages out there and few opportunities to apply them.
Fortunately some languages are getting ported over to run on the CLR. This isn’t new: IronPython has been around for a while; as has IronRuby; and the Ada port for .NET (A#) has been available for even longer. There are some new ones on the way as well, such as IronScheme—a Scheme/Lisp port.
But now, with new Open Source Silverlight Dynamic Languages SDK and the Dynamic Language Runtime (DLR) there is an emerging framework for writing Silverlight apps with Dynamic languages such as IronRuby and IronPython.
After visiting the Microsoft Dynamic Language site I was able to get going fairly quickly. Initially I made the mistake of downloading an older version of the Silverlight Dynamic Languages SDK which was compiled with an older version of Silverlight. This caused some issues when trying to run the applications, which I resolved by recompiling the SDK source with references to the current Silverlight dlls. This is a pain though, and can be avoided by making sure you download the latest version of the SDK which is currently in version 0.4.0. The SDK download page also includes a reference to the version of Silverlight it targets, so double-check the version of Silverlight you are running against the version the SDK uses.
I’m new to these languages, but there is an abundance of information and tools to help you get started. So check out Dynamic Languages SDK 0.4.0, and download Sliverlight if it’s not already installed on your machine.
Those are the only two installs you need to get started.
I used trusty Notepad++ for my text editor and used the included Chiron program to run my apps. This works well, but there are some better options if your looking to integrate with the more familiar environment of Visual Studio. Laurence Moroney at MSDN Blogs explains how to integrate Chiron into a Visual Studio DLR web app. This allows you to code in VS, and start your website using Chiron.
There is also the IronPython Studio which is free and based on the VS 2008 Shell runtime. Even if you don’t have a licensed installation of Visual Studio you can still develop IronPython code in a Visual Studio style environment for free.
While I doubt I’ll be able to integrate any IronPython into our Secret Server Password Management Software anytime soon, it’s great utilizing my Microsoft development tools and knowledge with multiple new languages.
Ben Yoder is a senior .NET developer at Thycotic Software Ltd.
I am always amused by the complete lack of customer savviness that open source projects sometimes demonstrate. Of course I am not being fair at all and my observations are in no way scientific and I am sure you can find ten more examples of commercial companies doing the same. With that in mind, here are my two examples:
A great wiki platform, my favorite to date – recommended to me by two techies at a Virginia networking event and I haven’t looked back since; asides from an annoying concurrency page saving bug due to timestamps or something that no-one on their support forums seems to care about but that is a story for a different day.So what is the indulgence?Their website only distributes the DokuWiki download as a .tgz file. I have had my run in the UNIX world for long enough to know that this is a standard file format. HoweverDokuWiki supports Windows and yet this file extension is not natively supported by Windows XP or Vista or Windows Server. What commercial company with half a brain would release their product in a format that their customers could not consume without a third party tool to unpackage it? Wouldn’t a simple zip file make infinitely more sense or go really crazy and offer downloads in .tgz and .zip? 🙂
They make a wonderful web stats package written in Perl and we use it to crunch stats on our website visitors etc. But if you visit their homepage with Internet Explorer 7 (or probably any Internet Explorer browser) then you will be redirected to a page that recommends you install Firefox. What commercial company with half a brain would try to change their users software for no reason directly required by their product?
It seems that the only reason these projectscan get away with these indulgences is because their software is free and worthwhile. Is this the tradeoff users should come to expect with Open Source? How much more successful would these projects be if they thought more carefully about their users?
Please don’t misinterpret my post as anti-Open Source; that is not my intention at all. I am simply questioning the liberties that are taken by people on these projects and wonder if it is best for the software community since a commercial company would be unwise to follow any of these approaches.
Got any thoughts on these or maybe some other amusing indulgences to share?
Jonathan Cogley is the CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Our product, Secret Server is a web-based password manager system for teams to secure their passwords. Where do you keep your passwords or do you still use the samepassword everywhere?
Unfortunately my co-presenters were not able to make the WinProTeam presentation due to unforeseen circumstances so I went it alone. This meant that the topics had to change a little but the audience seemed agreeable. The schedule for the evening changed to:
This is a favorite topic of mine since many people still seem to miss the boat with ADO.NET and use the boilerplate SQLConnection/SQLDataAdapter code everywhere. This presentation explores IDbConnection, IDbCommand, IDataReader and the trusty DataSet/DataTable. Using these interfaces makes your code much easier to support multiple database platforms (something that can be critical for an ISV / product vendor). The presentation also encourages adoption of a centralized Data Access Layer (DAL). We have a free, open source DAL called Thycotic.Data which is hosted on SourceForge.
This session was meant to be John Morales giving us the gory details on NHibernate – something that John is very excited about. Unfortunately my experience with NHibernate is limited to some simple samples that I toyed with. We have used Gentle.NET extensively and have figured out most of the gotchas. The two seem very similar to me so the audience was happy to hear about Gentle.NET instead. We walked through the concepts of mapping business objects to tables using attributes and then various calls through broker and ObjectFactory to retrieve and persist data. For the most part, we have been happy with Gentle.NET – we have written our own little helper class called GentleHelper which makes more complex queries a little easier. One of the downsides we have found with Gentle.NET is the cryptic error messages and the poor error handling at times (for example, retrieving a record by id when it doesn’t exist throws an exception).
Intro to LINQ
Ryan Olshan was meant to give this session and provided the slides in his absence. I was drawing on my memories of various sessions at the last PDC which discussed LINQ and DLINQ. Altogether very cool stuff which is set to change the way we think about accessing data in C#. After walking through Gentle.NET, LINQ definitely seems like a next generation technology – taking it to the next level. Unfortunately I didn’t have any demo code since Ryan warned that it can make Visual Studio unstable to install the 3.0 bits – something I didn’t want to learn the hard way.
This session was a big departure from the Data Access theme but it has been a very popular topic with many groups. It is all hands on with no slides – just coding. I use a version of Martin Fowler’s refactoring example which was ported to C# by our very own Bryant Smith. It involves refactoring a Statement method on a Customer class to add HTML capability – the idea is to refactor the code to gain:
- ensure it communicates its purpose
- make it more maintainable so that it can be extended for the new HTML capability
Jonathan Cogley isthe CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC. Thycotic Secret Server is a secure web-based solution to both “Where is the password for this router?” and “Who has the password for our domain hosting?”. Secret Server isthe leader in secret management and sharing within companies and teams.
Can youfeel the flamethrowers warming up?
🙂 Larry O’Brien pointed me to this great SDTimes article “The Changing Face of Open Source”. In the article, Andrew Binstock discusses the
challenges in coming up to speed with a complex codebase and contributing real
value as a ‘volunteer’. He discusses how large projects tend to be
primarily driven by commercial developers andconcludes thatthe
economics ultimately comes back to the same model as traditional closed source
We have released various of
our internal APIs as open source in the last couple of a years and have made
exactly $0 in direct revenue. There have certainly been
benefitsthrough companyrecognition for some of these projects
(especially Thycotic.RemoteScripting which has
savedseveral developerbutts when porting a classic ASP application
to ASP.NET -we have also received kind words of appreciation for Thycotic.Data at user group meetings in the past
and from random individuals on the internet). Sure you say … but what
was your business model? How did you expect to make money?
It all started withthe buzz of companies such
as Netscape open sourcing their product and how it would take over the world
(FireFox anyone?).We had just finishedreading the same bookthat convincedNetscape toopen
sourceMozillaand were dreaming
ofagrowing customer base andhow a new revenue stream
couldbe added from support contracts. We learned over time that
people don’tpay for something when they can have it for free – and
unfortunately developers only want support as long as it is free. The
quickest way to reduce our support calls to zero is to point people towards our
support contract order form. 🙂
Looking back, was it worth open sourcing
these APIs? The community recognition waswonderful but itis
hard to assign adollar value. One thing that was a great success was
the number of bug reports and bug fixes we received. Developers were using
the APIs and did much of our testing for us on various platforms and
found/solved many problems. This seems to fall in line with Andrew’s
findings. However the support model did not work as a revenue stream.
Will we release future APIs as open
source? Yes, if we can adapt the model to generate revenue or if bug fixes
and greater stability are sufficient benefits. Time will
Jonathan Cogley isthe CEO and founder of
thycotic, a .NET consulting company and ISV in Washington DC. thycotic has
just released Thycotic Secret Server which is a secure web-based solution to both “Where is my Hotmail
password?” and “Who has the password for our domain name?”. Secret Server
isthe leader in secret management and sharing within companies and